File tree 3 files changed +38
-0
lines changed
translator/src/main/java/com/google/devtools/j2objc/translate
3 files changed +38
-0
lines changed Original file line number Diff line number Diff line change 40
40
import com .google .devtools .j2objc .ast .SimpleName ;
41
41
import com .google .devtools .j2objc .ast .SuperConstructorInvocation ;
42
42
import com .google .devtools .j2objc .ast .SuperMethodInvocation ;
43
+ import com .google .devtools .j2objc .ast .SwitchExpression ;
43
44
import com .google .devtools .j2objc .ast .SwitchStatement ;
44
45
import com .google .devtools .j2objc .ast .TreeNode ;
45
46
import com .google .devtools .j2objc .ast .TreeUtil ;
@@ -463,6 +464,15 @@ public void endVisit(WhileStatement node) {
463
464
}
464
465
}
465
466
467
+ @ Override
468
+ @ SuppressWarnings ("UngroupedOverloads" )
469
+ public void endVisit (SwitchExpression node ) {
470
+ Expression expression = node .getExpression ();
471
+ if (!expression .getTypeMirror ().getKind ().isPrimitive ()) {
472
+ unbox (expression );
473
+ }
474
+ }
475
+
466
476
@ Override
467
477
public void endVisit (SwitchStatement node ) {
468
478
Expression expression = node .getExpression ();
Original file line number Diff line number Diff line change 50
50
import com .google .devtools .j2objc .ast .SuperConstructorInvocation ;
51
51
import com .google .devtools .j2objc .ast .SuperMethodInvocation ;
52
52
import com .google .devtools .j2objc .ast .SwitchCase ;
53
+ import com .google .devtools .j2objc .ast .SwitchExpression ;
53
54
import com .google .devtools .j2objc .ast .SwitchStatement ;
54
55
import com .google .devtools .j2objc .ast .ThrowStatement ;
55
56
import com .google .devtools .j2objc .ast .TreeNode ;
@@ -714,6 +715,20 @@ public boolean visit(ForStatement node) {
714
715
return false ;
715
716
}
716
717
718
+ @ Override
719
+ @ SuppressWarnings ("UngroupedOverloads" )
720
+ public boolean visit (SwitchExpression node ) {
721
+ // No need to test for no matched value like SwitchStatement,
722
+ // as switch expressions are exhaustive.
723
+ node .getExpression ().accept (this );
724
+ pushLoopOrSwitchScope (null );
725
+ for (Statement stmt : node .getStatements ()) {
726
+ stmt .accept (this );
727
+ }
728
+ popAndMerge ();
729
+ return false ;
730
+ }
731
+
717
732
@ Override
718
733
public boolean visit (SwitchStatement node ) {
719
734
node .getExpression ().accept (this );
Original file line number Diff line number Diff line change 43
43
import com .google .devtools .j2objc .ast .SimpleName ;
44
44
import com .google .devtools .j2objc .ast .Statement ;
45
45
import com .google .devtools .j2objc .ast .SuperConstructorInvocation ;
46
+ import com .google .devtools .j2objc .ast .SwitchExpression ;
46
47
import com .google .devtools .j2objc .ast .SwitchStatement ;
47
48
import com .google .devtools .j2objc .ast .SynchronizedStatement ;
48
49
import com .google .devtools .j2objc .ast .ThrowStatement ;
@@ -531,6 +532,18 @@ public boolean visit(IfStatement node) {
531
532
return false ;
532
533
}
533
534
535
+ @ Override
536
+ @ SuppressWarnings ("UngroupedOverloads" )
537
+ public boolean visit (SwitchExpression node ) {
538
+ Expression expr = node .getExpression ();
539
+ newExpression (expr );
540
+ expr .accept (this );
541
+ for (Statement stmt : node .getStatements ()) {
542
+ stmt .accept (this );
543
+ }
544
+ return false ;
545
+ }
546
+
534
547
@ Override
535
548
public boolean visit (SwitchStatement node ) {
536
549
visitAndExtract (node .getExpression (), node );
You can’t perform that action at this time.
0 commit comments