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");
|
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
|
@Test
|
||||||
@TestMetadata("typeAliasInAnonymousObjectType.kt")
|
@TestMetadata("typeAliasInAnonymousObjectType.kt")
|
||||||
public void testTypeAliasInAnonymousObjectType() throws Exception {
|
public void testTypeAliasInAnonymousObjectType() throws Exception {
|
||||||
|
|||||||
@@ -85,11 +85,10 @@ private fun mapTypeAliasArguments(
|
|||||||
val type = (projection as? ConeKotlinTypeProjection)?.type ?: return null
|
val type = (projection as? ConeKotlinTypeProjection)?.type ?: return null
|
||||||
val symbol = (type as? ConeTypeParameterType)?.lookupTag?.symbol ?: return super.substituteArgument(projection)
|
val symbol = (type as? ConeTypeParameterType)?.lookupTag?.symbol ?: return super.substituteArgument(projection)
|
||||||
val mappedProjection = typeAliasMap[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")
|
return when (mappedProjection.kind + projection.kind) {
|
||||||
val resultingKind = mappedProjection.kind + projection.kind
|
|
||||||
return when (resultingKind) {
|
|
||||||
ProjectionKind.STAR -> ConeStarProjection
|
ProjectionKind.STAR -> ConeStarProjection
|
||||||
ProjectionKind.IN -> ConeKotlinTypeProjectionIn(mappedType)
|
ProjectionKind.IN -> ConeKotlinTypeProjectionIn(mappedType)
|
||||||
ProjectionKind.OUT -> ConeKotlinTypeProjectionOut(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");
|
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
|
@Test
|
||||||
@TestMetadata("typeAliasInAnonymousObjectType.kt")
|
@TestMetadata("typeAliasInAnonymousObjectType.kt")
|
||||||
public void testTypeAliasInAnonymousObjectType() throws Exception {
|
public void testTypeAliasInAnonymousObjectType() throws Exception {
|
||||||
|
|||||||
+6
@@ -37780,6 +37780,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
runTest("compiler/testData/codegen/box/typealias/typeAliasConstructorInSuperCall.kt");
|
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
|
@Test
|
||||||
@TestMetadata("typeAliasInAnonymousObjectType.kt")
|
@TestMetadata("typeAliasInAnonymousObjectType.kt")
|
||||||
public void testTypeAliasInAnonymousObjectType() throws Exception {
|
public void testTypeAliasInAnonymousObjectType() throws Exception {
|
||||||
|
|||||||
+5
@@ -30439,6 +30439,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
runTest("compiler/testData/codegen/box/typealias/typeAliasConstructorInSuperCall.kt");
|
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")
|
@TestMetadata("typeAliasInAnonymousObjectType.kt")
|
||||||
public void testTypeAliasInAnonymousObjectType() throws Exception {
|
public void testTypeAliasInAnonymousObjectType() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/typealias/typeAliasInAnonymousObjectType.kt");
|
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");
|
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")
|
@TestMetadata("typeAliasInAnonymousObjectType.kt")
|
||||||
public void testTypeAliasInAnonymousObjectType() throws Exception {
|
public void testTypeAliasInAnonymousObjectType() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/typealias/typeAliasInAnonymousObjectType.kt");
|
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");
|
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")
|
@TestMetadata("typeAliasInAnonymousObjectType.kt")
|
||||||
public void testTypeAliasInAnonymousObjectType() throws Exception {
|
public void testTypeAliasInAnonymousObjectType() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/typealias/typeAliasInAnonymousObjectType.kt");
|
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");
|
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")
|
@TestMetadata("typeAliasInAnonymousObjectType.kt")
|
||||||
public void testTypeAliasInAnonymousObjectType() throws Exception {
|
public void testTypeAliasInAnonymousObjectType() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/typealias/typeAliasInAnonymousObjectType.kt");
|
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");
|
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")
|
@TestMetadata("typeAliasInAnonymousObjectType.kt")
|
||||||
public void testTypeAliasInAnonymousObjectType() throws Exception {
|
public void testTypeAliasInAnonymousObjectType() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/typealias/typeAliasInAnonymousObjectType.kt");
|
runTest("compiler/testData/codegen/box/typealias/typeAliasInAnonymousObjectType.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user