Search in sources :

Example 1 with If_Statement

use of org.eclipse.titan.designer.AST.TTCN3.statements.If_Statement in project titan.EclipsePlug-ins by eclipse.

the class IsBoundWithoutElse method process.

@Override
protected void process(final IVisitableNode node, final Problems problems) {
    if (!(node instanceof If_Statement)) {
        return;
    }
    final If_Statement ifs = (If_Statement) node;
    final StatementBlock elseClause = ifs.getStatementBlock();
    if (elseClause != null) {
        return;
    }
    // there is no else clause present
    final If_Clauses ifcs = ifs.getIfClauses();
    if (ifcs == null) {
        return;
    }
    final List<If_Clause> ifcL = ifcs.getClauses();
    if (ifcL == null || ifcL.isEmpty()) {
        return;
    }
    for (final If_Clause ifc : ifcL) {
        final IfConditionVisitor visitor = new IfConditionVisitor(problems);
        ifc.accept(visitor);
    }
}
Also used : If_Statement(org.eclipse.titan.designer.AST.TTCN3.statements.If_Statement) If_Clauses(org.eclipse.titan.designer.AST.TTCN3.statements.If_Clauses) StatementBlock(org.eclipse.titan.designer.AST.TTCN3.statements.StatementBlock) If_Clause(org.eclipse.titan.designer.AST.TTCN3.statements.If_Clause)

Example 2 with If_Statement

use of org.eclipse.titan.designer.AST.TTCN3.statements.If_Statement in project titan.EclipsePlug-ins by eclipse.

the class LogicInversion method process.

@Override
public void process(final IVisitableNode node, final Problems problems) {
    if (node instanceof If_Statement) {
        final If_Statement s = (If_Statement) node;
        if (s.getStatementBlock() == null) {
            return;
        }
        final If_Clauses ifClauses = s.getIfClauses();
        if (ifClauses == null) {
            return;
        }
        final List<If_Clause> clauses = ifClauses.getClauses();
        if (clauses.size() != 1) {
            return;
        }
        final Value expression = clauses.get(0).getExpression();
        if (expression != null && Value_type.EXPRESSION_VALUE.equals(expression.getValuetype()) && Operation_type.NOT_OPERATION.equals(((Expression_Value) expression).getOperationType())) {
            problems.report(s.getLocation(), ERROR_MESSAGE);
        }
    }
}
Also used : Value(org.eclipse.titan.designer.AST.Value) Expression_Value(org.eclipse.titan.designer.AST.TTCN3.values.Expression_Value) Expression_Value(org.eclipse.titan.designer.AST.TTCN3.values.Expression_Value) If_Statement(org.eclipse.titan.designer.AST.TTCN3.statements.If_Statement) If_Clauses(org.eclipse.titan.designer.AST.TTCN3.statements.If_Clauses) If_Clause(org.eclipse.titan.designer.AST.TTCN3.statements.If_Clause)

Example 3 with If_Statement

use of org.eclipse.titan.designer.AST.TTCN3.statements.If_Statement in project titan.EclipsePlug-ins by eclipse.

the class IfContext method process_internal.

protected void process_internal() {
    final If_Statement st = getNode();
    final If_Clauses ics = st.getIfClauses();
    final Context child = getChild();
    if (child != null && child.getNode().equals(ics)) {
        // the log statement is in one of the conditional clauses
        final List<If_Clause> icl = ics.getClauses();
        final Context clauseContext = child.getChild();
        if (clauseContext != null && icl.contains(clauseContext.getNode())) {
            final IVisitableNode ic = clauseContext.getNode();
            final ClauseVisitor vis = new ClauseVisitor();
            ic.accept(vis);
            final List<Reference> refs = vis.getResult();
            for (Reference ref : refs) {
                varNamesInConditions.add(ref.getDisplayName());
            }
        }
    } else {
        // the log statement is in the else block
        final List<Reference> refs = extractAllIdsFromClauses(ics);
        for (Reference ref : refs) {
            varNamesInConditions.add(ref.getDisplayName());
        }
    }
}
Also used : Reference(org.eclipse.titan.designer.AST.Reference) If_Statement(org.eclipse.titan.designer.AST.TTCN3.statements.If_Statement) If_Clauses(org.eclipse.titan.designer.AST.TTCN3.statements.If_Clauses) If_Clause(org.eclipse.titan.designer.AST.TTCN3.statements.If_Clause) IVisitableNode(org.eclipse.titan.designer.AST.IVisitableNode)

Example 4 with If_Statement

