[Native] Always cast expression to the expected type after inline
Right now, during the process of inlining, the compiler erases types. Because of that, we can end up with some random type (for example, `Any`) where the concrete type was expected (for example, `Int`). Compiler must insert a cast in the required places. #KT-66017 Fixed
This commit is contained in:
+18
@@ -18811,12 +18811,30 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest {
|
||||
runTest("compiler/testData/codegen/box/inline/inlineCtor.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("inlinedLambdaWithErasedParamType.kt")
|
||||
public void testInlinedLambdaWithErasedParamType() {
|
||||
runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("innerInlineFunCapturesOuter.kt")
|
||||
public void testInnerInlineFunCapturesOuter() {
|
||||
runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt66017.kt")
|
||||
public void testKt66017() {
|
||||
runTest("compiler/testData/codegen/box/inline/kt66017.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt66017_inlineFromTheSameModule.kt")
|
||||
public void testKt66017_inlineFromTheSameModule() {
|
||||
runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("lambdaAsAny.kt")
|
||||
public void testLambdaAsAny() {
|
||||
|
||||
Generated
+18
@@ -18811,12 +18811,30 @@ public class FirJsES6CodegenBoxTestGenerated extends AbstractFirJsES6CodegenBoxT
|
||||
runTest("compiler/testData/codegen/box/inline/inlineCtor.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("inlinedLambdaWithErasedParamType.kt")
|
||||
public void testInlinedLambdaWithErasedParamType() {
|
||||
runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("innerInlineFunCapturesOuter.kt")
|
||||
public void testInnerInlineFunCapturesOuter() {
|
||||
runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt66017.kt")
|
||||
public void testKt66017() {
|
||||
runTest("compiler/testData/codegen/box/inline/kt66017.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt66017_inlineFromTheSameModule.kt")
|
||||
public void testKt66017_inlineFromTheSameModule() {
|
||||
runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("lambdaAsAny.kt")
|
||||
public void testLambdaAsAny() {
|
||||
|
||||
+18
@@ -18811,12 +18811,30 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
||||
runTest("compiler/testData/codegen/box/inline/inlineCtor.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("inlinedLambdaWithErasedParamType.kt")
|
||||
public void testInlinedLambdaWithErasedParamType() {
|
||||
runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("innerInlineFunCapturesOuter.kt")
|
||||
public void testInnerInlineFunCapturesOuter() {
|
||||
runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt66017.kt")
|
||||
public void testKt66017() {
|
||||
runTest("compiler/testData/codegen/box/inline/kt66017.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt66017_inlineFromTheSameModule.kt")
|
||||
public void testKt66017_inlineFromTheSameModule() {
|
||||
runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("lambdaAsAny.kt")
|
||||
public void testLambdaAsAny() {
|
||||
|
||||
+18
@@ -18811,12 +18811,30 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes
|
||||
runTest("compiler/testData/codegen/box/inline/inlineCtor.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("inlinedLambdaWithErasedParamType.kt")
|
||||
public void testInlinedLambdaWithErasedParamType() {
|
||||
runTest("compiler/testData/codegen/box/inline/inlinedLambdaWithErasedParamType.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("innerInlineFunCapturesOuter.kt")
|
||||
public void testInnerInlineFunCapturesOuter() {
|
||||
runTest("compiler/testData/codegen/box/inline/innerInlineFunCapturesOuter.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt66017.kt")
|
||||
public void testKt66017() {
|
||||
runTest("compiler/testData/codegen/box/inline/kt66017.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("kt66017_inlineFromTheSameModule.kt")
|
||||
public void testKt66017_inlineFromTheSameModule() {
|
||||
runTest("compiler/testData/codegen/box/inline/kt66017_inlineFromTheSameModule.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("lambdaAsAny.kt")
|
||||
public void testLambdaAsAny() {
|
||||
|
||||
Reference in New Issue
Block a user