From d2aa36ce8a4abd416e05bfa0dd5fbf47723cd9cf Mon Sep 17 00:00:00 2001 From: LlamaLad7 Date: Sun, 30 Jun 2024 19:01:14 +0100 Subject: [PATCH] Fix: Do not re-parent calls to interface super methods. The existing logic is wrong, and they will always be valid as-is because any superinterfaces will be merged onto the target class. --- .../asm/mixin/transformer/MixinTargetContext.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/org/spongepowered/asm/mixin/transformer/MixinTargetContext.java b/src/main/java/org/spongepowered/asm/mixin/transformer/MixinTargetContext.java index f1006b1f4..996621fdf 100644 --- a/src/main/java/org/spongepowered/asm/mixin/transformer/MixinTargetContext.java +++ b/src/main/java/org/spongepowered/asm/mixin/transformer/MixinTargetContext.java @@ -871,6 +871,10 @@ private void processImaginarySuper(MethodNode method, FieldInsnNode fieldInsn) { * @param methodRef Unbound reference to the method */ private void updateStaticBinding(MethodNode method, MemberRef methodRef) { + if (!methodRef.getOwner().equals(this.classNode.superName)) { + // Must be to an interface, no need to re-parent. + return; + } this.updateBinding(method, methodRef, Traversal.SUPER); }