@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.backend.common.ir.allOverridden
9
9
import org.jetbrains.kotlin.backend.common.ir.isFinalClass
10
10
import org.jetbrains.kotlin.backend.common.lower.parents
11
11
import org.jetbrains.kotlin.backend.common.lower.parentsWithSelf
12
- import org.jetbrains.kotlin.backend.jvm.ir.getJvmNameFromAnnotation
13
12
import org.jetbrains.kotlin.backend.jvm.ir.propertyIfAccessor
14
13
import org.jetbrains.kotlin.builtins.StandardNames
15
14
import org.jetbrains.kotlin.descriptors.*
@@ -996,7 +995,7 @@ open class KotlinUsesExtractor(
996
995
getFunctionTypeParameters(f),
997
996
classTypeArgsIncludingOuterClasses,
998
997
overridesCollectionsMethodWithAlteredParameterTypes(f),
999
- getJavaMethod (f),
998
+ getJavaCallable (f),
1000
999
! hasWildcardSuppressionAnnotation(f)
1001
1000
)
1002
1001
@@ -1028,7 +1027,7 @@ open class KotlinUsesExtractor(
1028
1027
// parameter erasure to match the way this class will appear to an external consumer of the .class file.
1029
1028
overridesCollectionsMethod : Boolean ,
1030
1029
// The Java signature of this callable, if known.
1031
- javaSignature : JavaMethod ? ,
1030
+ javaSignature : JavaMember ? ,
1032
1031
// If true, Java wildcards implied by Kotlin type parameter variance should be added by default to this function's value parameters' types.
1033
1032
// (Return-type wildcard addition is always off by default)
1034
1033
addParameterWildcardsByDefault : Boolean ,
@@ -1056,7 +1055,7 @@ open class KotlinUsesExtractor(
1056
1055
// If this has happened, erase the type again to get the correct Java signature.
1057
1056
val maybeAmendedForCollections = if (overridesCollectionsMethod) eraseCollectionsMethodParameterType(it.value.type, name, it.index) else it.value.type
1058
1057
// Add any wildcard types that the Kotlin compiler would add in the Java lowering of this function:
1059
- val withAddedWildcards = addJavaLoweringWildcards(maybeAmendedForCollections, addParameterWildcardsByDefault, javaSignature?.let { sig -> sig.valueParameters[ it.index].type })
1058
+ val withAddedWildcards = addJavaLoweringWildcards(maybeAmendedForCollections, addParameterWildcardsByDefault, javaSignature?.let { sig -> getJavaValueParameterType( sig, it.index) })
1060
1059
// Now substitute any class type parameters in:
1061
1060
val maybeSubbed = withAddedWildcards.substituteTypeAndArguments(substitutionMap, TypeContext .OTHER , pluginContext)
1062
1061
// Finally, mimic the Java extractor's behaviour by naming functions with type parameters for their erased types;
@@ -1103,7 +1102,13 @@ open class KotlinUsesExtractor(
1103
1102
}
1104
1103
1105
1104
@OptIn(ObsoleteDescriptorBasedAPI ::class )
1106
- fun getJavaMethod (f : IrFunction ) = (f.descriptor.source as ? JavaSourceElement )?.javaElement as ? JavaMethod
1105
+ fun getJavaCallable (f : IrFunction ) = (f.descriptor.source as ? JavaSourceElement )?.javaElement as ? JavaMember
1106
+
1107
+ fun getJavaValueParameterType (m : JavaMember , idx : Int ) = when (m) {
1108
+ is JavaMethod -> m.valueParameters[idx].type
1109
+ is JavaConstructor -> m.valueParameters[idx].type
1110
+ else -> null
1111
+ }
1107
1112
1108
1113
fun hasWildcardSuppressionAnnotation (d : IrDeclaration ) =
1109
1114
d.hasAnnotation(jvmWildcardSuppressionAnnotaton) ||
0 commit comments