77 } else {
78 code.append(" switch(i) {\n");
79 }
80 for (String expr : expressions) {
81 code.append("case ");
82 int start = code.length();
83 code.append(expr);
84 spans.add(new SimpleEntry<>((long) start, (long) code.length()));
85 code.append(" -> {}");
86 }
87 code.append(" };\n");
88 }
89 code.append(" }\n" +
90 "}\n");
91 final JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
92 assert tool != null;
93 DiagnosticListener<JavaFileObject> noErrors = d -> { throw new AssertionError(d.getMessage(null)); };
94
95 StringWriter out = new StringWriter();
96 JavacTask ct = (JavacTask) tool.getTask(out, null, noErrors,
97 List.of("--enable-preview", "-source", "12"), null,
98 Arrays.asList(new MyFileObject(code.toString())));
99 CompilationUnitTree cut = ct.parse().iterator().next();
100 Trees trees = Trees.instance(ct);
101 new TreePathScanner<Void, Void>() {
102 @Override
103 public Void visitCase(CaseTree node, Void p) {
104 long start = trees.getSourcePositions().getStartPosition(cut, node.getExpression());
105 long end = trees.getSourcePositions().getEndPosition(cut, node.getExpression());
106 if (!spans.remove(new SimpleEntry<>(start, end))) {
107 throw new AssertionError("Did not find an expression span in expected spans: " +
108 start + "-" + end +
109 " '" + node.getExpression().toString() + "'");
110 }
111 return super.visitCase(node, p);
112 }
113 }.scan(cut, null);
114
115 if (!spans.isEmpty()) {
116 throw new AssertionError("Remaning spans: " + spans);
117 }
|
77 } else {
78 code.append(" switch(i) {\n");
79 }
80 for (String expr : expressions) {
81 code.append("case ");
82 int start = code.length();
83 code.append(expr);
84 spans.add(new SimpleEntry<>((long) start, (long) code.length()));
85 code.append(" -> {}");
86 }
87 code.append(" };\n");
88 }
89 code.append(" }\n" +
90 "}\n");
91 final JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
92 assert tool != null;
93 DiagnosticListener<JavaFileObject> noErrors = d -> { throw new AssertionError(d.getMessage(null)); };
94
95 StringWriter out = new StringWriter();
96 JavacTask ct = (JavacTask) tool.getTask(out, null, noErrors,
97 List.of("--enable-preview", "-source", "13"), null,
98 Arrays.asList(new MyFileObject(code.toString())));
99 CompilationUnitTree cut = ct.parse().iterator().next();
100 Trees trees = Trees.instance(ct);
101 new TreePathScanner<Void, Void>() {
102 @Override
103 public Void visitCase(CaseTree node, Void p) {
104 long start = trees.getSourcePositions().getStartPosition(cut, node.getExpression());
105 long end = trees.getSourcePositions().getEndPosition(cut, node.getExpression());
106 if (!spans.remove(new SimpleEntry<>(start, end))) {
107 throw new AssertionError("Did not find an expression span in expected spans: " +
108 start + "-" + end +
109 " '" + node.getExpression().toString() + "'");
110 }
111 return super.visitCase(node, p);
112 }
113 }.scan(cut, null);
114
115 if (!spans.isEmpty()) {
116 throw new AssertionError("Remaning spans: " + spans);
117 }
|