Support val initialization in non-inline function with EXACTLY_ONCE effect
by generating a box for the value. #KT-26126 Fixed
This commit is contained in:
+18
@@ -3663,6 +3663,24 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/codegen/box/contracts")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
public static class Contracts extends AbstractIrJsCodegenBoxTest {
|
||||
private void runTest(String testDataFilePath) throws Exception {
|
||||
KotlinTestUtils.runTest0(this::doTest, TargetBackend.JS_IR, testDataFilePath);
|
||||
}
|
||||
|
||||
public void testAllFilesPresentInContracts() throws Exception {
|
||||
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/box/contracts"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JS_IR, true);
|
||||
}
|
||||
|
||||
@TestMetadata("exactlyOnceNotInline.kt")
|
||||
public void testExactlyOnceNotInline() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/contracts/exactlyOnceNotInline.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/codegen/box/controlStructures")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
|
||||
Generated
+10
@@ -64,6 +64,16 @@ public class IrJsInlineContractsTestsGenerated extends AbstractIrJsInlineContrac
|
||||
runTest("compiler/testData/codegen/boxInline/contracts/definiteValInitialization.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("exactlyOnceCrossinline.kt")
|
||||
public void testExactlyOnceCrossinline() throws Exception {
|
||||
runTest("compiler/testData/codegen/boxInline/contracts/exactlyOnceCrossinline.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("exactlyOnceNoinline.kt")
|
||||
public void testExactlyOnceNoinline() throws Exception {
|
||||
runTest("compiler/testData/codegen/boxInline/contracts/exactlyOnceNoinline.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("nonLocalReturn.kt")
|
||||
public void testNonLocalReturn() throws Exception {
|
||||
runTest("compiler/testData/codegen/boxInline/contracts/nonLocalReturn.kt");
|
||||
|
||||
+18
@@ -3673,6 +3673,24 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/codegen/box/contracts")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
public static class Contracts extends AbstractJsCodegenBoxTest {
|
||||
private void runTest(String testDataFilePath) throws Exception {
|
||||
KotlinTestUtils.runTest0(this::doTest, TargetBackend.JS, testDataFilePath);
|
||||
}
|
||||
|
||||
public void testAllFilesPresentInContracts() throws Exception {
|
||||
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/box/contracts"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JS, true);
|
||||
}
|
||||
|
||||
@TestMetadata("exactlyOnceNotInline.kt")
|
||||
public void testExactlyOnceNotInline() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/contracts/exactlyOnceNotInline.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("compiler/testData/codegen/box/controlStructures")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
|
||||
Generated
+10
@@ -64,6 +64,16 @@ public class JsInlineContractsTestsGenerated extends AbstractJsInlineContractsTe
|
||||
runTest("compiler/testData/codegen/boxInline/contracts/definiteValInitialization.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("exactlyOnceCrossinline.kt")
|
||||
public void testExactlyOnceCrossinline() throws Exception {
|
||||
runTest("compiler/testData/codegen/boxInline/contracts/exactlyOnceCrossinline.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("exactlyOnceNoinline.kt")
|
||||
public void testExactlyOnceNoinline() throws Exception {
|
||||
runTest("compiler/testData/codegen/boxInline/contracts/exactlyOnceNoinline.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("nonLocalReturn.kt")
|
||||
public void testNonLocalReturn() throws Exception {
|
||||
runTest("compiler/testData/codegen/boxInline/contracts/nonLocalReturn.kt");
|
||||
|
||||
Reference in New Issue
Block a user