From 7327bc864e87fb2b5d99cb2d7b3dc960b5b2dca3 Mon Sep 17 00:00:00 2001 From: Artem Kobzar Date: Thu, 21 Apr 2022 09:22:24 +0000 Subject: [PATCH] test(KT-31614): fixate behavior of serialization/deserialization of UTF characters. --- .../InvalidationTestGenerated.java | 5 ++++ .../lib1/l1.kt | 1 + .../lib1/l1.kt.1.txt | 1 + .../lib1/module.info | 11 +++++++++ .../lib2/l2.kt | 2 ++ .../lib2/module.info | 7 ++++++ .../lib3/l3.kt | 1 + .../lib3/l3.kt.2.txt | 1 + .../lib3/module.info | 11 +++++++++ .../main/m.kt | 24 +++++++++++++++++++ .../main/module.info | 7 ++++++ .../project.info | 11 +++++++++ 12 files changed, 82 insertions(+) create mode 100644 js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib1/l1.kt create mode 100644 js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib1/l1.kt.1.txt create mode 100644 js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib1/module.info create mode 100644 js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib2/l2.kt create mode 100644 js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib2/module.info create mode 100644 js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib3/l3.kt create mode 100644 js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib3/l3.kt.2.txt create mode 100644 js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/lib3/module.info create mode 100644 js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/main/m.kt create mode 100644 js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/main/module.info create mode 100644 js/js.translator/testData/incremental/invalidation/unicodeSerializationAndDeserialization/project.info 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