JVM_IR: add a test for suspend inline fun with defaults in a class

This is one example of a function replaced by a lowering after
AddContinuationLowering mentioned in the last commit: the lowering that
makes default stubs static is further down. Although this is not a
lambda, calling getOrCreateSuspendFunctionViewIfNeeded on it in the
inliner is fatal all the same.
This commit is contained in:
pyos
2020-03-06 16:25:39 +01:00
committed by Ilmir Usmanov
parent 862cd5665b
commit dc388f3f3a
7 changed files with 50 additions and 0 deletions
@@ -0,0 +1,20 @@
// FILE: test.kt
// WITH_RUNTIME
// WITH_COROUTINES
// NO_CHECK_LAMBDA_INLINING
class C {
suspend inline fun test(default: C = this, lambda: suspend () -> String) = lambda()
}
// FILE: box.kt
import kotlin.coroutines.*
import helpers.*
var res = "fail"
fun box() : String {
suspend {
res = C().test { "OK" }
}.startCoroutine(EmptyContinuation)
return res
}
@@ -3917,6 +3917,11 @@ public class BlackBoxInlineCodegenTestGenerated extends AbstractBlackBoxInlineCo
runTestWithPackageReplacement("compiler/testData/codegen/boxInline/suspend/defaultParameter/defaultValueCrossinline.kt", "kotlin.coroutines");
}
@TestMetadata("defaultValueInClass.kt")
public void testDefaultValueInClass() throws Exception {
runTest("compiler/testData/codegen/boxInline/suspend/defaultParameter/defaultValueInClass.kt");
}
@TestMetadata("defaultValueInlineFromMultiFileFacade.kt")
public void testDefaultValueInlineFromMultiFileFacade_1_2() throws Exception {
runTestWithPackageReplacement("compiler/testData/codegen/boxInline/suspend/defaultParameter/defaultValueInlineFromMultiFileFacade.kt", "kotlin.coroutines.experimental");
@@ -3917,6 +3917,11 @@ public class CompileKotlinAgainstInlineKotlinTestGenerated extends AbstractCompi
runTestWithPackageReplacement("compiler/testData/codegen/boxInline/suspend/defaultParameter/defaultValueCrossinline.kt", "kotlin.coroutines");
}
@TestMetadata("defaultValueInClass.kt")
public void testDefaultValueInClass() throws Exception {
runTest("compiler/testData/codegen/boxInline/suspend/defaultParameter/defaultValueInClass.kt");
}
@TestMetadata("defaultValueInlineFromMultiFileFacade.kt")
public void testDefaultValueInlineFromMultiFileFacade_1_2() throws Exception {
runTestWithPackageReplacement("compiler/testData/codegen/boxInline/suspend/defaultParameter/defaultValueInlineFromMultiFileFacade.kt", "kotlin.coroutines.experimental");
@@ -3807,6 +3807,11 @@ public class IrBlackBoxInlineCodegenTestGenerated extends AbstractIrBlackBoxInli
runTestWithPackageReplacement("compiler/testData/codegen/boxInline/suspend/defaultParameter/defaultValueCrossinline.kt", "kotlin.coroutines");
}
@TestMetadata("defaultValueInClass.kt")
public void testDefaultValueInClass() throws Exception {
runTest("compiler/testData/codegen/boxInline/suspend/defaultParameter/defaultValueInClass.kt");
}
@TestMetadata("defaultValueInlineFromMultiFileFacade.kt")
public void testDefaultValueInlineFromMultiFileFacade_1_3() throws Exception {
runTestWithPackageReplacement("compiler/testData/codegen/boxInline/suspend/defaultParameter/defaultValueInlineFromMultiFileFacade.kt", "kotlin.coroutines");
@@ -3807,6 +3807,11 @@ public class IrCompileKotlinAgainstInlineKotlinTestGenerated extends AbstractIrC
runTestWithPackageReplacement("compiler/testData/codegen/boxInline/suspend/defaultParameter/defaultValueCrossinline.kt", "kotlin.coroutines");
}
@TestMetadata("defaultValueInClass.kt")
public void testDefaultValueInClass() throws Exception {
runTest("compiler/testData/codegen/boxInline/suspend/defaultParameter/defaultValueInClass.kt");
}
@TestMetadata("defaultValueInlineFromMultiFileFacade.kt")
public void testDefaultValueInlineFromMultiFileFacade_1_3() throws Exception {
runTestWithPackageReplacement("compiler/testData/codegen/boxInline/suspend/defaultParameter/defaultValueInlineFromMultiFileFacade.kt", "kotlin.coroutines");
@@ -167,6 +167,11 @@ public class IrInlineSuspendTestsGenerated extends AbstractIrInlineSuspendTests
runTestWithPackageReplacement("compiler/testData/codegen/boxInline/suspend/defaultParameter/defaultValueCrossinline.kt", "kotlin.coroutines");
}
@TestMetadata("defaultValueInClass.kt")
public void testDefaultValueInClass() throws Exception {
runTest("compiler/testData/codegen/boxInline/suspend/defaultParameter/defaultValueInClass.kt");
}
@TestMetadata("defaultValueInlineFromMultiFileFacade.kt")
public void testDefaultValueInlineFromMultiFileFacade_1_3() throws Exception {
runTestWithPackageReplacement("compiler/testData/codegen/boxInline/suspend/defaultParameter/defaultValueInlineFromMultiFileFacade.kt", "kotlin.coroutines");
@@ -167,6 +167,11 @@ public class InlineSuspendTestsGenerated extends AbstractInlineSuspendTests {
runTestWithPackageReplacement("compiler/testData/codegen/boxInline/suspend/defaultParameter/defaultValueCrossinline.kt", "kotlin.coroutines");
}
@TestMetadata("defaultValueInClass.kt")
public void testDefaultValueInClass() throws Exception {
runTest("compiler/testData/codegen/boxInline/suspend/defaultParameter/defaultValueInClass.kt");
}
@TestMetadata("defaultValueInlineFromMultiFileFacade.kt")
public void testDefaultValueInlineFromMultiFileFacade_1_3() throws Exception {
runTestWithPackageReplacement("compiler/testData/codegen/boxInline/suspend/defaultParameter/defaultValueInlineFromMultiFileFacade.kt", "kotlin.coroutines");