[FIR] Fix extension property reference resolution
On type with star projection #KT-44372 Fixed
This commit is contained in:
committed by
teamcityserver
parent
2b4ea8e6e7
commit
ddc9c1bd1b
+2
-2
@@ -40,8 +40,8 @@ FILE: referenceToExtension.kt
|
||||
}
|
||||
|
||||
public final fun test_2(): R|kotlin/Unit| {
|
||||
lval extensionValRef: <ERROR TYPE REF: Unresolved reference: extensionVal> = Q|GenericTest.B|::<Unresolved reference: extensionVal>#
|
||||
lval extensionFunRef: <ERROR TYPE REF: Unresolved reference: extensionFun> = Q|GenericTest.B|::<Unresolved reference: extensionFun>#
|
||||
lval extensionValRef: R|kotlin/reflect/KProperty1<GenericTest.B<*>, GenericTest.A<CapturedType(*)>>| = Q|GenericTest.B|::R|/GenericTest.extensionVal<kotlin/Any?>|
|
||||
lval extensionFunRef: R|@ExtensionFunctionType kotlin/reflect/KFunction1<GenericTest.B<*>, GenericTest.A<CapturedType(*)>>| = Q|GenericTest.B|::R|/GenericTest.extensionFun<kotlin/Any?>|
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -17,8 +17,8 @@ class GenericTest {
|
||||
}
|
||||
|
||||
fun test_2() {
|
||||
val extensionValRef = B<*>::<!UNRESOLVED_REFERENCE!>extensionVal<!>
|
||||
val extensionFunRef = B<*>::<!UNRESOLVED_REFERENCE!>extensionFun<!>
|
||||
val extensionValRef = B<*>::<!EXTENSION_IN_CLASS_REFERENCE_NOT_ALLOWED!>extensionVal<!>
|
||||
val extensionFunRef = B<*>::<!EXTENSION_IN_CLASS_REFERENCE_NOT_ALLOWED!>extensionFun<!>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+6
@@ -3339,6 +3339,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
||||
runTest("compiler/testData/codegen/box/callableReference/function/extensionFromTopLevelUnitOneStringArg.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("extensionProperty.kt")
|
||||
public void testExtensionProperty() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/callableReference/function/extensionProperty.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("genericCallableReferenceArguments.kt")
|
||||
public void testGenericCallableReferenceArguments() throws Exception {
|
||||
|
||||
+2
-1
@@ -66,7 +66,8 @@ internal object CheckCallableReferenceExpectedType : CheckerStage() {
|
||||
?.let(candidate.substitutor::substituteOrSelf)
|
||||
|
||||
if (resultingReceiverType != null && declarationReceiverType != null) {
|
||||
addSubtypeConstraint(resultingReceiverType, declarationReceiverType, position)
|
||||
val capturedReceiver = context.inferenceComponents.ctx.captureFromExpression(resultingReceiverType) ?: resultingReceiverType
|
||||
addSubtypeConstraint(capturedReceiver, declarationReceiverType, position)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user