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| {
|
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 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| {
|
public final fun test_2(): R|kotlin/Unit| {
|
||||||
@@ -87,7 +87,7 @@ FILE: referenceToExtension.kt
|
|||||||
|
|
||||||
public final fun test_2(): R|kotlin/Unit| {
|
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 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>()
|
val parameters = mutableListOf<ConeKotlinType>()
|
||||||
|
if (fir.receiverTypeRef == null && receiverType != null) {
|
||||||
|
parameters += receiverType
|
||||||
|
}
|
||||||
|
|
||||||
val returnType = callableReferenceAdaptation?.let {
|
val returnType = callableReferenceAdaptation?.let {
|
||||||
parameters += it.argumentTypes
|
parameters += it.argumentTypes
|
||||||
@@ -128,7 +131,7 @@ private fun buildReflectionType(
|
|||||||
callableReferenceAdaptation?.suspendConversionStrategy == SuspendConversionStrategy.SUSPEND_CONVERSION
|
callableReferenceAdaptation?.suspendConversionStrategy == SuspendConversionStrategy.SUSPEND_CONVERSION
|
||||||
return createFunctionalType(
|
return createFunctionalType(
|
||||||
parameters,
|
parameters,
|
||||||
receiverType = receiverType,
|
receiverType = receiverType.takeIf { fir.receiverTypeRef != null },
|
||||||
rawReturnType = returnType,
|
rawReturnType = returnType,
|
||||||
isKFunctionType = true,
|
isKFunctionType = true,
|
||||||
isSuspend = isSuspend
|
isSuspend = isSuspend
|
||||||
|
|||||||
Reference in New Issue
Block a user