< prev index next >
src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java
Print this page
rev 51291 : imported patch switch
rev 51292 : [mq]: switch.02
*** 3364,3373 ****
--- 3364,3378 ----
case 0: //default
case 1: //single label
cases.append(c);
break;
default: //multiple labels, expand:
+ //case C1, C2, C3: ...
+ //=>
+ //case C1:
+ //case C2:
+ //case C3: ...
List<JCExpression> patterns = c.pats;
while (patterns.tail.nonEmpty()) {
cases.append(make_at(c.pos()).Case(JCCase.STATEMENT,
List.of(patterns.head),
List.nil(),
*** 3616,3625 ****
--- 3621,3642 ----
}
}
@Override
public void visitSwitchExpression(JCSwitchExpression tree) {
+ //translates switch expression to statement switch:
+ //switch (selector) {
+ // case C: break value;
+ // ...
+ //}
+ //=>
+ //(letexpr T exprswitch$;
+ // switch (selector) {
+ // case C: { exprswitch$ = value; break; }
+ // }
+ // exprswitch$
+ //)
VarSymbol dollar_switchexpr = new VarSymbol(Flags.FINAL|Flags.SYNTHETIC,
names.fromString("exprswitch" + tree.pos + target.syntheticNameChar()),
tree.type,
currentMethodSym);
< prev index next >