Fix break statement
This commit is contained in:
1 parent
e103ef4869
commit
65b2990ad1
4 files changed
+16
-5
No files matched your search
@@ -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());
|
||||
|
||||
+2
-1
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user