diff --git a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java index 4b00197fa3b..5ef41ffb6b0 100644 --- a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java @@ -9818,6 +9818,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT public void testPropertyMetadata() throws Exception { runTest("compiler/testData/codegen/box/delegatedProperty/provideDelegate/propertyMetadata.kt"); } + + @TestMetadata("provideDelegateByExtensionFunction.kt") + public void testProvideDelegateByExtensionFunction() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/provideDelegate/provideDelegateByExtensionFunction.kt"); + } } } diff --git a/compiler/testData/codegen/box/delegatedProperty/provideDelegate/provideDelegateByExtensionFunction.kt b/compiler/testData/codegen/box/delegatedProperty/provideDelegate/provideDelegateByExtensionFunction.kt new file mode 100644 index 00000000000..89a291e8423 --- /dev/null +++ b/compiler/testData/codegen/box/delegatedProperty/provideDelegate/provideDelegateByExtensionFunction.kt @@ -0,0 +1,31 @@ +// IGNORE_BACKEND_FIR: JVM_IR + +import kotlin.reflect.KProperty + +class TypeInference { + val explicitTypes by providerFun() + val withoutTypes: String by providerFun() +} + +class Inv(val x: T) + +fun T.providerFun() = object : DelegateProvider() { + override fun provideDelegate(thisRef: T, property: KProperty<*>): Inv { + return Inv("OK") as Inv + } +} + +operator fun Inv.getValue(thisRef: Any?, property: KProperty<*>): T = x + +abstract class DelegateProvider { + abstract operator fun provideDelegate( + thisRef: T, + property: KProperty<*> + ): Inv +} + +fun box(): String { + val t = TypeInference() + if (t.explicitTypes != t.withoutTypes) return "fail 1" + return t.withoutTypes +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index 7d4deb9400c..26ed564e7ce 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -11043,6 +11043,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { public void testPropertyMetadata() throws Exception { runTest("compiler/testData/codegen/box/delegatedProperty/provideDelegate/propertyMetadata.kt"); } + + @TestMetadata("provideDelegateByExtensionFunction.kt") + public void testProvideDelegateByExtensionFunction() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/provideDelegate/provideDelegateByExtensionFunction.kt"); + } } } diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index b0740b40f59..c5f8dedc0ef 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -11043,6 +11043,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes public void testPropertyMetadata() throws Exception { runTest("compiler/testData/codegen/box/delegatedProperty/provideDelegate/propertyMetadata.kt"); } + + @TestMetadata("provideDelegateByExtensionFunction.kt") + public void testProvideDelegateByExtensionFunction() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/provideDelegate/provideDelegateByExtensionFunction.kt"); + } } } diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index 3d0153e8f26..182d9aa3315 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -9818,6 +9818,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes public void testPropertyMetadata() throws Exception { runTest("compiler/testData/codegen/box/delegatedProperty/provideDelegate/propertyMetadata.kt"); } + + @TestMetadata("provideDelegateByExtensionFunction.kt") + public void testProvideDelegateByExtensionFunction() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/provideDelegate/provideDelegateByExtensionFunction.kt"); + } } } diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt b/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt index 6862ef8f30f..b45ad6a18b6 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt @@ -71,7 +71,7 @@ interface ClassicTypeSystemContext : TypeSystemInferenceExtensionContext, TypeSy override fun SimpleTypeMarker.isStubType(): Boolean { require(this is SimpleType, this::errorMessage) - return this is StubType + return this is AbstractStubType } override fun CapturedTypeMarker.lowerType(): KotlinTypeMarker? { diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java index e07ea919ad8..a7858b36131 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java @@ -8383,6 +8383,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes public void testPropertyMetadata() throws Exception { runTest("compiler/testData/codegen/box/delegatedProperty/provideDelegate/propertyMetadata.kt"); } + + @TestMetadata("provideDelegateByExtensionFunction.kt") + public void testProvideDelegateByExtensionFunction() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/provideDelegate/provideDelegateByExtensionFunction.kt"); + } } } diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java index 6916004b760..55dc09c4d75 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java @@ -8383,6 +8383,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { public void testPropertyMetadata() throws Exception { runTest("compiler/testData/codegen/box/delegatedProperty/provideDelegate/propertyMetadata.kt"); } + + @TestMetadata("provideDelegateByExtensionFunction.kt") + public void testProvideDelegateByExtensionFunction() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/provideDelegate/provideDelegateByExtensionFunction.kt"); + } } } diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index 129610bc9f8..9f5135cec9d 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -8383,6 +8383,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { public void testPropertyMetadata() throws Exception { runTest("compiler/testData/codegen/box/delegatedProperty/provideDelegate/propertyMetadata.kt"); } + + @TestMetadata("provideDelegateByExtensionFunction.kt") + public void testProvideDelegateByExtensionFunction() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/provideDelegate/provideDelegateByExtensionFunction.kt"); + } } }