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());
}
Aggregations