Check mixins only for duplicate static fields

This commit is contained in:
Lucwousin
2022-01-25 21:15:17 +01:00
parent d731d12a9d
commit cebf6d920f

View File

@@ -217,13 +217,21 @@ public class MixinInjector extends AbstractInjector
} }
} }
targetClass.addField(copy); if (targetClass.findField(field.getName(), field.getType()) != null && !ASSERTION_FIELD.equals(field.getName()))
if (injectedFields.containsKey(field.getName()) && !ASSERTION_FIELD.equals(field.getName()))
{ {
throw new InjectException("Duplicate field: " + field.getName()); throw new InjectException("Duplicate field: " + field.getName());
} }
targetClass.addField(copy);
// We only need to save static fields in injected fields, cause only static fields can be shadowed
if (!field.isStatic())
continue;
if (injectedFields.containsKey(field.getName()) && !ASSERTION_FIELD.equals(field.getName()))
{
throw new InjectException("Duplicate static field: " + field.getName());
}
injectedFields.put(field.getName(), copy); injectedFields.put(field.getName(), copy);
} }
} }