FIR: don't generate extension callable reference without receiver
This commit is contained in:
committed by
teamcityserver
parent
bcfd970ac5
commit
b2d020606e
+2
-2
@@ -36,7 +36,7 @@ FILE: referenceToExtension.kt
|
||||
|
||||
public final fun test_1(): R|kotlin/Unit| {
|
||||
lval memberValRef: R|kotlin/reflect/KProperty1<GenericTest.B<*>, GenericTest.A<CapturedType(*)>>| = Q|GenericTest.B|::R|SubstitutionOverride</GenericTest.B.memberVal: R|GenericTest.A<CapturedType(*)>|>|
|
||||
lval memberFunRef: R|@ExtensionFunctionType kotlin/reflect/KFunction1<GenericTest.B<*>, GenericTest.A<CapturedType(*)>>| = Q|GenericTest.B|::R|SubstitutionOverride</GenericTest.B.memberFun: R|GenericTest.A<CapturedType(*)>|>|
|
||||
lval memberFunRef: R|kotlin/reflect/KFunction1<GenericTest.B<*>, GenericTest.A<CapturedType(*)>>| = Q|GenericTest.B|::R|SubstitutionOverride</GenericTest.B.memberFun: R|GenericTest.A<CapturedType(*)>|>|
|
||||
}
|
||||
|
||||
public final fun test_2(): R|kotlin/Unit| {
|
||||
@@ -87,7 +87,7 @@ FILE: referenceToExtension.kt
|
||||
|
||||
public final fun test_2(): R|kotlin/Unit| {
|
||||
lval memberValRef: R|kotlin/reflect/KProperty1<NoGenericTest.B, NoGenericTest.A>| = Q|NoGenericTest.B|::R|/NoGenericTest.B.memberVal|
|
||||
lval memberFunRef: R|@ExtensionFunctionType kotlin/reflect/KFunction1<NoGenericTest.B, NoGenericTest.A>| = Q|NoGenericTest.B|::R|/NoGenericTest.B.memberFun|
|
||||
lval memberFunRef: R|kotlin/reflect/KFunction1<NoGenericTest.B, NoGenericTest.A>| = Q|NoGenericTest.B|::R|/NoGenericTest.B.memberFun|
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+4
-1
@@ -112,6 +112,9 @@ private fun buildReflectionType(
|
||||
)
|
||||
|
||||
val parameters = mutableListOf<ConeKotlinType>()
|
||||
if (fir.receiverTypeRef == null && receiverType != null) {
|
||||
parameters += receiverType
|
||||
}
|
||||
|
||||
val returnType = callableReferenceAdaptation?.let {
|
||||
parameters += it.argumentTypes
|
||||
@@ -128,7 +131,7 @@ private fun buildReflectionType(
|
||||
callableReferenceAdaptation?.suspendConversionStrategy == SuspendConversionStrategy.SUSPEND_CONVERSION
|
||||
return createFunctionalType(
|
||||
parameters,
|
||||
receiverType = receiverType,
|
||||
receiverType = receiverType.takeIf { fir.receiverTypeRef != null },
|
||||
rawReturnType = returnType,
|
||||
isKFunctionType = true,
|
||||
isSuspend = isSuspend
|
||||
|
||||
Reference in New Issue
Block a user