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 1f6c8bb60d8..5b87d5a8a35 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 @@ -13334,6 +13334,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/inference/subtypingOfIntersectionIltInsideFlexible.kt"); } + @TestMetadata("suspendExtensionRecevierFromConstraint.kt") + public void testSuspendExtensionRecevierFromConstraint() throws Exception { + runTest("compiler/testData/codegen/box/inference/suspendExtensionRecevierFromConstraint.kt"); + } + @TestMetadata("unsafeVarianceCodegen.kt") public void testUnsafeVarianceCodegen() throws Exception { runTest("compiler/testData/codegen/box/inference/unsafeVarianceCodegen.kt"); diff --git a/compiler/testData/codegen/box/inference/suspendExtensionRecevierFromConstraint.kt b/compiler/testData/codegen/box/inference/suspendExtensionRecevierFromConstraint.kt new file mode 100644 index 00000000000..a5aba2bc44a --- /dev/null +++ b/compiler/testData/codegen/box/inference/suspendExtensionRecevierFromConstraint.kt @@ -0,0 +1,20 @@ +// WITH_RUNTIME +// KJS_WITH_FULL_RUNTIME +// !LANGUAGE: +NewInference + +class ExtensionReceiver +typealias SuspendExtensionFunction = suspend ExtensionReceiver.() -> Unit +suspend fun ExtensionReceiver.extensionMethod() {} + +fun test() { + val map = mutableMapOf() + + map[Unit] = { + extensionMethod() + } +} + +fun box(): String { + test() + return "OK" +} diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index 3929f0699cd..a0b3a74565b 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -14729,6 +14729,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/inference/subtypingOfIntersectionIltInsideFlexible.kt"); } + @TestMetadata("suspendExtensionRecevierFromConstraint.kt") + public void testSuspendExtensionRecevierFromConstraint() throws Exception { + runTest("compiler/testData/codegen/box/inference/suspendExtensionRecevierFromConstraint.kt"); + } + @TestMetadata("unsafeVarianceCodegen.kt") public void testUnsafeVarianceCodegen() throws Exception { runTest("compiler/testData/codegen/box/inference/unsafeVarianceCodegen.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 46c88d294fe..f96437334fd 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -14729,6 +14729,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/inference/subtypingOfIntersectionIltInsideFlexible.kt"); } + @TestMetadata("suspendExtensionRecevierFromConstraint.kt") + public void testSuspendExtensionRecevierFromConstraint() throws Exception { + runTest("compiler/testData/codegen/box/inference/suspendExtensionRecevierFromConstraint.kt"); + } + @TestMetadata("unsafeVarianceCodegen.kt") public void testUnsafeVarianceCodegen() throws Exception { runTest("compiler/testData/codegen/box/inference/unsafeVarianceCodegen.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index 77b09258b10..ac8cda1e820 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -13334,6 +13334,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/inference/subtypingOfIntersectionIltInsideFlexible.kt"); } + @TestMetadata("suspendExtensionRecevierFromConstraint.kt") + public void testSuspendExtensionRecevierFromConstraint() throws Exception { + runTest("compiler/testData/codegen/box/inference/suspendExtensionRecevierFromConstraint.kt"); + } + @TestMetadata("unsafeVarianceCodegen.kt") public void testUnsafeVarianceCodegen() throws Exception { runTest("compiler/testData/codegen/box/inference/unsafeVarianceCodegen.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 0a2eb70aa40..3c213927a07 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/checker/ClassicTypeSystemContext.kt @@ -680,7 +680,7 @@ interface ClassicTypeSystemContext : TypeSystemInferenceExtensionContext, TypeSy override fun KotlinTypeMarker.isExtensionFunctionType(): Boolean { require(this is KotlinType, this::errorMessage) - return this.isExtensionFunctionType + return this.isBuiltinExtensionFunctionalType } override fun KotlinTypeMarker.extractArgumentsForFunctionalTypeOrSubtype(): List { 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 62c5b3c760d..0f67f66bee5 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 @@ -11434,6 +11434,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes runTest("compiler/testData/codegen/box/inference/referenceToCatchParameterFromLambdaExpression.kt"); } + @TestMetadata("suspendExtensionRecevierFromConstraint.kt") + public void testSuspendExtensionRecevierFromConstraint() throws Exception { + runTest("compiler/testData/codegen/box/inference/suspendExtensionRecevierFromConstraint.kt"); + } + @TestMetadata("unsafeVarianceCodegen.kt") public void testUnsafeVarianceCodegen() throws Exception { runTest("compiler/testData/codegen/box/inference/unsafeVarianceCodegen.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 0ffd7405ba5..e1223cb718c 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 @@ -11434,6 +11434,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/inference/referenceToCatchParameterFromLambdaExpression.kt"); } + @TestMetadata("suspendExtensionRecevierFromConstraint.kt") + public void testSuspendExtensionRecevierFromConstraint() throws Exception { + runTest("compiler/testData/codegen/box/inference/suspendExtensionRecevierFromConstraint.kt"); + } + @TestMetadata("unsafeVarianceCodegen.kt") public void testUnsafeVarianceCodegen() throws Exception { runTest("compiler/testData/codegen/box/inference/unsafeVarianceCodegen.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 97f6242fecc..6da0b08db33 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 @@ -11499,6 +11499,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/inference/referenceToCatchParameterFromLambdaExpression.kt"); } + @TestMetadata("suspendExtensionRecevierFromConstraint.kt") + public void testSuspendExtensionRecevierFromConstraint() throws Exception { + runTest("compiler/testData/codegen/box/inference/suspendExtensionRecevierFromConstraint.kt"); + } + @TestMetadata("unsafeVarianceCodegen.kt") public void testUnsafeVarianceCodegen() throws Exception { runTest("compiler/testData/codegen/box/inference/unsafeVarianceCodegen.kt");