Search in sources :

Example 31 with Arg

use of com.rockwellcollins.atc.agree.agree.Arg in project AGREE by loonwerks.

the class AgreeValidator method checkNodeEq.

@Check(CheckType.FAST)
public void checkNodeEq(NodeEq nodeEq) {
    EObject container = nodeEq.eContainer();
    NodeBodyExpr containingNodeBodyExpr;
    NodeDef containingNodeDef;
    if (container instanceof NodeBodyExpr) {
        containingNodeBodyExpr = (NodeBodyExpr) container;
    } else {
        error(nodeEq, "Node equation must be contained in a node body.");
        return;
    }
    if (container != null) {
        container = container.eContainer();
    }
    if (container instanceof NodeDef) {
        containingNodeDef = (NodeDef) container;
    } else {
        error(nodeEq, "Node equation must be contained in a node definition.");
        return;
    }
    List<Arg> locals = containingNodeBodyExpr.getLocs();
    List<Arg> returns = containingNodeDef.getRets();
    int lhsIndex = 0;
    for (Arg lhs : nodeEq.getLhs()) {
        if (!locals.contains(lhs) && !returns.contains(lhs)) {
            error("LHS '" + lhs.getName() + "' of node equation must be a node return variable or local variable.", nodeEq, AgreePackage.Literals.NODE_EQ__LHS, lhsIndex);
        }
        ++lhsIndex;
    }
    checkMultiAssignEq(nodeEq, nodeEq.getLhs(), nodeEq.getExpr());
}
Also used : NodeBodyExpr(com.rockwellcollins.atc.agree.agree.NodeBodyExpr) NodeDef(com.rockwellcollins.atc.agree.agree.NodeDef) EObject(org.eclipse.emf.ecore.EObject) Arg(com.rockwellcollins.atc.agree.agree.Arg) Check(org.eclipse.xtext.validation.Check)

Aggregations

Arg (com.rockwellcollins.atc.agree.agree.Arg)31 ArrayList (java.util.ArrayList)11 NamedElmExpr (com.rockwellcollins.atc.agree.agree.NamedElmExpr)10 BoolLitExpr (com.rockwellcollins.atc.agree.agree.BoolLitExpr)7 DoubleDotRef (com.rockwellcollins.atc.agree.agree.DoubleDotRef)7 NodeBodyExpr (com.rockwellcollins.atc.agree.agree.NodeBodyExpr)7 NodeDef (com.rockwellcollins.atc.agree.agree.NodeDef)7 RealLitExpr (com.rockwellcollins.atc.agree.agree.RealLitExpr)7 NamedElement (org.osate.aadl2.NamedElement)7 IntLitExpr (com.rockwellcollins.atc.agree.agree.IntLitExpr)6 PrimType (com.rockwellcollins.atc.agree.agree.PrimType)6 CallExpr (com.rockwellcollins.atc.agree.agree.CallExpr)5 SelectionExpr (com.rockwellcollins.atc.agree.agree.SelectionExpr)5 Check (org.eclipse.xtext.validation.Check)5 EnumLitExpr (com.rockwellcollins.atc.agree.agree.EnumLitExpr)4 EqStatement (com.rockwellcollins.atc.agree.agree.EqStatement)4 EventExpr (com.rockwellcollins.atc.agree.agree.EventExpr)4 Expr (com.rockwellcollins.atc.agree.agree.Expr)4 InputStatement (com.rockwellcollins.atc.agree.agree.InputStatement)4 PreExpr (com.rockwellcollins.atc.agree.agree.PreExpr)4