FIR: copy nullability when mapping type alias arguments
This commit is contained in:
+6
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
typealias F<X> = (X?) -> X
|
||||
|
||||
fun <T> invoke(f: F<T>) = f(null)
|
||||
|
||||
fun box() = invoke<String> { it ?: "OK" }
|
||||
+6
@@ -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 {
|
||||
|
||||
+6
@@ -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 {
|
||||
|
||||
+5
@@ -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");
|
||||
|
||||
js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java
Generated
+5
@@ -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");
|
||||
|
||||
Generated
+5
@@ -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");
|
||||
|
||||
Generated
+5
@@ -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");
|
||||
|
||||
js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java
Generated
+5
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user