Package net.fabricmc.loom.util
Class SyntheticParameterClassVisitor
java.lang.Object
org.objectweb.asm.ClassVisitor
net.fabricmc.loom.util.SyntheticParameterClassVisitor
public class SyntheticParameterClassVisitor
extends org.objectweb.asm.ClassVisitor
ProGuard has a bug where parameter annotations are applied incorrectly in the presence of
synthetic arguments. This causes javac to balk when trying to load affected classes.
We use several heuristics to guess what the synthetic arguments may be for a particular constructor. We then check if the constructor matches our guess, and if so, offset all parameter annotations.
-
Field Summary
Fields inherited from class org.objectweb.asm.ClassVisitor
api, cv -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidvisit(int version, int access, String name, String signature, String superName, String[] interfaces) voidvisitInnerClass(String name, String outerName, String innerName, int access) org.objectweb.asm.MethodVisitorvisitMethod(int access, String name, String descriptor, String signature, String[] exceptions) Methods inherited from class org.objectweb.asm.ClassVisitor
getDelegate, visitAnnotation, visitAttribute, visitEnd, visitField, visitModule, visitNestHost, visitNestMember, visitOuterClass, visitPermittedSubclass, visitRecordComponent, visitSource, visitTypeAnnotation
-
Constructor Details
-
SyntheticParameterClassVisitor
public SyntheticParameterClassVisitor(int api, org.objectweb.asm.ClassVisitor cv)
-
-
Method Details
-
visit
public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) - Overrides:
visitin classorg.objectweb.asm.ClassVisitor
-
visitInnerClass
- Overrides:
visitInnerClassin classorg.objectweb.asm.ClassVisitor
-
visitMethod
public org.objectweb.asm.MethodVisitor visitMethod(int access, String name, String descriptor, String signature, String[] exceptions) - Overrides:
visitMethodin classorg.objectweb.asm.ClassVisitor
-