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 (injectedFields.containsKey(field.getName()) && !ASSERTION_FIELD.equals(field.getName()))
if (targetClass.findField(field.getName(), field.getType()) != null && !ASSERTION_FIELD.equals(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);
}
}