diff -r ea3b1a8fd4bb -r 0b470386f5f7 src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java Mon Jul 08 16:20:40 2019 -0700 +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java Tue Jul 09 09:20:04 2019 +0200 @@ -41,7 +41,6 @@ import com.sun.tools.javac.util.DefinedBy.Api; import com.sun.tools.javac.util.GraphUtils.DependencyKind; import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition; -import com.sun.tools.javac.code.Symbol.*; import com.sun.tools.javac.comp.Attr.ResultInfo; import com.sun.tools.javac.comp.Resolve.MethodResolutionPhase; import com.sun.tools.javac.resources.CompilerProperties.Errors; @@ -501,7 +500,7 @@ attr.attribTree(newTree, speculativeEnv, resultInfo); return newTree; } finally { - new UnenterScanner(env.toplevel.modle).scan(newTree); + enter.unenter(env.toplevel, newTree); log.popDiagnosticHandler(deferredDiagnosticHandler); if (localCache != null) { localCache.leave(); @@ -509,29 +508,6 @@ } } //where - - class UnenterScanner extends TreeScanner { - private final ModuleSymbol msym; - - public UnenterScanner(ModuleSymbol msym) { - this.msym = msym; - } - - @Override - public void visitClassDef(JCClassDecl tree) { - ClassSymbol csym = tree.sym; - //if something went wrong during method applicability check - //it is possible that nested expressions inside argument expression - //are left unchecked - in such cases there's nothing to clean up. - if (csym == null) return; - typeEnvs.remove(csym); - chk.removeCompiled(csym); - chk.clearLocalClassNameIndexes(csym); - syms.removeClass(msym, csym.flatname); - super.visitClassDef(tree); - } - } - static class DeferredAttrDiagHandler extends Log.DeferredDiagnosticHandler { static class PosScanner extends TreeScanner {