< prev index next >

test/langtools/tools/javac/switchextra/RuleParsingTest.java

Print this page
rev 56510 : 8232684: Make switch expressions final
Reviewed-by: TBD


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


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