--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java Fri Mar 09 11:36:12 2018 +0800
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java Fri Mar 09 09:42:10 2018 +0100
@@ -146,6 +146,8 @@
*/
JCDiagnostic.Factory diagFactory;
+ DeferredCompletionFailureHandler dcfh;
+
/** The current scope where type variables are entered.
*/
protected WriteableScope typevars;
@@ -260,6 +262,7 @@
if (fileManager == null)
throw new AssertionError("FileManager initialization error");
diagFactory = JCDiagnostic.Factory.instance(context);
+ dcfh = DeferredCompletionFailureHandler.instance(context);
log = Log.instance(context);
@@ -299,7 +302,8 @@
currentOwner.enclClass(),
currentClassFile,
diagFactory.fragment(key, args),
- diagFactory);
+ diagFactory,
+ dcfh);
}
public ClassFinder.BadEnclosingMethodAttr badEnclosingMethod(Symbol sym) {
@@ -307,7 +311,8 @@
currentOwner.enclClass(),
currentClassFile,
diagFactory.fragment(Fragments.BadEnclosingMethod(sym)),
- diagFactory);
+ diagFactory,
+ dcfh);
}
/************************************************************************
@@ -2663,7 +2668,7 @@
long f = nextChar();
long flags = adjustClassFlags(f);
if ((flags & MODULE) == 0) {
- if (c.owner.kind == PCK) c.flags_field = flags;
+ if (c.owner.kind == PCK || c.owner.kind == ERR) c.flags_field = flags;
// read own class name and check that it matches
currentModule = c.packge().modle;
ClassSymbol self = readClassSymbol(nextChar());
@@ -3065,7 +3070,9 @@
theRepeatable = deproxy.deproxyCompound(repeatable);
}
} catch (Exception e) {
- throw new CompletionFailure(sym, ClassReader.this.diagFactory.fragment(Fragments.ExceptionMessage(e.getMessage())));
+ throw new CompletionFailure(sym,
+ ClassReader.this.diagFactory.fragment(Fragments.ExceptionMessage(e.getMessage())),
+ dcfh);
}
sym.getAnnotationTypeMetadata().setTarget(theTarget);