diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/InvalidationTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/InvalidationTestGenerated.java index 02afca7457e..ffd1387588e 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/InvalidationTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/InvalidationTestGenerated.java @@ -170,6 +170,11 @@ public class InvalidationTestGenerated extends AbstractInvalidationTest { runTest("js/js.translator/testData/incremental/invalidation/transitiveInlineFunction/"); } + @TestMetadata("unicodeSerializationAndDeserialization") + public void testUnicodeSerializationAndDeserialization() throws Exception { + runTest("js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/"); + } + @TestMetadata("variance") public void testVariance() throws Exception { runTest("js/js.translator/testData/incremental/invalidation/variance/"); diff --git a/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib1/l1.kt b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib1/l1.kt new file mode 100644 index 00000000000..5199c442d35 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib1/l1.kt @@ -0,0 +1 @@ +fun foo() = "\uD800" diff --git a/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib1/l1.kt.1.txt b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib1/l1.kt.1.txt new file mode 100644 index 00000000000..817f9929e47 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib1/l1.kt.1.txt @@ -0,0 +1 @@ +fun foo() = "\uDB6A" diff --git a/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib1/module.info b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib1/module.info new file mode 100644 index 00000000000..bb55764b2ea --- /dev/null +++ b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib1/module.info @@ -0,0 +1,11 @@ +STEP 0: + dependencies: stdlib + dirty: l1.kt +STEP 1: + dependencies: stdlib + modifications: + U : l1.kt.1.txt -> l1.kt + dirty: l1.kt +STEP 2: + flags: FP + dependencies: stdlib diff --git a/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib2/l2.kt b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib2/l2.kt new file mode 100644 index 00000000000..c452a07c886 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib2/l2.kt @@ -0,0 +1,2 @@ +fun qux() = foo() +fun quz() = bar() diff --git a/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib2/module.info b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib2/module.info new file mode 100644 index 00000000000..075743dedf0 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib2/module.info @@ -0,0 +1,7 @@ +STEP 0: + dependencies: stdlib, lib1, lib3 + dirty: l2.kt +STEP 1: + dependencies: stdlib, lib1, lib3 +STEP 2: + dependencies: stdlib, lib1, lib3 diff --git a/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib3/l3.kt b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib3/l3.kt new file mode 100644 index 00000000000..78c86b1bf87 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib3/l3.kt @@ -0,0 +1 @@ +fun bar() = "\uD800" diff --git a/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib3/l3.kt.2.txt b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib3/l3.kt.2.txt new file mode 100644 index 00000000000..38ef13c5da0 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib3/l3.kt.2.txt @@ -0,0 +1 @@ +fun bar() = "\uDFFF" diff --git a/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib3/module.info b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib3/module.info new file mode 100644 index 00000000000..428b6d34e59 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib3/module.info @@ -0,0 +1,11 @@ +STEP 0: + dependencies: stdlib + dirty: l3.kt +STEP 1: + dependencies: stdlib + flags: FP +STEP 2: + dependencies: stdlib + modifications: + U : l3.kt.2.txt -> l3.kt + dirty: l3.kt diff --git a/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/main/m.kt b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/main/m.kt new file mode 100644 index 00000000000..f0782c96460 --- /dev/null +++ b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/main/m.kt @@ -0,0 +1,24 @@ + +fun box(step: Int): String { + return when (step) { + 0 -> checkStep(step, qux = "\uD800", quz = "\uD800") + 1 -> checkStep(step, qux = "\uDB6A", quz = "\uD800") + 2 -> checkStep(step, qux = "\uDB6A", quz = "\uDFFF") + else -> "Unknown Step" + } +} + +fun checkStep(step: Int, qux: String, quz: String): String { + val a = qux() + val b = quz() + + if (a != qux || a == "?") { + return "Fail(qux): Step $step" + } + + if (b != quz || b == "?") { + return "Fail(quz): Step $step" + } + + return "OK" +} \ No newline at end of file diff --git a/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/main/module.info b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/main/module.info new file mode 100644 index 00000000000..d52200bd35a --- /dev/null +++ b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/main/module.info @@ -0,0 +1,7 @@ +STEP 0: + dependencies: stdlib, lib1, lib2, lib3 + dirty: m.kt +STEP 1: + dependencies: stdlib, lib1, lib2, lib3 +STEP 2: + dependencies: stdlib, lib1, lib2, lib3 diff --git a/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/project.info b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/project.info new file mode 100644 index 00000000000..85efae698fa --- /dev/null +++ b/js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/project.info @@ -0,0 +1,11 @@ +MODULES: lib1, lib3, lib2, main + +STEP 0: + libs: lib1, lib3, lib2, main + dirty js: stdlib, lib1, lib2, lib3, main +STEP 1: + libs: lib1, lib3, lib2, main + dirty js: lib1 +STEP 2: + libs: lib1, lib3, lib2, main + dirty js: lib3