diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java index 31f0d61c8b5..042a77e211b 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java @@ -37780,6 +37780,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/typealias/typeAliasConstructorInSuperCall.kt"); } + @Test + @TestMetadata("typeAliasFunction.kt") + public void testTypeAliasFunction() throws Exception { + runTest("compiler/testData/codegen/box/typealias/typeAliasFunction.kt"); + } + @Test @TestMetadata("typeAliasInAnonymousObjectType.kt") public void testTypeAliasInAnonymousObjectType() throws Exception { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/TypeExpansionUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/TypeExpansionUtils.kt index 2dcf6d80e52..d80ee74cb54 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/TypeExpansionUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/TypeExpansionUtils.kt @@ -85,11 +85,10 @@ private fun mapTypeAliasArguments( val type = (projection as? ConeKotlinTypeProjection)?.type ?: return null val symbol = (type as? ConeTypeParameterType)?.lookupTag?.symbol ?: return super.substituteArgument(projection) val mappedProjection = typeAliasMap[symbol] ?: return super.substituteArgument(projection) - val mappedType = (mappedProjection as? ConeKotlinTypeProjection)?.type ?: return mappedProjection + val mappedType = (mappedProjection as? ConeKotlinTypeProjection)?.type.updateNullabilityIfNeeded(type) + ?: return mappedProjection - @Suppress("MoveVariableDeclarationIntoWhen") - val resultingKind = mappedProjection.kind + projection.kind - return when (resultingKind) { + return when (mappedProjection.kind + projection.kind) { ProjectionKind.STAR -> ConeStarProjection ProjectionKind.IN -> ConeKotlinTypeProjectionIn(mappedType) ProjectionKind.OUT -> ConeKotlinTypeProjectionOut(mappedType) diff --git a/compiler/testData/codegen/box/typealias/typeAliasFunction.kt b/compiler/testData/codegen/box/typealias/typeAliasFunction.kt new file mode 100644 index 00000000000..a585b5a2fef --- /dev/null +++ b/compiler/testData/codegen/box/typealias/typeAliasFunction.kt @@ -0,0 +1,5 @@ +typealias F = (X?) -> X + +fun invoke(f: F) = f(null) + +fun box() = invoke { it ?: "OK" } diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java index 5c84214428f..452f873a2e9 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java @@ -37980,6 +37980,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/typealias/typeAliasConstructorInSuperCall.kt"); } + @Test + @TestMetadata("typeAliasFunction.kt") + public void testTypeAliasFunction() throws Exception { + runTest("compiler/testData/codegen/box/typealias/typeAliasFunction.kt"); + } + @Test @TestMetadata("typeAliasInAnonymousObjectType.kt") public void testTypeAliasInAnonymousObjectType() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index e2cd2b08b9b..da4b3099998 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -37780,6 +37780,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/typealias/typeAliasConstructorInSuperCall.kt"); } + @Test + @TestMetadata("typeAliasFunction.kt") + public void testTypeAliasFunction() throws Exception { + runTest("compiler/testData/codegen/box/typealias/typeAliasFunction.kt"); + } + @Test @TestMetadata("typeAliasInAnonymousObjectType.kt") public void testTypeAliasInAnonymousObjectType() throws Exception { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index baeac9480e1..ab3a7fbb432 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -30439,6 +30439,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/typealias/typeAliasConstructorInSuperCall.kt"); } + @TestMetadata("typeAliasFunction.kt") + public void testTypeAliasFunction() throws Exception { + runTest("compiler/testData/codegen/box/typealias/typeAliasFunction.kt"); + } + @TestMetadata("typeAliasInAnonymousObjectType.kt") public void testTypeAliasInAnonymousObjectType() throws Exception { runTest("compiler/testData/codegen/box/typealias/typeAliasInAnonymousObjectType.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java index 55dc7c08a6f..12a0bfb9bdc 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java @@ -26615,6 +26615,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes runTest("compiler/testData/codegen/box/typealias/typeAliasConstructorInSuperCall.kt"); } + @TestMetadata("typeAliasFunction.kt") + public void testTypeAliasFunction() throws Exception { + runTest("compiler/testData/codegen/box/typealias/typeAliasFunction.kt"); + } + @TestMetadata("typeAliasInAnonymousObjectType.kt") public void testTypeAliasInAnonymousObjectType() throws Exception { runTest("compiler/testData/codegen/box/typealias/typeAliasInAnonymousObjectType.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java index 5f1178e8a57..1d05b3fc486 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java @@ -26100,6 +26100,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/typealias/typeAliasConstructorInSuperCall.kt"); } + @TestMetadata("typeAliasFunction.kt") + public void testTypeAliasFunction() throws Exception { + runTest("compiler/testData/codegen/box/typealias/typeAliasFunction.kt"); + } + @TestMetadata("typeAliasInAnonymousObjectType.kt") public void testTypeAliasInAnonymousObjectType() throws Exception { runTest("compiler/testData/codegen/box/typealias/typeAliasInAnonymousObjectType.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index fe613cfb372..1606898bfa3 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -26065,6 +26065,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/typealias/typeAliasConstructorInSuperCall.kt"); } + @TestMetadata("typeAliasFunction.kt") + public void testTypeAliasFunction() throws Exception { + runTest("compiler/testData/codegen/box/typealias/typeAliasFunction.kt"); + } + @TestMetadata("typeAliasInAnonymousObjectType.kt") public void testTypeAliasInAnonymousObjectType() throws Exception { runTest("compiler/testData/codegen/box/typealias/typeAliasInAnonymousObjectType.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java index 248c615fd3b..4e0931b562e 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java @@ -14381,6 +14381,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest runTest("compiler/testData/codegen/box/typealias/typeAliasConstructorInSuperCall.kt"); } + @TestMetadata("typeAliasFunction.kt") + public void testTypeAliasFunction() throws Exception { + runTest("compiler/testData/codegen/box/typealias/typeAliasFunction.kt"); + } + @TestMetadata("typeAliasInAnonymousObjectType.kt") public void testTypeAliasInAnonymousObjectType() throws Exception { runTest("compiler/testData/codegen/box/typealias/typeAliasInAnonymousObjectType.kt");