/** Create the next round to be used. */ Round next(Set<JavaFileObject> newSourceFiles, Map<String, JavaFileObject> newClassFiles) { try { return new Round(this, newSourceFiles, newClassFiles); } finally { compiler.close(false); } }
@Override public void close(boolean disposeNames) { if (resourceFileObjects != null) { addResources(); resourceFileObjects = null; } super.close(disposeNames); }
/** Create the compiler to be used for the final compilation. */ JavaCompiler finalCompiler(boolean errorStatus) { try { JavaCompiler c = JavaCompiler.instance(nextContext()); c.log.nwarnings += compiler.log.nwarnings; if (errorStatus) { c.log.nerrors += compiler.log.nerrors; } return c; } finally { compiler.close(false); } }
public boolean delombok() throws IOException { Options options = Options.instance(context); options.put(OptionName.ENCODING, charset.name()); if (classpath != null) options.put(OptionName.CLASSPATH, classpath); if (sourcepath != null) options.put(OptionName.SOURCEPATH, sourcepath); options.put("compilePolicy", "attr"); CommentCollectingScanner.Factory.preRegister(context); JavaCompiler compiler = new JavaCompiler(context); compiler.keepComments = true; compiler.genEndPos = true; List<JCCompilationUnit> roots = new ArrayList<JCCompilationUnit>(); Map<JCCompilationUnit, Comments> commentsMap = new IdentityHashMap<JCCompilationUnit, Comments>(); Map<JCCompilationUnit, File> baseMap = new IdentityHashMap<JCCompilationUnit, File>(); compiler.initProcessAnnotations(Collections.singleton(new lombok.javac.apt.Processor())); for (File fileToParse : filesToParse) { Comments comments = new Comments(); context.put(Comments.class, comments); @SuppressWarnings("deprecation") JCCompilationUnit unit = compiler.parse(fileToParse.getAbsolutePath()); commentsMap.put(unit, comments); baseMap.put(unit, fileToBase.get(fileToParse)); roots.add(unit); } if (compiler.errorCount() > 0) { // At least one parse error. No point continuing (a real javac run doesn't either). return false; } TrackChangedAsts tca = new TrackChangedAsts(); context.put(TrackChangedAsts.class, tca); JavaCompiler delegate = compiler.processAnnotations(compiler.enterTrees(toJavacList(roots))); for (JCCompilationUnit unit : roots) { DelombokResult result = new DelombokResult( commentsMap.get(unit).comments.toList(), unit, force || tca.changed.contains(unit)); if (verbose) feedback.printf( "File: %s [%s]\n", unit.sourcefile.getName(), result.isChanged() ? "delomboked" : "unchanged"); Writer rawWriter; if (presetWriter != null) rawWriter = presetWriter; else if (output == null) rawWriter = createStandardOutWriter(); else rawWriter = createFileWriter(output, baseMap.get(unit), unit.sourcefile.toUri()); BufferedWriter writer = new BufferedWriter(rawWriter); try { result.print(writer); } finally { writer.close(); } } delegate.close(); return true; }