Fix for KT-6990: inline reified doesn't inline call in some cases

#KT-6990 Fixed
This commit is contained in:
Michael Bogdanov
2015-10-29 14:48:50 +03:00
parent 33bf314518
commit 34fccc6dae
5 changed files with 33 additions and 0 deletions
@@ -354,6 +354,10 @@ public class InlineCodegen extends CallGenerator {
parentCodegen
);
if (isLambda) {
codegen.propagateChildReifiedTypeParametersUsages(parentCodegen.getReifiedTypeParametersUsages());
}
return createSMAPWithDefaultMapping(expression, parentCodegen.getOrCreateSourceMapper().getResultMappings());
}
@@ -0,0 +1,7 @@
import test.*
class OK
fun box(): String {
return inlineMeIfYouCan<OK>()!!
}
+10
View File
@@ -0,0 +1,10 @@
package test
public inline fun <reified T : Any> inlineMeIfYouCan(): String? =
{
f {
T::class.java.getName()
}
}()
inline fun f(x: () -> String) = x()
@@ -1090,6 +1090,12 @@ public class BlackBoxInlineCodegenTestGenerated extends AbstractBlackBoxInlineCo
doTestMultiFileWithInlineCheck(fileName);
}
@TestMetadata("kt6990.1.kt")
public void testKt6990() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxInline/reified/kt6990.1.kt");
doTestMultiFileWithInlineCheck(fileName);
}
@TestMetadata("kt7017.1.kt")
public void testKt7017() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxInline/reified/kt7017.1.kt");
@@ -1090,6 +1090,12 @@ public class CompileKotlinAgainstInlineKotlinTestGenerated extends AbstractCompi
doBoxTestWithInlineCheck(fileName);
}
@TestMetadata("kt6990.1.kt")
public void testKt6990() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxInline/reified/kt6990.1.kt");
doBoxTestWithInlineCheck(fileName);
}
@TestMetadata("kt7017.1.kt")
public void testKt7017() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxInline/reified/kt7017.1.kt");