diff options
Diffstat (limited to 'org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchExpressionsYieldTest.java')
-rw-r--r-- | org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchExpressionsYieldTest.java | 227 |
1 files changed, 226 insertions, 1 deletions
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchExpressionsYieldTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchExpressionsYieldTest.java index 0cb6f7e8fc..32df1d186f 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchExpressionsYieldTest.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchExpressionsYieldTest.java @@ -26,7 +26,7 @@ public class SwitchExpressionsYieldTest extends AbstractRegressionTest { static { // TESTS_NUMBERS = new int [] { 40 }; // TESTS_RANGE = new int[] { 1, -1 }; -// TESTS_NAMES = new String[] { "testBug561766" }; +// TESTS_NAMES = new String[] { "testBug545567_14" }; } public static Class<?> testClass() { @@ -5192,4 +5192,229 @@ public class SwitchExpressionsYieldTest extends AbstractRegressionTest { "The target type of this expression must be a functional interface\n" + "----------\n"); } + public void testBug565156_001() { + runConformTest( + new String[] { + "X.java", + "public class X {\n"+ + " public int test() {\n"+ + " return switch (0) {\n"+ + " default -> {\n"+ + " try {\n"+ + " yield 0;\n"+ + " }\n"+ + " catch (RuntimeException e) {\n"+ + " throw e;\n"+ + " }\n"+ + " }\n"+ + " };\n"+ + " } \n"+ + " public static void main(String[] args) {\n"+ + " int i = new X().test();\n"+ + " System.out.println(i);\n"+ + " }\n"+ + "}\n" + }, + "0"); + } + public void testBug565156_002() { + runConformTest( + new String[] { + "X.java", + "public class X {\n"+ + " public int test() {\n"+ + " return switch (0) {\n"+ + " default -> {\n"+ + " try {\n"+ + " yield 0;\n"+ + " }\n"+ + " finally {\n"+ + " //do nothing\n"+ + " }\n"+ + " }\n"+ + " };\n"+ + " } \n"+ + " public static void main(String[] args) {\n"+ + " int i = new X().test();\n"+ + " System.out.println(i);\n"+ + " }\n"+ + "}\n" + }, + "0"); + } + public void testBug565156_003() { + runConformTest( + new String[] { + "X.java", + "public class X {\n"+ + " public int test() {\n"+ + " return switch (0) {\n"+ + " default -> {\n"+ + " try {\n"+ + " yield 0;\n"+ + " }\n"+ + " finally {\n"+ + " int i = 20;"+ + " yield 20;"+ + " }\n"+ + " }\n"+ + " };\n"+ + " } \n"+ + " public static void main(String[] args) {\n"+ + " int i = new X().test();\n"+ + " System.out.println(i);\n"+ + " }\n"+ + "}\n" + }, + "20"); + } + public void testBug565156_004() { + runConformTest( + new String[] { + "X.java", + "public class X {\n"+ + " public int test() {\n"+ + " return switch (0) {\n"+ + " default -> {\n"+ + " try {\n"+ + " yield switch (0) {\n"+ + " default -> {\n"+ + " try {\n"+ + " yield 100;\n"+ + " }\n"+ + " finally {\n"+ + " yield 200; \n"+ + " }\n"+ + " }\n"+ + " };\n"+ + " }\n"+ + " finally {\n"+ + " yield 20;\n"+ + " }\n"+ + " }\n"+ + " };\n"+ + " }\n"+ + " public static void main(String[] args){\n"+ + " int i = new X().test();\n"+ + " System.out.println(i);\n"+ + " }\n"+ + "}" + }, + "20"); + } + public void testBug565156_005() { + runConformTest( + new String[] { + "X.java", + "public class X {\n"+ + " public int test() {\n"+ + " return switch (0) {\n"+ + " default -> {\n"+ + " try {\n"+ + " yield switch (0) {\n"+ + " default -> {\n"+ + " try {\n"+ + " yield 100;\n"+ + " }\n"+ + " finally {\n"+ + " // do nothing\n"+ + " }\n"+ + " }\n"+ + " };\n"+ + " }\n"+ + " finally {\n"+ + " // do nothing\n"+ + " }\n"+ + " }\n"+ + " };\n"+ + " }\n"+ + " public static void main(String[] args){\n"+ + " int i = new X().test();\n"+ + " System.out.println(i);\n"+ + " }\n"+ + "}" + }, + "100"); + } + public void testBug565156_006() { + runConformTest( + new String[] { + "X.java", + "public class X {\n"+ + " public static void main(String[] args) {\n"+ + " new X().foo(args);\n"+ + " }\n"+ + "\n"+ + " @SuppressWarnings({ \"finally\" })\n"+ + " public void foo(String[] args) {\n"+ + " int t = switch (0) {\n"+ + " default -> {\n"+ + " try {\n"+ + " if (args == null)\n"+ + " yield 1;\n"+ + " else if (args.length ==2)\n"+ + " yield 2; \n"+ + " else if (args.length == 4)\n"+ + " yield 4;\n"+ + " else yield 5; \n"+ + " } finally {\n"+ + " yield 3; \n"+ + " }\n"+ + " }\n"+ + " }; \n"+ + " t = switch (100) {\n"+ + " default -> {\n"+ + " try {\n"+ + " yield 10;\n"+ + " } finally {\n"+ + " }\n"+ + " } \n"+ + " }; \n"+ + " System.out.println(t);\n"+ + " }\n"+ + "}" + }, + "10"); + } + public void testBug565156_007() { + runConformTest( + new String[] { + "X.java", + "public class X {\n"+ + " public static void main(String[] args) {\n"+ + " new X().foo(args);\n"+ + " }\n"+ + "\n"+ + " @SuppressWarnings({ \"finally\" })\n"+ + " public void foo(String[] args) {\n"+ + " int t = switch (0) {\n"+ + " case 101 -> {yield 101;}\n"+ + " default -> {\n"+ + " try {\n"+ + " if (args == null)\n"+ + " yield 1;\n"+ + " else if (args.length ==2)\n"+ + " yield 2; \n"+ + " else if (args.length == 4)\n"+ + " yield 4;\n"+ + " else yield 5; \n"+ + " } finally {\n"+ + " yield 3; \n"+ + " }\n"+ + " }\n"+ + " }; \n"+ + " t = switch (100) {\n"+ + " default -> {\n"+ + " try {\n"+ + " yield 10;\n"+ + " } finally {\n"+ + " }\n"+ + " } \n"+ + " }; \n"+ + " System.out.println(t);\n"+ + " }\n"+ + "}" + }, + "10"); + } } |