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();
|