< prev index next >

src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java

Print this page
rev 52490 : imported patch 8212982b2


1375                 //return illegal();
1376             }
1377             break;
1378         case SWITCH:
1379             checkSourceLevel(Feature.SWITCH_EXPRESSION);
1380             int switchPos = token.pos;
1381             nextToken();
1382             JCExpression selector = parExpression();
1383             accept(LBRACE);
1384             ListBuffer<JCCase> cases = new ListBuffer<>();
1385             while (true) {
1386                 pos = token.pos;
1387                 switch (token.kind) {
1388                 case CASE:
1389                 case DEFAULT:
1390                     cases.appendList(switchExpressionStatementGroup());
1391                     break;
1392                 case RBRACE: case EOF:
1393                     JCSwitchExpression e = to(F.at(switchPos).SwitchExpression(selector,
1394                                                                                cases.toList()));

1395                     accept(RBRACE);
1396                     return e;
1397                 default:
1398                     nextToken(); // to ensure progress
1399                     syntaxError(pos, Errors.Expected3(CASE, DEFAULT, RBRACE));
1400                 }
1401             }
1402         default:
1403             return illegal();
1404         }
1405         return term3Rest(t, typeArgs);
1406     }
1407 
1408     private List<JCCase> switchExpressionStatementGroup() {
1409         ListBuffer<JCCase> caseExprs = new ListBuffer<>();
1410         int casePos = token.pos;
1411         ListBuffer<JCExpression> pats = new ListBuffer<>();
1412 
1413         if (token.kind == DEFAULT) {
1414             nextToken();




1375                 //return illegal();
1376             }
1377             break;
1378         case SWITCH:
1379             checkSourceLevel(Feature.SWITCH_EXPRESSION);
1380             int switchPos = token.pos;
1381             nextToken();
1382             JCExpression selector = parExpression();
1383             accept(LBRACE);
1384             ListBuffer<JCCase> cases = new ListBuffer<>();
1385             while (true) {
1386                 pos = token.pos;
1387                 switch (token.kind) {
1388                 case CASE:
1389                 case DEFAULT:
1390                     cases.appendList(switchExpressionStatementGroup());
1391                     break;
1392                 case RBRACE: case EOF:
1393                     JCSwitchExpression e = to(F.at(switchPos).SwitchExpression(selector,
1394                                                                                cases.toList()));
1395                     e.endpos = token.pos;
1396                     accept(RBRACE);
1397                     return e;
1398                 default:
1399                     nextToken(); // to ensure progress
1400                     syntaxError(pos, Errors.Expected3(CASE, DEFAULT, RBRACE));
1401                 }
1402             }
1403         default:
1404             return illegal();
1405         }
1406         return term3Rest(t, typeArgs);
1407     }
1408 
1409     private List<JCCase> switchExpressionStatementGroup() {
1410         ListBuffer<JCCase> caseExprs = new ListBuffer<>();
1411         int casePos = token.pos;
1412         ListBuffer<JCExpression> pats = new ListBuffer<>();
1413 
1414         if (token.kind == DEFAULT) {
1415             nextToken();


< prev index next >