diff --git a/compiler/testData/diagnostics/testsWithJvmBackend/indirectInlineCycle.kt b/compiler/testData/diagnostics/testsWithJvmBackend/indirectInlineCycle.kt index 6a33947f1f9..b8301ceb79f 100644 --- a/compiler/testData/diagnostics/testsWithJvmBackend/indirectInlineCycle.kt +++ b/compiler/testData/diagnostics/testsWithJvmBackend/indirectInlineCycle.kt @@ -1,5 +1,5 @@ // !RENDER_DIAGNOSTICS_FULL_TEXT - +// TARGET_BACKEND: JVM_OLD inline fun inlineFun1(crossinline p: () -> Unit) { object { fun method() { inlineFun2(p) } diff --git a/compiler/testData/diagnostics/testsWithJvmBackend/indirectInlineCycle_ir.diag.txt b/compiler/testData/diagnostics/testsWithJvmBackend/indirectInlineCycle_ir.diag.txt new file mode 100644 index 00000000000..fe28b9dec90 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJvmBackend/indirectInlineCycle_ir.diag.txt @@ -0,0 +1,6 @@ +/indirectInlineCycle_ir.kt:8:24: error: the 'inlineFun2' invocation is a part of inline cycle + fun method() { inlineFun2(p) } + ^ +/indirectInlineCycle_ir.kt:13:5: error: the 'inlineFun1' invocation is a part of inline cycle + inlineFun1(p) + ^ diff --git a/compiler/testData/diagnostics/testsWithJvmBackend/indirectInlineCycle_ir.kt b/compiler/testData/diagnostics/testsWithJvmBackend/indirectInlineCycle_ir.kt new file mode 100644 index 00000000000..c88bfbd2e31 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJvmBackend/indirectInlineCycle_ir.kt @@ -0,0 +1,11 @@ +// !RENDER_DIAGNOSTICS_FULL_TEXT +// TARGET_BACKEND: JVM_IR +inline fun inlineFun1(crossinline p: () -> Unit) { + object { + fun method() { inlineFun2(p) } + } +} + +inline fun inlineFun2(crossinline p: () -> Unit) { + inlineFun1(p) +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithJvmBackend/indirectInlineCycle_ir.txt b/compiler/testData/diagnostics/testsWithJvmBackend/indirectInlineCycle_ir.txt new file mode 100644 index 00000000000..7ffee00a6e3 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJvmBackend/indirectInlineCycle_ir.txt @@ -0,0 +1,4 @@ +package + +public inline fun inlineFun1(/*0*/ crossinline p: () -> kotlin.Unit): kotlin.Unit +public inline fun inlineFun2(/*0*/ crossinline p: () -> kotlin.Unit): kotlin.Unit diff --git a/compiler/testData/diagnostics/testsWithJvmBackend/inlineCycle.kt b/compiler/testData/diagnostics/testsWithJvmBackend/inlineCycle.kt index 00e19237fab..f3608f2c132 100644 --- a/compiler/testData/diagnostics/testsWithJvmBackend/inlineCycle.kt +++ b/compiler/testData/diagnostics/testsWithJvmBackend/inlineCycle.kt @@ -1,5 +1,5 @@ // !RENDER_DIAGNOSTICS_FULL_TEXT - +// TARGET_BACKEND: JVM_OLD inline fun inlineFun1(p: () -> Unit) { p() inlineFun2(p) diff --git a/compiler/testData/diagnostics/testsWithJvmBackend/inlineCycle_ir.diag.txt b/compiler/testData/diagnostics/testsWithJvmBackend/inlineCycle_ir.diag.txt new file mode 100644 index 00000000000..8c763cd207d --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJvmBackend/inlineCycle_ir.diag.txt @@ -0,0 +1,6 @@ +/inlineCycle_ir.kt:8:5: error: the 'inlineFun2' invocation is a part of inline cycle + inlineFun2(p) + ^ +/inlineCycle_ir.kt:13:5: error: the 'inlineFun1' invocation is a part of inline cycle + inlineFun1(p) + ^ diff --git a/compiler/testData/diagnostics/testsWithJvmBackend/inlineCycle_ir.kt b/compiler/testData/diagnostics/testsWithJvmBackend/inlineCycle_ir.kt new file mode 100644 index 00000000000..073f73911ec --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJvmBackend/inlineCycle_ir.kt @@ -0,0 +1,11 @@ +// !RENDER_DIAGNOSTICS_FULL_TEXT +// TARGET_BACKEND: JVM_IR +inline fun inlineFun1(p: () -> Unit) { + p() + inlineFun2(p) +} + +inline fun inlineFun2(p: () -> Unit) { + p() + inlineFun1(p) +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithJvmBackend/inlineCycle_ir.txt b/compiler/testData/diagnostics/testsWithJvmBackend/inlineCycle_ir.txt new file mode 100644 index 00000000000..66a2506dc5e --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJvmBackend/inlineCycle_ir.txt @@ -0,0 +1,4 @@ +package + +public inline fun inlineFun1(/*0*/ p: () -> kotlin.Unit): kotlin.Unit +public inline fun inlineFun2(/*0*/ p: () -> kotlin.Unit): kotlin.Unit diff --git a/compiler/testData/diagnostics/testsWithJvmBackend/suspendInlineCycle_ir.diag.txt b/compiler/testData/diagnostics/testsWithJvmBackend/suspendInlineCycle_ir.diag.txt new file mode 100644 index 00000000000..aca5206c7fb --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJvmBackend/suspendInlineCycle_ir.diag.txt @@ -0,0 +1,6 @@ +/suspendInlineCycle_ir.kt:8:5: error: the 'inlineFun2' invocation is a part of inline cycle + inlineFun2(p) + ^ +/suspendInlineCycle_ir.kt:13:5: error: the 'inlineFun1' invocation is a part of inline cycle + inlineFun1(p) + ^ diff --git a/compiler/testData/diagnostics/testsWithJvmBackend/suspendInlineCycle_ir.kt b/compiler/testData/diagnostics/testsWithJvmBackend/suspendInlineCycle_ir.kt new file mode 100644 index 00000000000..f70e37d5fcb --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJvmBackend/suspendInlineCycle_ir.kt @@ -0,0 +1,11 @@ +// !RENDER_DIAGNOSTICS_FULL_TEXT +// TARGET_BACKEND: JVM_IR +suspend inline fun inlineFun1(p: () -> Unit) { + p() + inlineFun2(p) +} + +suspend inline fun inlineFun2(p: () -> Unit) { + p() + inlineFun1(p) +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithJvmBackend/suspendInlineCycle_ir.txt b/compiler/testData/diagnostics/testsWithJvmBackend/suspendInlineCycle_ir.txt new file mode 100644 index 00000000000..bc22b1eda1a --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJvmBackend/suspendInlineCycle_ir.txt @@ -0,0 +1,4 @@ +package + +public suspend inline fun inlineFun1(/*0*/ p: () -> kotlin.Unit): kotlin.Unit +public suspend inline fun inlineFun2(/*0*/ p: () -> kotlin.Unit): kotlin.Unit diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithJvmIrBackendGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithJvmIrBackendGenerated.java index f4fd5284928..cdd1e2f3124 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithJvmIrBackendGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithJvmIrBackendGenerated.java @@ -29,14 +29,19 @@ public class DiagnosticsTestWithJvmIrBackendGenerated extends AbstractDiagnostic KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); } - @TestMetadata("indirectInlineCycle.kt") - public void testIndirectInlineCycle() throws Exception { - runTest("compiler/testData/diagnostics/testsWithJvmBackend/indirectInlineCycle.kt"); + @TestMetadata("indirectInlineCycle_ir.kt") + public void testIndirectInlineCycle_ir() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJvmBackend/indirectInlineCycle_ir.kt"); } - @TestMetadata("inlineCycle.kt") - public void testInlineCycle() throws Exception { - runTest("compiler/testData/diagnostics/testsWithJvmBackend/inlineCycle.kt"); + @TestMetadata("inlineCycle_ir.kt") + public void testInlineCycle_ir() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJvmBackend/inlineCycle_ir.kt"); + } + + @TestMetadata("suspendInlineCycle_ir.kt") + public void testSuspendInlineCycle_ir() throws Exception { + runTest("compiler/testData/diagnostics/testsWithJvmBackend/suspendInlineCycle_ir.kt"); } @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature")