From 327c3cd9ff9b938b1d272077a232c43a94fe26f2 Mon Sep 17 00:00:00 2001 From: Evoloxi <69534332+Evoloxi@users.noreply.github.com> Date: Tue, 14 Apr 2026 02:32:01 +0200 Subject: [PATCH] Fall back to interfaces when resolving capability fields (#643) --- ...CapabilityProviderDispatcherGenerator.java | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/embeddedt/modernfix/forge/capability/CapabilityProviderDispatcherGenerator.java b/src/main/java/org/embeddedt/modernfix/forge/capability/CapabilityProviderDispatcherGenerator.java index 6191a2d7..6aa4fb75 100644 --- a/src/main/java/org/embeddedt/modernfix/forge/capability/CapabilityProviderDispatcherGenerator.java +++ b/src/main/java/org/embeddedt/modernfix/forge/capability/CapabilityProviderDispatcherGenerator.java @@ -7,6 +7,7 @@ import org.embeddedt.modernfix.ModernFix; import org.embeddedt.modernfix.forge.capability.analysis.CapabilityAnalysisResult; import org.embeddedt.modernfix.forge.capability.analysis.CapabilityAnalyzer; import org.embeddedt.modernfix.forge.capability.analysis.CapabilityRef; +import org.jetbrains.annotations.NotNull; import org.objectweb.asm.*; import org.objectweb.asm.commons.GeneratorAdapter; import org.objectweb.asm.commons.Method; @@ -190,6 +191,8 @@ public class CapabilityProviderDispatcherGenerator { * Resolves the actual {@link Capability} instances for all refs at class-generation time. * Uses reflection (with {@code setAccessible}) so private fields are handled without any * reflection bytecode appearing in the generated class. + *
+ * Field lookup is delegated to {@link #getRefField(Class, CapabilityRef)}
*/
private static List