--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java Mon Jun 04 12:14:22 2018 -0500
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java Mon Jun 04 10:12:40 2018 -0700
@@ -1257,15 +1257,19 @@
ClassSymbol accessConstructorTag() {
ClassSymbol topClass = currentClass.outermostClass();
ModuleSymbol topModle = topClass.packge().modle;
- Name flatname = names.fromString("" + topClass.getQualifiedName() +
- target.syntheticNameChar() +
- "1");
- ClassSymbol ctag = chk.getCompiled(topModle, flatname);
- if (ctag == null)
- ctag = makeEmptyClass(STATIC | SYNTHETIC, topClass).sym;
- // keep a record of all tags, to verify that all are generated as required
- accessConstrTags = accessConstrTags.prepend(ctag);
- return ctag;
+ for (int i = 1; ; i++) {
+ Name flatname = names.fromString("" + topClass.getQualifiedName() +
+ target.syntheticNameChar() +
+ i);
+ ClassSymbol ctag = chk.getCompiled(topModle, flatname);
+ if (ctag == null)
+ ctag = makeEmptyClass(STATIC | SYNTHETIC, topClass).sym;
+ else if (!ctag.isAnonymous())
+ continue;
+ // keep a record of all tags, to verify that all are generated as required
+ accessConstrTags = accessConstrTags.prepend(ctag);
+ return ctag;
+ }
}
/** Add all required access methods for a private symbol to enclosing class.