Skip to content

Commit d1faf2d

Browse files
sumguythoix0rai
authored andcommitted
removed an unnecessary outer class null check (cherry-picked from FabricMC/Enigma#538)
1 parent 6f849ad commit d1faf2d

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

enigma/src/main/java/org/quiltmc/enigma/impl/bytecode/translator/TranslationClassVisitor.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,14 @@ public void visitInnerClass(String name, String outerName, String innerName, int
6464
ClassDefEntry classEntry = ClassDefEntry.parse(access, name, this.obfClassEntry.getSignature().toString(), null, new String[0]);
6565
ClassDefEntry translatedEntry = this.translator.translate(classEntry);
6666
ClassEntry translatedOuterClass = translatedEntry.getOuterClass();
67-
if (translatedOuterClass == null) {
68-
throw new IllegalStateException("Translated inner class did not have outer class");
69-
}
67+
68+
// there would be a null check for the outer class here, but:
69+
// JVMS 4.7.6 (java se 20) states that in case an inner class is a top level class, an anonymous class or
70+
// a local (nested) class its outer class must be null
7071

7172
// Anonymous classes do not specify an outer or inner name. As we do not translate from the given parameter, ignore if the input is null
7273
String translatedName = translatedEntry.getFullName();
73-
String translatedOuterName = outerName != null ? translatedOuterClass.getFullName() : null;
74+
String translatedOuterName = outerName != null && translatedOuterClass != null ? translatedOuterClass.getFullName() : null;
7475
String translatedInnerName = innerName != null ? translatedEntry.getName() : null;
7576
super.visitInnerClass(translatedName, translatedOuterName, translatedInnerName, translatedEntry.getAccess().getFlags());
7677
}

0 commit comments

Comments
 (0)