1079 " case 1: { i++; break;}" +
1080 " case 2: throw new RuntimeException();" +
1081 " case 3: if (true) ; break;" +
1082 " default: i++; break;" +
1083 " }" +
1084 " int j = switch (i) {" +
1085 " case 0 -> i + 1;" +
1086 " case 1 -> { break i + 1; }" +
1087 " default -> throw new RuntimeException();" +
1088 " };" +
1089 " int k = switch (i) {" +
1090 " case 0: break i + 1;" +
1091 " case 1: { break i + 1; }" +
1092 " default: throw new RuntimeException();" +
1093 " };" +
1094 " }" +
1095 "}";
1096 String expectedErrors = "Test.java:1:178: compiler.err.switch.case.unexpected.statement\n";
1097 StringWriter out = new StringWriter();
1098 JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(out, fm, null,
1099 Arrays.asList("-XDrawDiagnostics", "--enable-preview", "-source", "12"),
1100 null, Arrays.asList(new MyFileObject(code)));
1101
1102 CompilationUnitTree cut = ct.parse().iterator().next();
1103 Trees trees = Trees.instance(ct);
1104 List<String> spans = new ArrayList<>();
1105
1106 new TreePathScanner<Void, Void>() {
1107 @Override
1108 public Void visitCase(CaseTree tree, Void v) {
1109 if (tree.getBody() != null) {
1110 int start = (int) trees.getSourcePositions().getStartPosition(cut, tree.getBody());
1111 int end = (int) trees.getSourcePositions().getEndPosition(cut, tree.getBody());
1112 spans.add(code.substring(start, end));
1113 } else {
1114 spans.add("<null>");
1115 }
1116 return super.visitCase(tree, v);
1117 }
1118 }.scan(cut, null);
1119
|
1079 " case 1: { i++; break;}" +
1080 " case 2: throw new RuntimeException();" +
1081 " case 3: if (true) ; break;" +
1082 " default: i++; break;" +
1083 " }" +
1084 " int j = switch (i) {" +
1085 " case 0 -> i + 1;" +
1086 " case 1 -> { break i + 1; }" +
1087 " default -> throw new RuntimeException();" +
1088 " };" +
1089 " int k = switch (i) {" +
1090 " case 0: break i + 1;" +
1091 " case 1: { break i + 1; }" +
1092 " default: throw new RuntimeException();" +
1093 " };" +
1094 " }" +
1095 "}";
1096 String expectedErrors = "Test.java:1:178: compiler.err.switch.case.unexpected.statement\n";
1097 StringWriter out = new StringWriter();
1098 JavacTaskImpl ct = (JavacTaskImpl) tool.getTask(out, fm, null,
1099 Arrays.asList("-XDrawDiagnostics", "--enable-preview", "-source", "13"),
1100 null, Arrays.asList(new MyFileObject(code)));
1101
1102 CompilationUnitTree cut = ct.parse().iterator().next();
1103 Trees trees = Trees.instance(ct);
1104 List<String> spans = new ArrayList<>();
1105
1106 new TreePathScanner<Void, Void>() {
1107 @Override
1108 public Void visitCase(CaseTree tree, Void v) {
1109 if (tree.getBody() != null) {
1110 int start = (int) trees.getSourcePositions().getStartPosition(cut, tree.getBody());
1111 int end = (int) trees.getSourcePositions().getEndPosition(cut, tree.getBody());
1112 spans.add(code.substring(start, end));
1113 } else {
1114 spans.add("<null>");
1115 }
1116 return super.visitCase(tree, v);
1117 }
1118 }.scan(cut, null);
1119
|