use of org.eclipse.titan.designer.AST.TTCN3.statements.While_Statement in project titan.EclipsePlug-ins by eclipse.
the class SizeCheckInLoop method process.
@Override
protected void process(final IVisitableNode node, final Problems problems) {
if (node instanceof For_Statement) {
final For_Statement s = (For_Statement) node;
s.getFinalExpression().accept(new LoopVisitor(problems));
} else if (node instanceof While_Statement) {
final While_Statement s = (While_Statement) node;
s.getExpression().accept(new LoopVisitor(problems));
} else if (node instanceof DoWhile_Statement) {
final DoWhile_Statement s = (DoWhile_Statement) node;
s.getExpression().accept(new LoopVisitor(problems));
} else {
return;
}
}
use of org.eclipse.titan.designer.AST.TTCN3.statements.While_Statement in project titan.EclipsePlug-ins by eclipse.
the class Environment method isLoopScope.
/**
* Returns true if the given BlockNode is a statement block of a loop statement (for, while, alt)
*/
private static boolean isLoopScope(final BlockNode scope) {
final StatementNode parentSN = scope.getParent();
if (parentSN == null) {
return false;
}
final IVisitableNode scopeSt = parentSN.getAstNode();
return (scopeSt instanceof For_Statement || scopeSt instanceof While_Statement || scopeSt instanceof Alt_Statement);
}
use of org.eclipse.titan.designer.AST.TTCN3.statements.While_Statement in project titan.EclipsePlug-ins by eclipse.
the class ReturnVisitor method visit.
@Override
public int visit(final IVisitableNode node) {
// certain YES
if (node instanceof Return_Statement) {
certainty = ReturnCertainty.YES;
return V_ABORT;
}
//
if (node instanceof StatementBlock || node instanceof StatementList) {
final StatementBlockVisitor blockVis = new StatementBlockVisitor();
node.accept(blockVis);
certainty = blockVis.getCertainty();
return V_SKIP;
}
// custom statements
if (node instanceof While_Statement || node instanceof DoWhile_Statement || node instanceof For_Statement) {
final BranchMerger branchMerger = new BranchMerger();
node.accept(branchMerger);
// conditional blocks: maximum MAYBE
certainty = branchMerger.getCertainty().or(ReturnCertainty.NO);
return V_SKIP;
}
if (node instanceof If_Statement) {
final If_Statement ifs = (If_Statement) node;
final BranchMerger branchMerger = new BranchMerger();
node.accept(branchMerger);
if (ifs.getStatementBlock() != null) {
// must enter one block: maximum YES
certainty = branchMerger.getCertainty();
} else {
// conditional blocks: maximum MAYBE
certainty = branchMerger.getCertainty().or(ReturnCertainty.NO);
}
return V_SKIP;
}
if (node instanceof Alt_Statement) {
final AltGuards ags = ((Alt_Statement) node).getAltGuards();
final BranchMerger branchMerger = new BranchMerger();
ags.accept(branchMerger);
if (ags.hasElse()) {
// must enter one block: maximum YES
certainty = branchMerger.getCertainty();
} else {
// conditional blocks: maximum MAYBE
certainty = branchMerger.getCertainty().or(ReturnCertainty.NO);
}
return V_SKIP;
}
if (node instanceof Interleave_Statement) {
final BranchMerger branchMerger = new BranchMerger();
node.accept(branchMerger);
// conditional block: maximum MAYBE
certainty = branchMerger.getCertainty().or(ReturnCertainty.NO);
return V_SKIP;
}
if (node instanceof StatementBlock_Statement) {
final BranchMerger branchMerger = new BranchMerger();
node.accept(branchMerger);
// must enter block: maximum YES
certainty = branchMerger.getCertainty();
return V_SKIP;
}
if (node instanceof SelectCase_Statement) {
final BranchMerger branchMerger = new BranchMerger();
node.accept(branchMerger);
// must enter one block: maximum YES
certainty = branchMerger.getCertainty();
return V_SKIP;
}
return V_ABORT;
}
Aggregations