use of org.eclipse.titan.designer.AST.TTCN3.statements.If_Statement in project titan.EclipsePlug-ins by eclipse.

the class IfInsteadAltguard method process.

@Override
public void process(final IVisitableNode node, final Problems problems) {
    if (node instanceof AltGuard) {
        final AltGuard ag = (AltGuard) node;
        final StatementBlock statements = ag.getStatementBlock();
        if (statements != null && !statements.isEmpty()) {
            final Statement firstStatement = statements.getStatementByIndex(0);
            if (firstStatement instanceof If_Statement) {
                final Value condition = ((If_Statement) firstStatement).getIfClauses().getClauses().get(0).getExpression();
                Location reportAt;
                if (condition != null) {
                    reportAt = condition.getLocation();
                } else {
                    reportAt = firstStatement.getLocation();
                }
                problems.report(reportAt, MIGHT_ALTGUARD);
            }
        }
    }
}
Also used : AltGuard(org.eclipse.titan.designer.AST.TTCN3.statements.AltGuard) Statement(org.eclipse.titan.designer.AST.TTCN3.statements.Statement) If_Statement(org.eclipse.titan.designer.AST.TTCN3.statements.If_Statement) Value(org.eclipse.titan.designer.AST.Value) If_Statement(org.eclipse.titan.designer.AST.TTCN3.statements.If_Statement) StatementBlock(org.eclipse.titan.designer.AST.TTCN3.statements.StatementBlock) Location(org.eclipse.titan.designer.AST.Location)

Example 5 with If_Statement

use of org.eclipse.titan.designer.AST.TTCN3.statements.If_Statement in project titan.EclipsePlug-ins by eclipse.

the class ContainsRef method visit.

@Override
public int visit(final IVisitableNode node) {
    if (node instanceof If_Statement) {
        final List<If_Clause> ifs = ((If_Statement) node).getIfClauses().getClauses();
        for (final If_Clause clause : ifs) {
            final Value cond = clause.getExpression();
            if (cond != null) {
                final RefUsedInMatching mv = new RefUsedInMatching(redirectValue);
                cond.accept(mv);
                if (mv.getUsed()) {
                    smells = true;
                    suspicious = clause;
                }
            }
        }
        return V_SKIP;
    }
    return V_CONTINUE;
}
Also used : Value(org.eclipse.titan.designer.AST.Value) If_Statement(org.eclipse.titan.designer.AST.TTCN3.statements.If_Statement) If_Clause(org.eclipse.titan.designer.AST.TTCN3.statements.If_Clause)

Aggregations

If_Statement (org.eclipse.titan.designer.AST.TTCN3.statements.If_Statement)7 If_Clause (org.eclipse.titan.designer.AST.TTCN3.statements.If_Clause)4 If_Clauses (org.eclipse.titan.designer.AST.TTCN3.statements.If_Clauses)3 StatementBlock (org.eclipse.titan.designer.AST.TTCN3.statements.StatementBlock)3 Value (org.eclipse.titan.designer.AST.Value)3 Alt_Statement (org.eclipse.titan.designer.AST.TTCN3.statements.Alt_Statement)2 DoWhile_Statement (org.eclipse.titan.designer.AST.TTCN3.statements.DoWhile_Statement)2 StatementBlock_Statement (org.eclipse.titan.designer.AST.TTCN3.statements.StatementBlock_Statement)2 IVisitableNode (org.eclipse.titan.designer.AST.IVisitableNode)1 Location (org.eclipse.titan.designer.AST.Location)1 Reference (org.eclipse.titan.designer.AST.Reference)1 AltGuard (org.eclipse.titan.designer.AST.TTCN3.statements.AltGuard)1 AltGuards (org.eclipse.titan.designer.AST.TTCN3.statements.AltGuards)1 Assignment_Statement (org.eclipse.titan.designer.AST.TTCN3.statements.Assignment_Statement)1 Connect_Statement (org.eclipse.titan.designer.AST.TTCN3.statements.Connect_Statement)1 Definition_Statement (org.eclipse.titan.designer.AST.TTCN3.statements.Definition_Statement)1 Disconnect_Statement (org.eclipse.titan.designer.AST.TTCN3.statements.Disconnect_Statement)1 Done_Statement (org.eclipse.titan.designer.AST.TTCN3.statements.Done_Statement)1 For_Statement (org.eclipse.titan.designer.AST.TTCN3.statements.For_Statement)1 Interleave_Statement (org.eclipse.titan.designer.AST.TTCN3.statements.Interleave_Statement)1