SpongePowered / Mixin

Mixin is a trait/mixin and bytecode weaving framework for Java using ASM
MIT License
1.42k stars 194 forks source link

Found a remappable @Shadow annotation #289

Closed Barteks2x closed 6 years ago

Barteks2x commented 6 years ago
[00:04:49] [main/ERROR] [mixin]: cubicchunks.mixins.selectable.json:client.optifine.MixinRenderList: Found a remappable @Shadow annotation on preRenderRegion in org.spongepowered.asm.mixin.transformer.MixinInfo$State@49ced9c7
org.spongepowered.asm.mixin.transformer.throwables.InvalidMixinException: Found a remappable @Shadow annotation on preRenderRegion in org.spongepowered.asm.mixin.transformer.MixinInfo$State@49ced9c7
    at org.spongepowered.asm.mixin.transformer.MixinInfo$State.validateRemappable(MixinInfo.java:351) ~[mixin-0.7.5-SNAPSHOT.jar:0.7.5-SNAPSHOT+unknown-b0.git-unknown]
    at org.spongepowered.asm.mixin.transformer.MixinInfo$State.validateRemappables(MixinInfo.java:340) ~[mixin-0.7.5-SNAPSHOT.jar:0.7.5-SNAPSHOT+unknown-b0.git-unknown]
    at org.spongepowered.asm.mixin.transformer.MixinInfo$State.validate(MixinInfo.java:299) ~[mixin-0.7.5-SNAPSHOT.jar:0.7.5-SNAPSHOT+unknown-b0.git-unknown]
    at org.spongepowered.asm.mixin.transformer.MixinInfo.validate(MixinInfo.java:827) ~[mixin-0.7.5-SNAPSHOT.jar:0.7.5-SNAPSHOT+unknown-b0.git-unknown]
    at org.spongepowered.asm.mixin.transformer.MixinConfig.postInitialise(MixinConfig.java:528) [mixin-0.7.5-SNAPSHOT.jar:0.7.5-SNAPSHOT+unknown-b0.git-unknown]
    at org.spongepowered.asm.mixin.transformer.MixinTransformer.prepareConfigs(MixinTransformer.java:675) [mixin-0.7.5-SNAPSHOT.jar:0.7.5-SNAPSHOT+unknown-b0.git-unknown]
    at org.spongepowered.asm.mixin.transformer.MixinTransformer.select(MixinTransformer.java:572) [mixin-0.7.5-SNAPSHOT.jar:0.7.5-SNAPSHOT+unknown-b0.git-unknown]
    at org.spongepowered.asm.mixin.transformer.MixinTransformer.checkSelect(MixinTransformer.java:548) [mixin-0.7.5-SNAPSHOT.jar:0.7.5-SNAPSHOT+unknown-b0.git-unknown]
    at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:451) [mixin-0.7.5-SNAPSHOT.jar:0.7.5-SNAPSHOT+unknown-b0.git-unknown]
    at org.spongepowered.asm.mixin.transformer.Proxy.transform(Proxy.java:72) [mixin-0.7.5-SNAPSHOT.jar:0.7.5-SNAPSHOT+unknown-b0.git-unknown]
    at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176) [launchwrapper-1.12.jar:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) [?:1.8.0_171]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) [?:1.8.0_171]
    at java.lang.Class.forName0(Native Method) ~[?:1.8.0_171]
    at java.lang.Class.forName(Class.java:348) [?:1.8.0_171]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:131) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_171]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_171]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_171]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_171]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:25) [start/:?]

I got this while working on OptiFine E2 support, with the following mixin, in dev environment:

@Mixin({RenderList.class, VboRenderList.class})
public abstract class MixinRenderList extends ChunkRenderContainer {
    @Dynamic @Shadow private void preRenderRegion(int regionX, int regionY, int regionZ) {
        throw new Error();
    }
}

(the actual mixin had much more stuff in it, but this is the smallest one that shows the issue) I know I forgot to set remap = false here, but mixin actually continued anyway, as if nothing happened. And didn't give me much of a clue about what is wrong (and also I read here that those short errors are generally internal errors)

Mumfrey commented 6 years ago

I don't see the problem here? Your mixin has multiple targets and therefore can't contain remappable members.

Barteks2x commented 6 years ago

My point was that mixin seems to ignore the exception, and doesn't give any further diagnostic information. Making the connection between "remappable" and "multiple target" isn't the first thing I would think of when I see that exception.