diff --git a/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt b/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt index d7699e65124..92eb7ffbf27 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.generators.tests import org.jetbrains.kotlin.generators.generateTestGroupSuiteWithJUnit5 import org.jetbrains.kotlin.generators.impl.generateTestGroupSuite import org.jetbrains.kotlin.incremental.AbstractJsIrES6InvalidationTest +import org.jetbrains.kotlin.incremental.AbstractJsIrInvalidationWithPLTest import org.jetbrains.kotlin.incremental.AbstractJsIrInvalidationTest import org.jetbrains.kotlin.incremental.AbstractJsFirInvalidationTest import org.jetbrains.kotlin.js.test.* @@ -82,6 +83,10 @@ fun main(args: Array) { testClass { model("incremental/invalidation/", pattern = "^([^_](.+))$", targetBackend = TargetBackend.JS_IR, recursive = false) } + + testClass { + model("incremental/invalidationWithPL/", pattern = "^([^_](.+))$", targetBackend = TargetBackend.JS_IR, recursive = false) + } } testGroup("js/js.tests/tests-gen", "js/js.translator/testData", testRunnerMethodName = "runTest0") { diff --git a/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt b/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt index b8aa02f57f9..68fc25f91f4 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt @@ -121,7 +121,7 @@ abstract class AbstractInvalidationTest(private val targetBackend: TargetBackend return File(File(buildDir, moduleName), "$moduleName.klib") } - private fun createConfiguration(moduleName: String, language: List, moduleKind: ModuleKind): CompilerConfiguration { + protected open fun createConfiguration(moduleName: String, language: List, moduleKind: ModuleKind): CompilerConfiguration { val copy = environment.configuration.copy() copy.put(CommonConfigurationKeys.MODULE_NAME, moduleName) copy.put(JSConfigurationKeys.GENERATE_DTS, true) diff --git a/js/js.tests/test/org/jetbrains/kotlin/incremental/IrAbstractInvalidationTest.kt b/js/js.tests/test/org/jetbrains/kotlin/incremental/IrAbstractInvalidationTest.kt index b20498812c4..000bdad329c 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/incremental/IrAbstractInvalidationTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/incremental/IrAbstractInvalidationTest.kt @@ -11,12 +11,35 @@ import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.ir.backend.js.* import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl +import org.jetbrains.kotlin.ir.linkage.partial.PartialLinkageConfig +import org.jetbrains.kotlin.ir.linkage.partial.PartialLinkageLogLevel +import org.jetbrains.kotlin.ir.linkage.partial.PartialLinkageMode +import org.jetbrains.kotlin.ir.linkage.partial.setupPartialLinkageConfig import org.jetbrains.kotlin.ir.symbols.IrSymbol +import org.jetbrains.kotlin.serialization.js.ModuleKind import org.jetbrains.kotlin.test.TargetBackend import java.io.File -abstract class AbstractJsIrInvalidationTest : IrAbstractInvalidationTest(TargetBackend.JS_IR, "incrementalOut/invalidation") -abstract class AbstractJsIrES6InvalidationTest : IrAbstractInvalidationTest(TargetBackend.JS_IR_ES6, "incrementalOut/invalidationES6") +abstract class AbstractJsIrInvalidationTest : IrAbstractInvalidationTest( + targetBackend = TargetBackend.JS_IR, + workingDirPath = "incrementalOut/invalidation" +) + +abstract class AbstractJsIrES6InvalidationTest : IrAbstractInvalidationTest( + targetBackend = TargetBackend.JS_IR_ES6, + workingDirPath = "incrementalOut/invalidationES6" +) + +abstract class AbstractJsIrInvalidationWithPLTest : IrAbstractInvalidationTest( + targetBackend = TargetBackend.JS_IR, + workingDirPath = "incrementalOut/invalidationWithPL" +) { + override fun createConfiguration(moduleName: String, language: List, moduleKind: ModuleKind): CompilerConfiguration { + val config = super.createConfiguration(moduleName, language, moduleKind) + config.setupPartialLinkageConfig(PartialLinkageConfig(PartialLinkageMode.ENABLE, PartialLinkageLogLevel.WARNING)) + return config + } +} abstract class IrAbstractInvalidationTest( targetBackend: TargetBackend, diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsIrInvalidationWithPLTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsIrInvalidationWithPLTestGenerated.java new file mode 100644 index 00000000000..830706b8a98 --- /dev/null +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsIrInvalidationWithPLTestGenerated.java @@ -0,0 +1,75 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.incremental; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.kotlin.test.TargetBackend; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.GenerateJsTestsKt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("js/js.translator/testData/incremental/invalidationWithPL") +@TestDataPath("$PROJECT_ROOT") +public class JsIrInvalidationWithPLTestGenerated extends AbstractJsIrInvalidationWithPLTest { + @Test + public void testAllFilesPresentInInvalidationWithPL() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/incremental/invalidationWithPL"), Pattern.compile("^([^_](.+))$"), null, TargetBackend.JS_IR, false); + } + + @Test + @TestMetadata("changeFunctionSignature") + public void testChangeFunctionSignature() throws Exception { + runTest("js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/"); + } + + @Test + @TestMetadata("interfaceBecomeClass") + public void testInterfaceBecomeClass() throws Exception { + runTest("js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/"); + } + + @Test + @TestMetadata("removeFunction") + public void testRemoveFunction() throws Exception { + runTest("js/js.translator/testData/incremental/invalidationWithPL/removeFunction/"); + } + + @Test + @TestMetadata("removeFunctionFromBlock") + public void testRemoveFunctionFromBlock() throws Exception { + runTest("js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/"); + } + + @Test + @TestMetadata("removeFunctionFromChainCall") + public void testRemoveFunctionFromChainCall() throws Exception { + runTest("js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/"); + } + + @Test + @TestMetadata("removeFunctionFromElvis") + public void testRemoveFunctionFromElvis() throws Exception { + runTest("js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/"); + } + + @Test + @TestMetadata("removeFunctionFromInline") + public void testRemoveFunctionFromInline() throws Exception { + runTest("js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/"); + } + + @Test + @TestMetadata("removeInlineFunction") + public void testRemoveInlineFunction() throws Exception { + runTest("js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/"); + } +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/lib1/l1.0.kt b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/lib1/l1.0.kt new file mode 100644 index 00000000000..22669f4d07c --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/lib1/l1.0.kt @@ -0,0 +1 @@ +fun foo() = 0 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/lib1/l1.1.kt b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/lib1/l1.1.kt new file mode 100644 index 00000000000..0f635711aae --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/lib1/l1.1.kt @@ -0,0 +1 @@ +fun foo(x: Int) = x + 1 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/lib1/l1.2.kt b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/lib1/l1.2.kt new file mode 100644 index 00000000000..07eb95e5028 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/lib1/l1.2.kt @@ -0,0 +1 @@ +fun foo() = 2 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/lib1/l1.4.bug.kt b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/lib1/l1.4.bug.kt new file mode 100644 index 00000000000..8a28698ad3b --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/lib1/l1.4.bug.kt @@ -0,0 +1,3 @@ +// this is known issue, that return type doesn not affect IdSignature +// https://youtrack.jetbrains.com/issue/KT-51707 +fun foo() = "4" diff --git a/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/lib1/l1.6.kt b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/lib1/l1.6.kt new file mode 100644 index 00000000000..774879fe601 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/lib1/l1.6.kt @@ -0,0 +1 @@ +fun foo(x: Int = 1) = "${x + 5}" diff --git a/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/lib1/module.info b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/lib1/module.info new file mode 100644 index 00000000000..b2076dcc4a9 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/lib1/module.info @@ -0,0 +1,27 @@ +STEP 0: + modifications: + U : l1.0.kt -> l1.kt + added file: l1.kt +STEP 1: + modifications: + U : l1.1.kt -> l1.kt + modified ir: l1.kt + updated exports: l1.kt +STEP 2: + modifications: + U : l1.2.kt -> l1.kt + modified ir: l1.kt + updated exports: l1.kt +STEP 3: +STEP 4: + modifications: + U : l1.4.bug.kt -> l1.kt + modified ir: l1.kt +STEP 5: +STEP 6: + modifications: + U : l1.6.kt -> l1.kt + modified ir: l1.kt + updated exports: l1.kt +STEP 7: + updated exports: l1.kt diff --git a/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/main/m.kt b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/main/m.kt new file mode 100644 index 00000000000..07c7ebf1cf7 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/main/m.kt @@ -0,0 +1,11 @@ +fun box(stepId: Int): String { + val x = test() + if (stepId == 4) { + // this is known issue, that return type doesn not affect IdSignature + // https://youtrack.jetbrains.com/issue/KT-51707 + if (x != 41) return "Fail; got $x" + } else { + if (stepId != x) return "Fail; got $x" + } + return "OK" +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/main/module.info b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/main/module.info new file mode 100644 index 00000000000..f2475d8d42c --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/main/module.info @@ -0,0 +1,28 @@ +STEP 0: + dependencies: lib1 + modifications: + U : test.0.kt -> test.kt + added file: m.kt, test.kt +STEP 1..2: + dependencies: lib1 + rebuild klib: false + updated imports: test.kt +STEP 3: + dependencies: lib1 + modifications: + U : test.3.kt -> test.kt + modified ir: test.kt +STEP 4: + dependencies: lib1 + rebuild klib: false + updated imports: test.kt +STEP 5: + dependencies: lib1 + modified ir: test.kt +STEP 6: + dependencies: lib1 + rebuild klib: false + updated imports: test.kt +STEP 7: + dependencies: lib1 + modified ir: test.kt diff --git a/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/main/test.0.kt b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/main/test.0.kt new file mode 100644 index 00000000000..b91367b3fcc --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/main/test.0.kt @@ -0,0 +1,7 @@ +fun test(): Int { + try { + return foo() + } catch (e: Error) { + return 1 + } +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/main/test.3.kt b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/main/test.3.kt new file mode 100644 index 00000000000..422482d956e --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/main/test.3.kt @@ -0,0 +1,7 @@ +fun test(): Int { + try { + return foo().toInt() + 1 + } catch (e: Error) { + return 6 + } +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/project.info b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/project.info new file mode 100644 index 00000000000..15124fafd0d --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/changeFunctionSignature/project.info @@ -0,0 +1,20 @@ +MODULES: lib1, main + +STEP 0..2: + libs: lib1, main + dirty js: lib1, main +STEP 3: + libs: lib1, main + dirty js: main +STEP 4: + libs: lib1, main + dirty js: lib1, main +STEP 5: + libs: lib1, main + dirty js: main +STEP 6: + libs: lib1, main + dirty js: lib1, main +STEP 7: + libs: lib1, main + dirty js: lib1, main diff --git a/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib1/l1.0.kt b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib1/l1.0.kt new file mode 100644 index 00000000000..3b2d34c781d --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib1/l1.0.kt @@ -0,0 +1,3 @@ +interface Foo { + fun getSomething() = 0 +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib1/l1.1.kt b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib1/l1.1.kt new file mode 100644 index 00000000000..01421b9d06c --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib1/l1.1.kt @@ -0,0 +1,3 @@ +open class Foo { + fun getSomething() = 77 +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib1/l1.2.kt b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib1/l1.2.kt new file mode 100644 index 00000000000..72a27497ac9 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib1/l1.2.kt @@ -0,0 +1,3 @@ +interface Foo { + fun getSomething() = 2 +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib1/l1.5.kt b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib1/l1.5.kt new file mode 100644 index 00000000000..37af3393d89 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib1/l1.5.kt @@ -0,0 +1,3 @@ +open class Foo { + open fun getSomething() = 7 +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib1/module.info b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib1/module.info new file mode 100644 index 00000000000..4ff938680d0 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib1/module.info @@ -0,0 +1,21 @@ +STEP 0: + modifications: + U : l1.0.kt -> l1.kt + added file: l1.kt +STEP 1: + modifications: + U : l1.1.kt -> l1.kt + modified ir: l1.kt +STEP 2: + modifications: + U : l1.2.kt -> l1.kt + modified ir: l1.kt +STEP 3..4: +STEP 5: + modifications: + U : l1.5.kt -> l1.kt + modified ir: l1.kt +STEP 6: + updated exports: l1.kt +STEP 7: + diff --git a/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib2/l2.0.kt b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib2/l2.0.kt new file mode 100644 index 00000000000..6fbf952cb2a --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib2/l2.0.kt @@ -0,0 +1,2 @@ +open class Bar : Foo { +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib2/l2.3.kt b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib2/l2.3.kt new file mode 100644 index 00000000000..24727f456ec --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib2/l2.3.kt @@ -0,0 +1,3 @@ +open class Bar : Foo { + override fun getSomething() = 3 +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib2/l2.4.kt b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib2/l2.4.kt new file mode 100644 index 00000000000..a90dbbf87d3 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib2/l2.4.kt @@ -0,0 +1,3 @@ +interface Bar : Foo { + override fun getSomething() = 4 +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib2/l2.6.kt b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib2/l2.6.kt new file mode 100644 index 00000000000..b30bdf75724 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib2/l2.6.kt @@ -0,0 +1,3 @@ +open class Bar : Foo() { + override fun getSomething() = 6 +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib2/l2.7.kt b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib2/l2.7.kt new file mode 100644 index 00000000000..ed67a250f6f --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib2/l2.7.kt @@ -0,0 +1,2 @@ +open class Bar : Foo() { +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib2/module.info b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib2/module.info new file mode 100644 index 00000000000..6910699c5e2 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/lib2/module.info @@ -0,0 +1,34 @@ +STEP 0: + dependencies: lib1 + modifications: + U : l2.0.kt -> l2.kt + added file: l2.kt +STEP 1..2: + dependencies: lib1 + rebuild klib: false + updated imports: l2.kt +STEP 3: + dependencies: lib1 + modifications: + U : l2.3.kt -> l2.kt + modified ir: l2.kt +STEP 4: + dependencies: lib1 + modifications: + U : l2.4.kt -> l2.kt + modified ir: l2.kt +STEP 5: + dependencies: lib1 + rebuild klib: false + updated exports: l2.kt + updated imports: l2.kt +STEP 6: + dependencies: lib1 + modifications: + U : l2.6.kt -> l2.kt + modified ir: l2.kt +STEP 7: + dependencies: lib1 + modifications: + U : l2.7.kt -> l2.kt + modified ir: l2.kt diff --git a/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/klass.0.kt b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/klass.0.kt new file mode 100644 index 00000000000..5062860bdaf --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/klass.0.kt @@ -0,0 +1,2 @@ +class Klass: Bar() { +} \ No newline at end of file diff --git a/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/klass.4.kt b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/klass.4.kt new file mode 100644 index 00000000000..8b16ba02658 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/klass.4.kt @@ -0,0 +1,2 @@ +class Klass: Bar { +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/klass.6.kt b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/klass.6.kt new file mode 100644 index 00000000000..f0642665301 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/klass.6.kt @@ -0,0 +1,3 @@ +class Klass: Bar() { + override fun getSomething() = super.getSomething() +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/m.kt b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/m.kt new file mode 100644 index 00000000000..7026c346899 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/m.kt @@ -0,0 +1,5 @@ +fun box(stepId: Int): String { + val x = test() + if (stepId != x) return "Fail; got $x" + return "OK" +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/module.info b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/module.info new file mode 100644 index 00000000000..0c18be43c42 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/module.info @@ -0,0 +1,35 @@ +STEP 0: + dependencies: lib1, lib2 + modifications: + U : klass.0.kt -> klass.kt + U : test.0.kt -> test.kt + added file: m.kt, test.kt, klass.kt +STEP 1..2: + dependencies: lib1, lib2 + rebuild klib: false + updated imports: test.kt, klass.kt +STEP 3: + dependencies: lib1, lib2 + rebuild klib: false +STEP 4: + dependencies: lib1, lib2 + modifications: + U : klass.4.kt -> klass.kt + U : test.4.kt -> test.kt + modified ir: klass.kt, test.kt +STEP 5: + dependencies: lib1, lib2 + rebuild klib: false + updated exports: klass.kt + updated imports: test.kt, klass.kt +STEP 6: + dependencies: lib1, lib2 + modifications: + U : klass.6.kt -> klass.kt + modified ir: klass.kt + updated exports: klass.kt + updated imports: test.kt +STEP 7: + dependencies: lib1, lib2 + rebuild klib: false + updated imports: klass.kt diff --git a/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/test.0.kt b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/test.0.kt new file mode 100644 index 00000000000..6e1c9d2c403 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/test.0.kt @@ -0,0 +1,7 @@ +fun test(): Int { + try { + return Klass().getSomething() + } catch (e: Error) { + return 1 + } +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/test.4.kt b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/test.4.kt new file mode 100644 index 00000000000..a5211b16929 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/main/test.4.kt @@ -0,0 +1,7 @@ +fun test(): Int { + try { + return Klass().getSomething() + } catch (e: Error) { + return 5 + } +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/project.info b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/project.info new file mode 100644 index 00000000000..f23a169a0c5 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/interfaceBecomeClass/project.info @@ -0,0 +1,17 @@ +MODULES: lib1, lib2, main + +STEP 0..2: + libs: lib1, lib2, main + dirty js: lib1, lib2, main +STEP 3: + libs: lib1, lib2, main + dirty js: lib1, lib2 +STEP 4: + libs: lib1, lib2, main + dirty js: lib2, main +STEP 5..6: + libs: lib1, lib2, main + dirty js: lib1, lib2, main +STEP 7: + libs: lib1, lib2, main + dirty js: lib2, main diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/lib1/l1.0.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/lib1/l1.0.kt new file mode 100644 index 00000000000..22669f4d07c --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/lib1/l1.0.kt @@ -0,0 +1 @@ +fun foo() = 0 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/lib1/l1.1.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/lib1/l1.1.kt new file mode 100644 index 00000000000..17ee11e97af --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/lib1/l1.1.kt @@ -0,0 +1 @@ +fun bar() = 2 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/lib1/l1.2.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/lib1/l1.2.kt new file mode 100644 index 00000000000..07eb95e5028 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/lib1/l1.2.kt @@ -0,0 +1 @@ +fun foo() = 2 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/lib1/module.info b/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/lib1/module.info new file mode 100644 index 00000000000..2acd3703514 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/lib1/module.info @@ -0,0 +1,14 @@ +STEP 0: + modifications: + U : l1.0.kt -> l1.kt + added file: l1.kt +STEP 1: + modifications: + U : l1.1.kt -> l1.kt + modified ir: l1.kt + updated exports: l1.kt +STEP 2: + modifications: + U : l1.2.kt -> l1.kt + modified ir: l1.kt + updated exports: l1.kt diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/main/m.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/main/m.kt new file mode 100644 index 00000000000..7026c346899 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/main/m.kt @@ -0,0 +1,5 @@ +fun box(stepId: Int): String { + val x = test() + if (stepId != x) return "Fail; got $x" + return "OK" +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/main/module.info b/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/main/module.info new file mode 100644 index 00000000000..66a13e43654 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/main/module.info @@ -0,0 +1,8 @@ +STEP 0: + dependencies: lib1 + modifications: + added file: m.kt, test.kt +STEP 1..2: + dependencies: lib1 + rebuild klib: false + updated imports: test.kt diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/main/test.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/main/test.kt new file mode 100644 index 00000000000..0dd92f5d1ef --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/main/test.kt @@ -0,0 +1,7 @@ +fun test(): Int { + try { + return foo().toInt() + } catch (e: Error) { + return 1 + } +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/project.info b/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/project.info new file mode 100644 index 00000000000..912abf292a5 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunction/project.info @@ -0,0 +1,5 @@ +MODULES: lib1, main + +STEP 0..2: + libs: lib1, main + dirty js: lib1, main diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/l1a.0.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/l1a.0.kt new file mode 100644 index 00000000000..3e5183b4916 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/l1a.0.kt @@ -0,0 +1,3 @@ +fun foo() { + fooX = 0 +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/l1a.1.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/l1a.1.kt new file mode 100644 index 00000000000..9d611ce4054 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/l1a.1.kt @@ -0,0 +1,3 @@ +fun bar() { + fooX = 1 +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/l1a.2.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/l1a.2.kt new file mode 100644 index 00000000000..487626b35d2 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/l1a.2.kt @@ -0,0 +1,3 @@ +fun foo() { + fooX = 2 +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/l1b.0.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/l1b.0.kt new file mode 100644 index 00000000000..fe51e6c5c34 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/l1b.0.kt @@ -0,0 +1 @@ +inline fun baz() = 10 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/l1b.3.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/l1b.3.kt new file mode 100644 index 00000000000..ff95d67386c --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/l1b.3.kt @@ -0,0 +1 @@ +inline fun baz() = 11 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/l1c.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/l1c.kt new file mode 100644 index 00000000000..d71f3b02029 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/l1c.kt @@ -0,0 +1 @@ +var fooX = -100 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/module.info b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/module.info new file mode 100644 index 00000000000..f9fe6ac25f1 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/lib1/module.info @@ -0,0 +1,19 @@ +STEP 0: + modifications: + U : l1a.0.kt -> l1a.kt + U : l1b.0.kt -> l1b.kt + added file: l1a.kt, l1b.kt, l1c.kt +STEP 1: + modifications: + U : l1a.1.kt -> l1a.kt + modified ir: l1a.kt + updated exports: l1a.kt, l1c.kt +STEP 2: + modifications: + U : l1a.2.kt -> l1a.kt + modified ir: l1a.kt + updated exports: l1a.kt, l1c.kt +STEP 3: + modifications: + U : l1b.3.kt -> l1b.kt + modified ir: l1b.kt diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/main/m.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/main/m.kt new file mode 100644 index 00000000000..7026c346899 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/main/m.kt @@ -0,0 +1,5 @@ +fun box(stepId: Int): String { + val x = test() + if (stepId != x) return "Fail; got $x" + return "OK" +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/main/module.info b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/main/module.info new file mode 100644 index 00000000000..d554b35e417 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/main/module.info @@ -0,0 +1,8 @@ +STEP 0: + dependencies: lib1 + modifications: + added file: m.kt, test.kt +STEP 1..3: + dependencies: lib1 + rebuild klib: false + updated imports: test.kt diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/main/test.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/main/test.kt new file mode 100644 index 00000000000..01f8795b1fb --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/main/test.kt @@ -0,0 +1,13 @@ +internal fun doTest() : Int { + foo() + val y = baz() + return y + fooX - 10 +} + +fun test(): Int { + try { + return doTest() + } catch (e: Error) { + return 1 + } +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/project.info b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/project.info new file mode 100644 index 00000000000..c8d9369c64b --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromBlock/project.info @@ -0,0 +1,5 @@ +MODULES: lib1, main + +STEP 0..3: + libs: lib1, main + dirty js: lib1, main diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/klass.0.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/klass.0.kt new file mode 100644 index 00000000000..f4d76d2cc42 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/klass.0.kt @@ -0,0 +1,3 @@ +class Klass { + inline fun foo() = 0 +} \ No newline at end of file diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/klass.2.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/klass.2.kt new file mode 100644 index 00000000000..3bfb2025c64 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/klass.2.kt @@ -0,0 +1,3 @@ +class Klass { + inline fun foo() = 3 +} \ No newline at end of file diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/klass.4.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/klass.4.kt new file mode 100644 index 00000000000..4697ded2ef1 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/klass.4.kt @@ -0,0 +1,3 @@ +class Klass { + inline fun foo() = 4 +} \ No newline at end of file diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/l1a.0.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/l1a.0.kt new file mode 100644 index 00000000000..2fadaba4e4f --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/l1a.0.kt @@ -0,0 +1 @@ +fun makeKlass() = Klass() diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/l1a.1.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/l1a.1.kt new file mode 100644 index 00000000000..94f489596c2 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/l1a.1.kt @@ -0,0 +1 @@ +fun makeKlassOther() = Klass() diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/l1a.3.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/l1a.3.kt new file mode 100644 index 00000000000..2fadaba4e4f --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/l1a.3.kt @@ -0,0 +1 @@ +fun makeKlass() = Klass() diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/module.info b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/module.info new file mode 100644 index 00000000000..e46108ffe4a --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/lib1/module.info @@ -0,0 +1,23 @@ +STEP 0: + modifications: + U : klass.0.kt -> klass.kt + U : l1a.0.kt -> l1a.kt + added file: l1a.kt, klass.kt +STEP 1: + modifications: + U : l1a.1.kt -> l1a.kt + modified ir: l1a.kt + updated exports: l1a.kt, klass.kt +STEP 2: + modifications: + U : klass.2.kt -> klass.kt + modified ir: klass.kt +STEP 3: + modifications: + U : l1a.3.kt -> l1a.kt + modified ir: l1a.kt + updated exports: l1a.kt, klass.kt +STEP 4: + modifications: + U : klass.4.kt -> klass.kt + modified ir: klass.kt diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/main/m.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/main/m.kt new file mode 100644 index 00000000000..e8dcdd31023 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/main/m.kt @@ -0,0 +1,11 @@ +fun box(stepId: Int): String { + val x = test() + val expected = when (stepId) { + 0, 1, 3, 4 -> stepId + 2 -> 1 + else -> return "Unknown" + } + if (expected != x) return "Fail; $expected != $x" + + return "OK" +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/main/module.info b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/main/module.info new file mode 100644 index 00000000000..f16390b7300 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/main/module.info @@ -0,0 +1,8 @@ +STEP 0: + dependencies: lib1 + modifications: + added file: m.kt, test.kt +STEP 1..4: + dependencies: lib1 + rebuild klib: false + updated imports: test.kt diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/main/test.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/main/test.kt new file mode 100644 index 00000000000..711acb47576 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/main/test.kt @@ -0,0 +1,7 @@ +fun test(): Int { + try { + return makeKlass().foo() + } catch (e: Error) { + return 1 + } +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/project.info b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/project.info new file mode 100644 index 00000000000..8ae59518ca8 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromChainCall/project.info @@ -0,0 +1,5 @@ +MODULES: lib1, main + +STEP 0..4: + libs: lib1, main + dirty js: lib1, main diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/l1a.0.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/l1a.0.kt new file mode 100644 index 00000000000..d963e01dc69 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/l1a.0.kt @@ -0,0 +1 @@ +inline fun foo(): Int? = null diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/l1a.1.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/l1a.1.kt new file mode 100644 index 00000000000..a08c2480149 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/l1a.1.kt @@ -0,0 +1 @@ +inline fun foo77(): Int? = 77 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/l1a.3.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/l1a.3.kt new file mode 100644 index 00000000000..7410cc25d7d --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/l1a.3.kt @@ -0,0 +1 @@ +inline fun foo(): Int? = 3 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/l1a.4.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/l1a.4.kt new file mode 100644 index 00000000000..d963e01dc69 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/l1a.4.kt @@ -0,0 +1 @@ +inline fun foo(): Int? = null diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/l1b.0.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/l1b.0.kt new file mode 100644 index 00000000000..9cfc07ed2cc --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/l1b.0.kt @@ -0,0 +1 @@ +inline fun bar() = 0 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/l1b.2.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/l1b.2.kt new file mode 100644 index 00000000000..1162dc327c3 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/l1b.2.kt @@ -0,0 +1 @@ +inline fun bar() = 4 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/module.info b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/module.info new file mode 100644 index 00000000000..74f2f6ef276 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/lib1/module.info @@ -0,0 +1,23 @@ +STEP 0: + modifications: + U : l1a.0.kt -> l1a.kt + U : l1b.0.kt -> l1b.kt + added file: l1a.kt, l1b.kt +STEP 1: + modifications: + U : l1a.1.kt -> l1a.kt + modified ir: l1a.kt + updated exports: l1a.kt +STEP 2: + modifications: + U : l1b.2.kt -> l1b.kt + modified ir: l1b.kt +STEP 3: + modifications: + U : l1a.3.kt -> l1a.kt + modified ir: l1a.kt + updated exports: l1a.kt +STEP 4: + modifications: + U : l1a.4.kt -> l1a.kt + modified ir: l1a.kt diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/main/m.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/main/m.kt new file mode 100644 index 00000000000..e8dcdd31023 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/main/m.kt @@ -0,0 +1,11 @@ +fun box(stepId: Int): String { + val x = test() + val expected = when (stepId) { + 0, 1, 3, 4 -> stepId + 2 -> 1 + else -> return "Unknown" + } + if (expected != x) return "Fail; $expected != $x" + + return "OK" +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/main/module.info b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/main/module.info new file mode 100644 index 00000000000..f16390b7300 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/main/module.info @@ -0,0 +1,8 @@ +STEP 0: + dependencies: lib1 + modifications: + added file: m.kt, test.kt +STEP 1..4: + dependencies: lib1 + rebuild klib: false + updated imports: test.kt diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/main/test.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/main/test.kt new file mode 100644 index 00000000000..aadb90334a0 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/main/test.kt @@ -0,0 +1,7 @@ +fun test(): Int { + try { + return foo() ?: bar() + } catch (e: Error) { + return 1 + } +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/project.info b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/project.info new file mode 100644 index 00000000000..8ae59518ca8 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromElvis/project.info @@ -0,0 +1,5 @@ +MODULES: lib1, main + +STEP 0..4: + libs: lib1, main + dirty js: lib1, main diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/lib1/l1.0.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/lib1/l1.0.kt new file mode 100644 index 00000000000..22669f4d07c --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/lib1/l1.0.kt @@ -0,0 +1 @@ +fun foo() = 0 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/lib1/l1.1.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/lib1/l1.1.kt new file mode 100644 index 00000000000..137bc9fa51e --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/lib1/l1.1.kt @@ -0,0 +1 @@ +fun bar() = 77 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/lib1/l1.2.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/lib1/l1.2.kt new file mode 100644 index 00000000000..07eb95e5028 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/lib1/l1.2.kt @@ -0,0 +1 @@ +fun foo() = 2 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/lib1/module.info b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/lib1/module.info new file mode 100644 index 00000000000..2acd3703514 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/lib1/module.info @@ -0,0 +1,14 @@ +STEP 0: + modifications: + U : l1.0.kt -> l1.kt + added file: l1.kt +STEP 1: + modifications: + U : l1.1.kt -> l1.kt + modified ir: l1.kt + updated exports: l1.kt +STEP 2: + modifications: + U : l1.2.kt -> l1.kt + modified ir: l1.kt + updated exports: l1.kt diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/lib2/l2.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/lib2/l2.kt new file mode 100644 index 00000000000..6318adc3230 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/lib2/l2.kt @@ -0,0 +1 @@ +inline fun inlineFun() = foo() diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/lib2/module.info b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/lib2/module.info new file mode 100644 index 00000000000..dd67a4cf6a0 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/lib2/module.info @@ -0,0 +1,7 @@ +STEP 0: + dependencies: lib1 + added file: l2.kt +STEP 1..2: + dependencies: lib1 + rebuild klib: false + updated imports: l2.kt diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/main/m.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/main/m.kt new file mode 100644 index 00000000000..2b131bc5839 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/main/m.kt @@ -0,0 +1,5 @@ +fun box(stepId: Int): String { + val x = test() + if (x != stepId) return "Fail; got $x" + return "OK" +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/main/module.info b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/main/module.info new file mode 100644 index 00000000000..932d886df5b --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/main/module.info @@ -0,0 +1,7 @@ +STEP 0: + dependencies: lib1, lib2 + added file: m.kt, test.kt +STEP 1..2: + dependencies: lib1, lib2 + rebuild klib: false + updated imports: test.kt diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/main/test.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/main/test.kt new file mode 100644 index 00000000000..8d65eee141d --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/main/test.kt @@ -0,0 +1,7 @@ +fun test(): Int { + try { + return inlineFun() + } catch (e: Error) { + return 1 + } +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/project.info b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/project.info new file mode 100644 index 00000000000..31bf237a5e9 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeFunctionFromInline/project.info @@ -0,0 +1,5 @@ +MODULES: lib1, lib2, main + +STEP 0..2: + libs: lib1, lib2, main + dirty js: lib1, lib2, main diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/l1a.0.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/l1a.0.kt new file mode 100644 index 00000000000..e6ef14598ca --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/l1a.0.kt @@ -0,0 +1 @@ +inline fun foo() = -1 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/l1a.2.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/l1a.2.kt new file mode 100644 index 00000000000..e9526ec7546 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/l1a.2.kt @@ -0,0 +1 @@ +inline fun foo() = 1 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/l1b.0.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/l1b.0.kt new file mode 100644 index 00000000000..a3c6ff2baf6 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/l1b.0.kt @@ -0,0 +1 @@ +inline fun inlineFoo(f: () -> Int) = f() + 1 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/l1b.1.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/l1b.1.kt new file mode 100644 index 00000000000..c2b34fbf100 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/l1b.1.kt @@ -0,0 +1 @@ +inline fun inlineBar(f: () -> Int) = f() + 1 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/l1b.3.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/l1b.3.kt new file mode 100644 index 00000000000..de496b2580c --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/l1b.3.kt @@ -0,0 +1 @@ +inline fun inlineFoo(f: () -> Int) = f() + 2 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/l1b.4.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/l1b.4.kt new file mode 100644 index 00000000000..5a7f7655957 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/l1b.4.kt @@ -0,0 +1 @@ +inline fun inlineFoo(f: () -> Int) = f() + 3 diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/module.info b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/module.info new file mode 100644 index 00000000000..2a04fdb2b49 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/lib1/module.info @@ -0,0 +1,23 @@ +STEP 0: + modifications: + U : l1a.0.kt -> l1a.kt + U : l1b.0.kt -> l1b.kt + added file: l1a.kt, l1b.kt +STEP 1: + modifications: + U : l1b.1.kt -> l1b.kt + modified ir: l1b.kt + updated exports: l1b.kt +STEP 2: + modifications: + U : l1a.2.kt -> l1a.kt + modified ir: l1a.kt +STEP 3: + modifications: + U : l1b.3.kt -> l1b.kt + modified ir: l1b.kt + updated exports: l1b.kt +STEP 4: + modifications: + U : l1b.4.kt -> l1b.kt + modified ir: l1b.kt diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/main/m.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/main/m.kt new file mode 100644 index 00000000000..e8dcdd31023 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/main/m.kt @@ -0,0 +1,11 @@ +fun box(stepId: Int): String { + val x = test() + val expected = when (stepId) { + 0, 1, 3, 4 -> stepId + 2 -> 1 + else -> return "Unknown" + } + if (expected != x) return "Fail; $expected != $x" + + return "OK" +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/main/module.info b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/main/module.info new file mode 100644 index 00000000000..f16390b7300 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/main/module.info @@ -0,0 +1,8 @@ +STEP 0: + dependencies: lib1 + modifications: + added file: m.kt, test.kt +STEP 1..4: + dependencies: lib1 + rebuild klib: false + updated imports: test.kt diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/main/test.kt b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/main/test.kt new file mode 100644 index 00000000000..8b44ed6d55a --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/main/test.kt @@ -0,0 +1,7 @@ +fun test(): Int { + try { + return inlineFoo { foo() } + } catch (e: Error) { + return 1 + } +} diff --git a/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/project.info b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/project.info new file mode 100644 index 00000000000..8ae59518ca8 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidationWithPL/removeInlineFunction/project.info @@ -0,0 +1,5 @@ +MODULES: lib1, main + +STEP 0..4: + libs: lib1, main + dirty js: lib1, main