Fix break statement

This commit is contained in:
Andreas Dangel committed 2019-03-17 10:22:11 +01:00
1 parent e103ef4869
commit 65b2990ad1
4 files changed
+16 -5

No files matched your search

+1 -1
View File
@@ -2567,7 +2567,7 @@ void ForUpdate() :
void BreakStatement() :
{Token t;}
{
"break" [ LOOKAHEAD(1) t=<IDENTIFIER> {jjtThis.setImage(t.image);} | Expression() {checkForBreakExpression();} ] ";"
"break" [ LOOKAHEAD(<IDENTIFIER> ";") t=<IDENTIFIER> {jjtThis.setImage(t.image);} | Expression() {checkForBreakExpression();} ] ";"
}
void ContinueStatement() :
@@ -14,11 +14,17 @@ public class ASTBreakStatement extends AbstractJavaNode {
super(p, id);
}
/**
* Accept the visitor. *
*/
@Override
public Object jjtAccept(JavaParserVisitor visitor, Object data) {
return visitor.visit(this, data);
}
@Override
public String getImage() {
String result = super.getImage();
if (result == null && hasDescendantOfType(ASTName.class)) {
result = getFirstDescendantOfType(ASTName.class).getImage();
}
return result;
}
}
@@ -104,6 +104,10 @@ public class Java12Test {
Assert.assertTrue(switchExpression.jjtGetChild(0) instanceof ASTExpression);
Assert.assertEquals(5, switchExpression.findChildrenOfType(ASTSwitchLabel.class).size());
ASTBreakStatement breakStatement = switchExpression.getFirstDescendantOfType(ASTBreakStatement.class);
Assert.assertEquals("SwitchExpressionsBreak.SIX", breakStatement.getImage());
Assert.assertTrue(breakStatement.jjtGetChild(0) instanceof ASTExpression);
ASTLocalVariableDeclaration localVar = compilationUnit.findDescendantsOfType(ASTLocalVariableDeclaration.class).get(1);
ASTVariableDeclarator localVarDecl = localVar.getFirstChildOfType(ASTVariableDeclarator.class);
Assert.assertEquals(Integer.TYPE, localVarDecl.getType());
@@ -7,12 +7,13 @@ public class SwitchExpressionsBreak {
private static final int SATURDAY = 6;
private static final int SUNDAY = 7;
private static final int SIX = 6;
public static void main(String[] args) {
int day = FRIDAY;
var numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY: break 6;
case MONDAY, FRIDAY, SUNDAY: break SwitchExpressionsBreak.SIX;
case TUESDAY : break 7;
case THURSDAY, SATURDAY : break 8;
case WEDNESDAY : break 9;