Update synthetic parameter processing logic according to ASM 7 changes
#KT-27774 Fixed
This commit is contained in:
+1
-1
@@ -60,7 +60,7 @@ internal class AnnotationsAndParameterCollectorMethodVisitor(
|
||||
)
|
||||
|
||||
override fun visitParameterAnnotation(parameter: Int, desc: String, visible: Boolean): AnnotationVisitor? {
|
||||
val index = parameter - parametersToSkipNumber
|
||||
val index = if (Opcodes.API_VERSION <= Opcodes.ASM6) parameter - parametersToSkipNumber else parameter
|
||||
if (index < 0) return null
|
||||
|
||||
val annotations =
|
||||
|
||||
+15
-1
@@ -252,7 +252,12 @@ public abstract class FileBasedKotlinClass implements KotlinJvmBinaryClass {
|
||||
MethodAnnotationVisitor v = memberVisitor.visitMethod(Name.identifier(name), desc);
|
||||
if (v == null) return null;
|
||||
|
||||
int methodParamCount = Type.getArgumentTypes(desc).length;
|
||||
return new MethodVisitor(ASM5) {
|
||||
|
||||
private int visibleAnnotableParameterCount = methodParamCount;
|
||||
private int invisibleAnnotableParameterCount = methodParamCount;
|
||||
|
||||
@Override
|
||||
public org.jetbrains.org.objectweb.asm.AnnotationVisitor visitAnnotation(@NotNull String desc, boolean visible) {
|
||||
return convertAnnotationVisitor(v, desc, innerClasses);
|
||||
@@ -260,10 +265,19 @@ public abstract class FileBasedKotlinClass implements KotlinJvmBinaryClass {
|
||||
|
||||
@Override
|
||||
public org.jetbrains.org.objectweb.asm.AnnotationVisitor visitParameterAnnotation(int parameter, @NotNull String desc, boolean visible) {
|
||||
AnnotationArgumentVisitor av = v.visitParameterAnnotation(parameter, resolveNameByDesc(desc, innerClasses), SourceElement.NO_SOURCE);
|
||||
int parameterIndex = parameter + methodParamCount - (visible ? visibleAnnotableParameterCount : invisibleAnnotableParameterCount);
|
||||
AnnotationArgumentVisitor av = v.visitParameterAnnotation(parameterIndex, resolveNameByDesc(desc, innerClasses), SourceElement.NO_SOURCE);
|
||||
return av == null ? null : convertAnnotationVisitor(av, innerClasses);
|
||||
}
|
||||
|
||||
public void visitAnnotableParameterCount(int parameterCount, boolean visible) {
|
||||
if (visible)
|
||||
visibleAnnotableParameterCount = parameterCount;
|
||||
else {
|
||||
invisibleAnnotableParameterCount = parameterCount;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitEnd() {
|
||||
v.visitEnd();
|
||||
|
||||
Reference in New Issue
Block a user