Search in sources :

Example 1 with CtBreak

use of spoon.reflect.code.CtBreak in project spoon by INRIA.

the class JDTTreeBuilder method visit.

@Override
public boolean visit(BreakStatement breakStatement, BlockScope scope) {
    CtBreak b = factory.Core().createBreak();
    if (breakStatement.label != null) {
        b.setTargetLabel(new String(breakStatement.label));
    }
    context.enter(b, breakStatement);
    return true;
}
Also used : CtBreak(spoon.reflect.code.CtBreak)

Example 2 with CtBreak

use of spoon.reflect.code.CtBreak in project spoon by INRIA.

the class EqualsChecker method visitCtBreak.

@Override
public void visitCtBreak(CtBreak e) {
    final CtBreak peek = (CtBreak) this.other;
    if (e.getTargetLabel() == null) {
        if (peek.getTargetLabel() != null) {
            isNotEqual = true;
            return;
        }
    } else if (peek.getTargetLabel() == null) {
        isNotEqual = true;
        return;
    } else if (!e.getTargetLabel().equals(peek.getTargetLabel())) {
        isNotEqual = true;
        return;
    }
    super.visitCtBreak(e);
}
Also used : CtBreak(spoon.reflect.code.CtBreak)

Example 3 with CtBreak

use of spoon.reflect.code.CtBreak in project spoon by INRIA.

the class DefaultCoreFactory method createBreak.

public CtBreak createBreak() {
    CtBreak e = new CtBreakImpl();
    e.setFactory(getMainFactory());
    return e;
}
Also used : CtBreakImpl(spoon.support.reflect.code.CtBreakImpl) CtBreak(spoon.reflect.code.CtBreak)

Example 4 with CtBreak

use of spoon.reflect.code.CtBreak in project spoon by INRIA.

the class TestLabels method testLabelsAreDetected.

@Test
public void testLabelsAreDetected() {
    Launcher launcher = new Launcher();
    launcher.addInputResource("./src/test/java/spoon/test/labels/testclasses/ManyLabels.java");
    launcher.buildModel();
    CtMethod mainMethod = launcher.getFactory().getModel().getElements(new NamedElementFilter<>(CtMethod.class, "main")).get(0);
    CtBlock body = mainMethod.getBody();
    assertEquals(2, body.getStatements().size());
    CtBlock block = (CtBlock) body.getStatement(0);
    CtSwitch ctSwitch = (CtSwitch) body.getStatement(1);
    assertEquals("labelBlock", block.getLabel());
    assertEquals("sw", ctSwitch.getLabel());
    assertTrue(block.getStatement(1) instanceof CtIf);
    CtIf firstIf = (CtIf) block.getStatement(1);
    CtBlock then = firstIf.getThenStatement();
    CtBreak firstBreak = (CtBreak) then.getStatement(1);
    assertEquals("labelBlock", firstBreak.getTargetLabel());
    assertSame(block, firstBreak.getLabelledStatement());
    CtIf secondIf = (CtIf) block.getStatement(2);
    assertEquals("labelIf", secondIf.getLabel());
    CtBlock thenBlock = secondIf.getThenStatement();
    CtIf innerIf = (CtIf) thenBlock.getStatement(0);
    CtBlock innerThenBlock = innerIf.getThenStatement();
    CtBreak breakInnerIf = (CtBreak) innerThenBlock.getStatement(0);
    assertSame(secondIf, breakInnerIf.getLabelledStatement());
    CtCase firstCase = (CtCase) ctSwitch.getCases().get(0);
    List<CtStatement> statementList = firstCase.getStatements();
    assertEquals(2, statementList.size());
    CtDo ctDo = (CtDo) statementList.get(0);
    assertEquals("label", ctDo.getLabel());
    CtBreak finalBreak = (CtBreak) statementList.get(1);
    assertNull(finalBreak.getTargetLabel());
    assertNull(finalBreak.getLabelledStatement());
    CtBlock doBlock = (CtBlock) ctDo.getBody();
    CtWhile ctWhile = (CtWhile) doBlock.getStatement(1);
    assertEquals("lWhile", ctWhile.getLabel());
    CtBlock whileBlock = (CtBlock) ctWhile.getBody();
    CtFor forLoop = (CtFor) whileBlock.getStatement(0);
    CtBreak breakSwitch = (CtBreak) whileBlock.getStatement(1);
    assertEquals("sw", breakSwitch.getTargetLabel());
    assertSame(ctSwitch, breakSwitch.getLabelledStatement());
    assertEquals("forloop", forLoop.getLabel());
    CtBlock forBlock = (CtBlock) forLoop.getBody();
    assertEquals(7, forBlock.getStatements().size());
    CtIf firstForIf = (CtIf) forBlock.getStatement(1);
    CtIf secondForIf = (CtIf) forBlock.getStatement(2);
    CtIf thirdForIf = (CtIf) forBlock.getStatement(3);
    CtIf fourthForIf = (CtIf) forBlock.getStatement(4);
    CtBreak breakItself = (CtBreak) forBlock.getStatement(6);
    CtContinue continueFor = (CtContinue) ((CtBlock) firstForIf.getThenStatement()).getStatement(0);
    assertSame(forLoop, continueFor.getLabelledStatement());
    CtContinue continueWhile = (CtContinue) ((CtBlock) secondForIf.getThenStatement()).getStatement(0);
    assertSame(ctWhile, continueWhile.getLabelledStatement());
    CtContinue continueDo = (CtContinue) ((CtBlock) thirdForIf.getThenStatement()).getStatement(0);
    assertSame(ctDo, continueDo.getLabelledStatement());
    CtBreak breakDo = (CtBreak) ((CtBlock) fourthForIf.getThenStatement()).getStatement(0);
    assertSame(ctDo, breakDo.getLabelledStatement());
    assertEquals("labelbreak", breakItself.getLabel());
    assertEquals("labelbreak", breakItself.getTargetLabel());
    assertSame(breakItself, breakItself.getLabelledStatement());
}
Also used : CtBreak(spoon.reflect.code.CtBreak) CtSwitch(spoon.reflect.code.CtSwitch) CtIf(spoon.reflect.code.CtIf) CtWhile(spoon.reflect.code.CtWhile) CtBlock(spoon.reflect.code.CtBlock) CtStatement(spoon.reflect.code.CtStatement) CtCase(spoon.reflect.code.CtCase) NamedElementFilter(spoon.reflect.visitor.filter.NamedElementFilter) Launcher(spoon.Launcher) CtDo(spoon.reflect.code.CtDo) CtFor(spoon.reflect.code.CtFor) CtMethod(spoon.reflect.declaration.CtMethod) CtContinue(spoon.reflect.code.CtContinue) Test(org.junit.Test)

Aggregations

CtBreak (spoon.reflect.code.CtBreak)4 Test (org.junit.Test)1 Launcher (spoon.Launcher)1 CtBlock (spoon.reflect.code.CtBlock)1 CtCase (spoon.reflect.code.CtCase)1 CtContinue (spoon.reflect.code.CtContinue)1 CtDo (spoon.reflect.code.CtDo)1 CtFor (spoon.reflect.code.CtFor)1 CtIf (spoon.reflect.code.CtIf)1 CtStatement (spoon.reflect.code.CtStatement)1 CtSwitch (spoon.reflect.code.CtSwitch)1 CtWhile (spoon.reflect.code.CtWhile)1 CtMethod (spoon.reflect.declaration.CtMethod)1 NamedElementFilter (spoon.reflect.visitor.filter.NamedElementFilter)1 CtBreakImpl (spoon.support.reflect.code.CtBreakImpl)1