Skip to content

Commit 70b0645

Browse files
committed
EnumExtender: Support sealed classes.
1 parent 7c83511 commit 70b0645

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

src/com/chocohead/mm/EnumExtender.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,10 @@ static Consumer<ClassNode> makeEnumExtender(EnumAdder builder) {
176176
InsnList arrayFilling = new InsnList();
177177

178178
for (EnumAddition addition : builder.getAdditions()) {
179+
String additionType = addition.isEnumSubclass() ? anonymousClassFactory.get() : node.name;
180+
if (addition.isEnumSubclass() && node.permittedSubclasses != null) {
181+
node.permittedSubclasses.add(additionType);
182+
}
179183
node.visitField(Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_STATIC + Opcodes.ACC_ENUM, addition.name, 'L' + node.name + ';', null, null);
180184

181185
LabelNode stuffStart;
@@ -193,7 +197,6 @@ static Consumer<ClassNode> makeEnumExtender(EnumAdder builder) {
193197
fieldSetting.add(stuffStart);
194198
} else stuffStart = null;
195199

196-
String additionType = addition.isEnumSubclass() ? anonymousClassFactory.get() : node.name;
197200
fieldSetting.add(new TypeInsnNode(Opcodes.NEW, additionType));
198201
fieldSetting.add(new InsnNode(Opcodes.DUP));
199202

0 commit comments

Comments
 (0)