< prev index next >

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

Print this page




  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         }
< prev index next >