changeset 56797:91e02ad382d2 patterns

Correcting handling of yield in matching switch expressions.
author jlahoda
date Mon, 17 Jun 2019 17:18:22 +0200
parents 7cb39e5d5420
children 321d2ca49a87 a1b8e9c3de61
files src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransSwitches.java test/langtools/tools/javac/patterns/SwitchExpressionWithPatterns.java
diffstat 2 files changed, 9 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransSwitches.java	Fri Jun 14 08:37:37 2019 +0200
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransSwitches.java	Mon Jun 17 17:18:22 2019 +0200
@@ -160,14 +160,14 @@
                 @Override
                 public void visitYield(JCYield tree) {
                     if (tree.target == switchExpr) {
-                        tree.target = switchStatement;
+                        JCBreak newBreak = make.Break(null);
+                        newBreak.target = switchStatement;
                         JCExpressionStatement assignment =
                                 make.Exec(make.Assign(make.Ident(dollar_switchexpr),
                                                       translate(tree.value))
                                               .setType(dollar_switchexpr.type));
                         result = make.Block(0, List.of(assignment,
-                                                       tree));
-                        tree.value = null;
+                                                       newBreak));
                     } else {
                         result = tree;
                     }
--- a/test/langtools/tools/javac/patterns/SwitchExpressionWithPatterns.java	Fri Jun 14 08:37:37 2019 +0200
+++ b/test/langtools/tools/javac/patterns/SwitchExpressionWithPatterns.java	Mon Jun 17 17:18:22 2019 +0200
@@ -24,7 +24,7 @@
 /*
  * @test
  * @summary Basic test for patterns in switch expression
- * @compile --enable-preview -source 12 SwitchExpressionWithPatterns.java
+ * @compile --enable-preview -source ${jdk.version} SwitchExpressionWithPatterns.java
  * @run main/othervm --enable-preview SwitchExpressionWithPatterns
  */
 
@@ -53,9 +53,9 @@
         int check = 0;
         return switch (in) {
             case 41: check++; //fall-through
-            case Integer i: check++; break check;
-            case Long l, Float f: break 3;
-            default: break 4;
+            case Integer i: check++; yield check;
+            case Long l, Float f: yield 3;
+            default: yield 4;
         };
 
     }
@@ -64,9 +64,9 @@
         int check = 0;
         return switch (in) {
             case 41 -> 2;
-            case Integer j -> { break 1; }
+            case Integer j -> { yield 1; }
             case Long l, Float f -> 3;
-            default -> { break 4; }
+            default -> { yield 4; }
         };
     }