Skip to content

Commit d478f07

Browse files
seclerpSpace Team
authored and
Space Team
committed
[K/JS]: KT-76027: Introduce an additional enum test step to cover incremental compilation bug with @JsExport
Kotlin/JS compiler prior to 2.2.0 version produced ReferenceError while accessing the synthetic property of the enum class after consumer code modification (KT-76027). This updated enum test adds necessary incremental compilation check for such a case. Merge-request: KT-MR-21283 Merged-by: Andrii Rublov <[email protected]>
1 parent 3bf483c commit d478f07

19 files changed

+178
-0
lines changed

js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirES6InvalidationPerFileTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirES6InvalidationPerModuleTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirInvalidationPerFileTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsFirInvalidationPerModuleTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsIrES6InvalidationPerFileTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsIrES6InvalidationPerModuleTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsIrInvalidationPerFileTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/js.tests/tests-gen/org/jetbrains/kotlin/incremental/JsIrInvalidationPerModuleTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// TARGET_BACKEND: JS_IR, JS_IR_ES6
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
enum class TestEnum
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
enum class TestEnum {
2+
A, B
3+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@JsExport
2+
enum class TestEnum {
3+
A, B
4+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
STEP 0:
2+
modifications:
3+
U : l1.0.kt -> l1.kt
4+
added file: l1.kt
5+
STEP 1:
6+
modifications:
7+
U : l1.1.kt -> l1.kt
8+
modified ir: l1.kt
9+
STEP 2:
10+
added file: l1.kt
11+
STEP 3:
12+
updated exports: l1.kt
13+
STEP 4:
14+
modifications:
15+
U : l1.4.kt -> l1.kt
16+
modified ir: l1.kt
17+
STEP 5:
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
@kotlin.ExperimentalStdlibApi
2+
fun box(stepId: Int, isWasm: Boolean): String {
3+
when {
4+
!testEnumEntries(stepId) -> return "Fail testEnumEntries"
5+
}
6+
return "OK"
7+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
STEP 0:
2+
modifications:
3+
U : testEnumEntries.0.kt -> testEnumEntries.kt
4+
dependencies: lib1
5+
added file: m.kt, testEnumEntries.kt
6+
STEP 1:
7+
dependencies: lib1
8+
STEP 2:
9+
dependencies: lib1
10+
added file: m.kt, testEnumEntries.kt
11+
STEP 3:
12+
modifications:
13+
U : testEnumEntries.3.kt -> testEnumEntries.kt
14+
dependencies: lib1
15+
modified ir: testEnumEntries.kt
16+
STEP 4:
17+
dependencies: lib1
18+
updated imports: testEnumEntries.kt
19+
STEP 5:
20+
modifications:
21+
U : testEnumEntries.5.kt -> testEnumEntries.kt
22+
dependencies: lib1
23+
modified ir: testEnumEntries.kt
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@kotlin.ExperimentalStdlibApi
2+
fun testEnumEntries(stepId: Int): Boolean {
3+
when (stepId) {
4+
0, 1, 2, 3, 4, 5 -> return true
5+
else -> return false
6+
}
7+
return true
8+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
@kotlin.ExperimentalStdlibApi
2+
fun testEnumEntries(stepId: Int): Boolean {
3+
val entries = TestEnum.entries
4+
5+
if (entries.contains((object {}) as Any?)) return false
6+
7+
when (stepId) {
8+
0 -> if (entries.isNotEmpty()) return false
9+
1, 2, 3, 4, 5 -> {
10+
if (entries.size != 2) return false
11+
if (entries.indexOf(TestEnum.A) != 0) return false
12+
if (entries.indexOf(TestEnum.B) != 1) return false
13+
}
14+
else -> return false
15+
}
16+
17+
return true
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
@kotlin.ExperimentalStdlibApi
2+
fun testEnumEntries(stepId: Int): Boolean {
3+
val entries = TestEnum.entries
4+
5+
// if (entries.contains((object {}) as Any?)) return false
6+
7+
when (stepId) {
8+
0 -> if (entries.isNotEmpty()) return false
9+
1, 2, 3, 4, 5 -> {
10+
if (entries.size != 2) return false
11+
if (entries.indexOf(TestEnum.A) != 0) return false
12+
if (entries.indexOf(TestEnum.B) != 1) return false
13+
}
14+
else -> return false
15+
}
16+
17+
return true
18+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
MODULES: lib1, main
2+
3+
STEP 0:
4+
libs: lib1, main
5+
dirty js modules: lib1, main
6+
dirty js files: lib1/l1, main/testEnumEntries, main/m, main/m.export, main
7+
STEP 1:
8+
libs: lib1, main
9+
dirty js modules: lib1
10+
dirty js files: lib1/l1
11+
STEP 2:
12+
language: +EnumEntries
13+
libs: lib1, main
14+
dirty js modules: main, lib1
15+
dirty js files: lib1/l1, main/testEnumEntries, main/m, main/m.export, main
16+
STEP 3:
17+
language: +EnumEntries
18+
libs: lib1, main
19+
dirty js modules: main, lib1
20+
dirty js files: lib1/l1, main/testEnumEntries
21+
STEP 4:
22+
language: +EnumEntries
23+
libs: lib1, main
24+
dirty js modules: lib1, main
25+
dirty js files: lib1/l1, lib1/l1.export, main/testEnumEntries, lib1
26+
STEP 5:
27+
language: +EnumEntries
28+
libs: lib1, main
29+
dirty js modules: main
30+
dirty js files: main/testEnumEntries

0 commit comments

Comments
 (0)