[JS IR] Perform optimizations on the generated JS code

The patch adopts and reuses the optimizations from the legacy backend.

The optimizations remove useless temporary variables,
statements and simplify generated JS code.

The optimizations can be disabled by `-Xoptimize-generated-js=false`.

Related to KT-51139
This commit is contained in:
Alexander Korepanov
2023-04-11 20:04:28 +02:00
committed by Space Team
parent 84b5af3c89
commit 79d378f2bd
87 changed files with 173 additions and 224 deletions
+1
View File
@@ -40,6 +40,7 @@ where advanced options include:
-Xir-safe-external-boolean-diagnostic={log|exception}
Enable runtime diagnostics when access safely to boolean in external declarations
-Xmetadata-only Generate *.meta.js and *.kjsm files only
-Xoptimize-generated-js Perform additional optimizations on the generated JS code
-Xpartial-linkage-loglevel={info|warning|error}
Partial linkage compile-time log level
-Xpartial-linkage={enable|disable}
@@ -1,15 +1,14 @@
// CHECK_CASES_COUNT: function=test1 count=2 TARGET_BACKENDS=JS
// CHECK_CASES_COUNT: function=test1 count=0 IGNORED_BACKENDS=JS
// CHECK_IF_COUNT: function=test1 count=0 TARGET_BACKENDS=JS
// CHECK_IF_COUNT: function=test1 count=1 IGNORED_BACKENDS=JS
// CHECK_BREAKS_COUNT: function=test1 count=1 TARGET_BACKENDS=JS
// CHECK_BREAKS_COUNT: function=test1 count=0 IGNORED_BACKENDS=JS
// CHECK_IF_COUNT: function=test1 count=0
// CHECK_CASES_COUNT: function=test2 count=2 TARGET_BACKENDS=JS
// CHECK_CASES_COUNT: function=test2 count=0 IGNORED_BACKENDS=JS
// CHECK_IF_COUNT: function=test2 count=0 TARGET_BACKENDS=JS
// CHECK_IF_COUNT: function=test2 count=1 IGNORED_BACKENDS=JS
// CHECK_BREAKS_COUNT: function=test2 count=1
// CHECK_BREAKS_COUNT: function=test2 count=1 TARGET_BACKENDS=JS
// CHECK_BREAKS_COUNT: function=test2 count=0 IGNORED_BACKENDS=JS
// CHECK_IF_COUNT: function=test2 count=0
fun test1(v: Int) {
when (v) {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS
// WITH_STDLIB
// NO_CHECK_LAMBDA_INLINING
// KJS_WITH_FULL_RUNTIME
-1
View File
@@ -22,7 +22,6 @@ fun box() {
// EXPECTATIONS JS_IR
// test.kt:4 box:
// test.kt:5 box: a=1:number
// test.kt:5 box: a=1:number
// test.kt:6 box: a=0:number
// test.kt:7 box: a=0:number
// test.kt:8 box: a=0:number
@@ -17,6 +17,5 @@ fun box(): String {
// EXPECTATIONS JS_IR
// test.kt:5 box:
// test.kt:7 box: p=kotlin.Pair
// test.kt:7 box: p=kotlin.Pair
// test.kt:7 box: p=kotlin.Pair, o="O":kotlin.String
// test.kt:9 box: p=kotlin.Pair, o="O":kotlin.String, k="K":kotlin.String
@@ -36,7 +36,6 @@ fun box(): String {
// test.kt:2 <init>: x="X":kotlin.String, y="Y":kotlin.String
// test.kt:2 <init>: x="X":kotlin.String, y="Y":kotlin.String
// test.kt:14 box: p=MyPair
// test.kt:14 box: p=MyPair
// test.kt:4 component1:
// test.kt:14 box: p=MyPair, o="O":kotlin.String
// test.kt:8 component2:
@@ -44,7 +44,6 @@ fun box(): String {
// test.kt:4 <init>: x="X":kotlin.String, y="Y":kotlin.String
// test.kt:4 <init>: x="X":kotlin.String, y="Y":kotlin.String
// test.kt:4 <init>: x="X":kotlin.String, y="Y":kotlin.String
// test.kt:23 box: p=MyPair
// test.kt:18 box: p=MyPair
// test.kt:6 component1:
// test.kt:20 box: p=MyPair, o="O":kotlin.String
@@ -30,7 +30,6 @@ fun box(): String {
// EXPECTATIONS JS_IR
// test.kt:6 box:
// test.kt:15 box: p=kotlin.Pair
// test.kt:10 box: p=kotlin.Pair
// test.kt:12 box: p=kotlin.Pair, o="O":kotlin.String
// test.kt:17 box: p=kotlin.Pair, o="O":kotlin.String, k="K":kotlin.String
@@ -17,6 +17,5 @@ fun box(): String {
// EXPECTATIONS JS_IR
// test.kt:5 box:
// test.kt:7 box: p=kotlin.Triple
// test.kt:7 box: p=kotlin.Triple
// test.kt:7 box: p=kotlin.Triple, o="O":kotlin.String
// test.kt:9 box: p=kotlin.Triple, o="O":kotlin.String, k="K":kotlin.String
@@ -32,7 +32,6 @@ fun box(): String {
// EXPECTATIONS JS_IR
// test.kt:6 box:
// test.kt:17 box: p=kotlin.Triple
// test.kt:12 box: p=kotlin.Triple
// test.kt:14 box: p=kotlin.Triple, o="O":kotlin.String
// test.kt:19 box: p=kotlin.Triple, o="O":kotlin.String, k="K":kotlin.String
@@ -20,9 +20,6 @@ fun box() {
// test.kt:5 box:
// test.kt:6 box: map=kotlin.collections.HashMap
// test.kt:6 box: map=kotlin.collections.HashMap
// test.kt:6 box: map=kotlin.collections.HashMap
// test.kt:6 box: map=kotlin.collections.HashMap
// test.kt:6 box: map=kotlin.collections.HashMap, a="1":kotlin.String
// test.kt:7 box: map=kotlin.collections.HashMap, a="1":kotlin.String, b="23":kotlin.String
// test.kt:6 box: map=kotlin.collections.HashMap, a="1":kotlin.String, b="23":kotlin.String
// test.kt:9 box: map=kotlin.collections.HashMap, a="1":kotlin.String, b="23":kotlin.String
@@ -43,9 +43,6 @@ fun box() {
// test.kt:5 box:
// test.kt:15 box: map=kotlin.collections.HashMap
// test.kt:15 box: map=kotlin.collections.HashMap
// test.kt:15 box: map=kotlin.collections.HashMap
// test.kt:10 box: map=kotlin.collections.HashMap
// test.kt:12 box: map=kotlin.collections.HashMap, a="1":kotlin.String
// test.kt:18 box: map=kotlin.collections.HashMap, a="1":kotlin.String, b="23":kotlin.String
// test.kt:15 box: map=kotlin.collections.HashMap, a="1":kotlin.String, b="23":kotlin.String
// test.kt:20 box: map=kotlin.collections.HashMap, a="1":kotlin.String, b="23":kotlin.String
// test.kt:20 box: map=kotlin.collections.HashMap, a="1":kotlin.String, b="23":kotlin.String
+1 -2
View File
@@ -36,8 +36,7 @@ fun box() {
// test.kt:5 box:
// test.kt:11 box: map=kotlin.collections.HashMap
// test.kt:11 box: map=kotlin.collections.HashMap
// test.kt:11 box: map=kotlin.collections.HashMap
// test.kt:14 box: map=kotlin.collections.HashMap, e=kotlin.collections.AbstractMutableMap.SimpleEntry
// test.kt:14 box: map=kotlin.collections.HashMap, e=kotlin.collections.AbstractMutableMap.SimpleEntry
// test.kt:11 box: map=kotlin.collections.HashMap, e=kotlin.collections.AbstractMutableMap.SimpleEntry
// test.kt:16 box: map=kotlin.collections.HashMap, e=kotlin.collections.AbstractMutableMap.SimpleEntry
// test.kt:16 box: map=kotlin.collections.HashMap, e=kotlin.collections.AbstractMutableMap.SimpleEntry
@@ -24,7 +24,5 @@ fun box() {
// test.kt:8 box:
// test.kt:2 <init>:
// test.kt:4 box: a=A
// test.kt:9 box: a=A
// test.kt:10 box: a=A, y=1:number
// test.kt:10 box: a=A, y=1:number
// test.kt:11 box: a=A, y=2:number
+1 -2
View File
@@ -81,8 +81,7 @@ fun box() {
// a.kt:6 exclamate: s="Jesse":kotlin.String
// test.kt:52 box: jesse="Jesse":kotlin.String, walter1="Walter!":kotlin.String, jesse1="Jesse!":kotlin.String
// a.kt:6 exclamate: s="Jesse!":kotlin.String
// a.kt:29 box: jesse="Jesse":kotlin.String, walter1="Walter!":kotlin.String, jesse1="Jesse!":kotlin.String
// a.kt:22 value:
// test.kt:63 box: jesse="Jesse":kotlin.String, walter1="Walter!":kotlin.String, jesse1="Jesse!":kotlin.String
// test.kt:59 localFun: hello="hello":kotlin.String, world="world":kotlin.String
// test.kt:64 box: jesse="Jesse":kotlin.String, walter1="Walter!":kotlin.String, jesse1="Jesse!":kotlin.String
// test.kt:64 box: jesse="Jesse":kotlin.String, walter1="Walter!":kotlin.String, jesse1="Jesse!":kotlin.String
@@ -18,7 +18,7 @@ suspend fun box() {
// test.kt:10 box: $completion:kotlin.coroutines.Continuation=Generated_Box_MainKt$main$1
// EXPECTATIONS JS_IR
// test.kt:9 box: $completion=EmptyContinuation
// test.kt:10 box: $completion=EmptyContinuation
// test.kt:4 <init>:
// test.kt:9 box: $completion=EmptyContinuation
// test.kt:5 foo: $completion=EmptyContinuation
@@ -31,7 +31,7 @@ suspend fun box() {
// test.kt:15 box: $completion:kotlin.coroutines.Continuation=Generated_Box_MainKt$main$1
// EXPECTATIONS JS_IR
// test.kt:14 box: $completion=EmptyContinuation
// test.kt:15 box: $completion=EmptyContinuation
// test.kt:4 <init>:
// test.kt:14 box: $completion=EmptyContinuation
// test.kt:14 box: $completion=EmptyContinuation
@@ -19,7 +19,7 @@ suspend fun box() {
// test.kt:10 box: $completion:kotlin.coroutines.Continuation=Generated_Box_MainKt$main$1
// EXPECTATIONS JS_IR
// test.kt:9 box: $completion=EmptyContinuation
// test.kt:10 box: $completion=EmptyContinuation
// test.kt:4 <init>:
// test.kt:9 box: $completion=EmptyContinuation
// test.kt:6 foo: <this>=A, $completion=EmptyContinuation
@@ -27,7 +27,7 @@ suspend fun box() {
// test.kt:13 box: $completion:kotlin.coroutines.Continuation=Generated_Box_MainKt$main$1
// EXPECTATIONS JS_IR
// test.kt:12 box: $completion=EmptyContinuation
// test.kt:13 box: $completion=EmptyContinuation
// test.kt:12 box: $completion=EmptyContinuation
// test.kt:6 doResume:
// test.kt:4 foo: $completion=$foo1COROUTINE$0
@@ -33,7 +33,7 @@ suspend fun box() {
// test.kt:15 box: $completion:kotlin.coroutines.Continuation=Generated_Box_MainKt$main$1
// EXPECTATIONS JS_IR
// test.kt:14 box: $completion=EmptyContinuation
// test.kt:15 box: $completion=EmptyContinuation
// test.kt:4 <init>:
// test.kt:14 box: $completion=EmptyContinuation
// test.kt:14 box: $completion=EmptyContinuation
@@ -42,7 +42,7 @@ suspend fun box() = foo(A()) { (x_param, _, y_param) ->
// EXPECTATIONS JS_IR
// test.kt:12 box: $completion=EmptyContinuation
// test.kt:4 <init>:
// test.kt:12 box: $completion=EmptyContinuation
// test.kt:14 box: $completion=EmptyContinuation
// test.kt:12 box$slambda:
// test.kt:12 box: $completion=EmptyContinuation
// test.kt:10 foo: a=A, block=Function2, $completion=EmptyContinuation
@@ -66,7 +66,6 @@ fun box() {
// test.kt:9 compute: y=42:number, i=0:number, z=32:number
// test.kt:9 compute: y=42:number, i=0:number, z=32:number
// test.kt:9 compute: y=42:number, i=0:number, z=32:number, j=0:number
// test.kt:10 compute: y=42:number, i=0:number, z=32:number, j=0:number
// test.kt:24 compute: y=42:number, i=0:number, z=32:number, j=0:number
// test.kt:28 compute: y=42:number, i=0:number, z=32:number, j=0:number
// test.kt:29 compute: y=42:number, i=0:number, z=32:number, j=0:number, s2="OK":kotlin.String
@@ -66,9 +66,6 @@ fun box() {
// test.kt:8 <init properties test.kt>:
// test.kt:8 <init properties test.kt>:
// test.kt:8 <init properties test.kt>:
// test.kt:8 <init properties test.kt>:
// test.kt:8 <init properties test.kt>:
// test.kt:8 <init properties test.kt>:
// test.kt:4 <init>: x=1:number
// test.kt:4 <init>: x=1:number, y="":kotlin.String
// test.kt:4 <init>: x=1:number, y="":kotlin.String, z=48:number
@@ -78,7 +75,6 @@ fun box() {
// test.kt:8 <init properties test.kt>:
// test.kt:8 <init properties test.kt>:
// test.kt:8 <init properties test.kt>:
// test.kt:8 <init properties test.kt>:
// test.kt:12 box:
// test.kt:4 <init>: x=1:number
// test.kt:4 <init>: x=1:number, y="":kotlin.String
+1 -4
View File
@@ -37,12 +37,9 @@ fun box() {
// EXPECTATIONS JS_IR
// test.kt:19 box
// test.kt:12 foo
// test.kt:6 alternate
// test.kt:7 alternate
// test.kt:12 foo
// test.kt:6 alternate
// test.kt:7 alternate
// test.kt:13 foo
// test.kt:16 foo
// test.kt:20 box
// test.kt:20 box
+1 -2
View File
@@ -32,5 +32,4 @@ fun box() {
// test.kt:3 <init>
// test.kt:11 box
// test.kt:4 foo
// test.kt:5 box
// test.kt:15 box
// test.kt:15 box
+1 -4
View File
@@ -36,7 +36,4 @@ fun box() {
// test.kt:4 foo
// test.kt:11 box
// test.kt:4 foo
// test.kt:5 box
// test.kt:13 box
// test.kt:5 box
// test.kt:15 box
// test.kt:15 box
+1 -3
View File
@@ -82,7 +82,6 @@ fun box() {
// test.kt:16 box
// test.kt:1 toString
// test.kt:17 box
// test.kt:17 box
// test.kt:1 component1
// test.kt:17 box
// test.kt:1 component2
@@ -108,7 +107,6 @@ fun box() {
// test.kt:22 box
// test.kt:6 toString
// test.kt:23 box
// test.kt:23 box
// test.kt:1 component1
// test.kt:23 box
// test.kt:1 component2
@@ -117,4 +115,4 @@ fun box() {
// test.kt:5 <init>
// test.kt:5 <init>
// test.kt:5 <init>
// test.kt:25 box
// test.kt:25 box
+1 -2
View File
@@ -25,7 +25,6 @@ inline fun getB(): Int {
// test.kt:8 box
// EXPECTATIONS JS_IR
// test.kt:14 box
// test.kt:4 box
// test.kt:11 getA
// test.kt:14 box
// test.kt:8 box
+1 -7
View File
@@ -40,13 +40,7 @@ fun box() {
// EXPECTATIONS JS_IR
// test.kt:20 box
// test.kt:4 foo
// test.kt:8 foo
// test.kt:12 foo
// test.kt:17 foo
// test.kt:21 box
// test.kt:4 foo
// test.kt:8 foo
// test.kt:12 foo
// test.kt:17 foo
// test.kt:22 box
// test.kt:22 box
@@ -56,23 +56,12 @@ fun nop() {}
// test.kt:21 box
// EXPECTATIONS JS_IR
// test.kt:24 box
// test.kt:3 box
// test.kt:4 box
// test.kt:30 nop
// test.kt:24 box
// test.kt:8 box
// test.kt:28 box
// test.kt:8 box
// test.kt:24 box
// test.kt:9 box
// test.kt:7 box
// test.kt:11 box
// test.kt:30 nop
// test.kt:24 box
// test.kt:16 box
// test.kt:27 box
// test.kt:14 box
// test.kt:19 box
// test.kt:30 nop
// test.kt:21 box
+1 -2
View File
@@ -20,7 +20,6 @@ inline fun foo() = {
// test.kt:6 box
// EXPECTATIONS JS_IR
// test1.kt:10 box
// test.kt:5 box
// test1.kt:9 box
// test1.kt:7 box$lambda
// test.kt:6 box
+1 -2
View File
@@ -26,8 +26,7 @@ inline fun foo() = {
// test.kt:7 box
// EXPECTATIONS JS_IR
// test1.kt:11 box
// test.kt:5 box
// test1.kt:10 box
// test.kt:6 box
// test1.kt:8 box$lambda
// test.kt:7 box
+1 -2
View File
@@ -44,8 +44,7 @@ fun baz(v:(() -> Unit)) {
// test3.kt:15 baz
// test1.kt:9 box$lambda
// test3.kt:16 baz
// test1.kt:12 box
// test.kt:6 box
// test1.kt:11 box
// test.kt:7 box
// test3.kt:15 baz
// test1.kt:9 box$lambda
-4
View File
@@ -25,8 +25,4 @@ fun box(): String {
// test.kt:13 box
// EXPECTATIONS JS_IR
// test.kt:8 box
// test.kt:4 box
// test.kt:10 box
// test.kt:4 box
// test.kt:13 box
@@ -30,8 +30,4 @@ fun box(): String {
// test.kt:16 box
// EXPECTATIONS JS_IR
// test.kt:2 box
// test.kt:3 box
// test.kt:7 box
// test.kt:10 box
// test.kt:16 box
-3
View File
@@ -69,8 +69,5 @@ inline fun html(init: () -> Unit) {
// 1.kt:33 box
// 1.kt:36 box
// 1.kt:37 box
// 1.kt:37 box
// 1.kt:41 box
// test.kt:15 box
// test.kt:19 box
// test.kt:21 box
@@ -23,6 +23,5 @@ inline fun lookAtMe(f: () -> Int) {
// EXPECTATIONS JS_IR
// test.kt:11 box
// test.kt:6 box
// test.kt:12 box
// test.kt:8 box
@@ -26,5 +26,4 @@ fun box(): String {
// test.kt:14 box
// EXPECTATIONS JS_IR
// test.kt:5 box
// test.kt:14 box
// test.kt:14 box
+1 -3
View File
@@ -38,6 +38,4 @@ fun box(): String {
// test.kt:10 box
// EXPECTATIONS JS_IR
// test.kt:3 box
// test.kt:5 box
// test.kt:6 box
// test.kt:10 box
@@ -38,14 +38,12 @@ fun fail() : String {
// test.kt:9 box
// EXPECTATIONS JS_IR
// test.kt:16 box
// test.kt:4 box
// test.kt:20 fail
// test.kt:4 box
// test.kt:13 checkEquals
// test.kt:7 box
// test.kt:20 fail
// test.kt:16 box
// test.kt:7 box
// test.kt:13 checkEquals
// test.kt:9 box
@@ -36,14 +36,12 @@ fun fail() : String {
// test.kt:11 box
// EXPECTATIONS JS_IR
// test.kt:14 box
// test.kt:6 box
// test.kt:18 fail
// test.kt:6 box
// test.kt:3 execute
// test.kt:9 box
// test.kt:18 fail
// test.kt:14 box
// test.kt:9 box
// test.kt:3 execute
// test.kt:11 box
@@ -38,14 +38,8 @@ fun fail() : String {
// test.kt:9 box
// EXPECTATIONS JS_IR
// test.kt:16 box
// test.kt:4 box
// test.kt:5 box
// test.kt:20 fail
// test.kt:16 box
// test.kt:7 box
// test.kt:20 fail
// test.kt:16 box
// test.kt:8 box
// test.kt:16 box
// test.kt:9 box
@@ -38,10 +38,8 @@ fun fail() : String {
// EXPECTATIONS JS_IR
// test.kt:12 box
// test.kt:4 box
// test.kt:16 fail
// test.kt:7 box
// test.kt:16 fail
// test.kt:12 box
// test.kt:7 box
// test.kt:9 box
-8
View File
@@ -117,9 +117,7 @@ fun box() {
// test.kt:4 stringSwitch
// test.kt:5 stringSwitch
// test.kt:11 stringSwitch
// test.kt:11 stringSwitch
// test.kt:12 stringSwitch
// test.kt:19 stringSwitch
// test.kt:18 stringSwitch
// test.kt:21 stringSwitch
// test.kt:26 stringSwitch
@@ -127,9 +125,7 @@ fun box() {
// test.kt:4 stringSwitch
// test.kt:6 stringSwitch
// test.kt:11 stringSwitch
// test.kt:11 stringSwitch
// test.kt:13 stringSwitch
// test.kt:19 stringSwitch
// test.kt:18 stringSwitch
// test.kt:22 stringSwitch
// test.kt:26 stringSwitch
@@ -137,9 +133,7 @@ fun box() {
// test.kt:4 stringSwitch
// test.kt:7 stringSwitch
// test.kt:11 stringSwitch
// test.kt:11 stringSwitch
// test.kt:14 stringSwitch
// test.kt:19 stringSwitch
// test.kt:18 stringSwitch
// test.kt:23 stringSwitch
// test.kt:26 stringSwitch
@@ -147,9 +141,7 @@ fun box() {
// test.kt:4 stringSwitch
// test.kt:8 stringSwitch
// test.kt:11 stringSwitch
// test.kt:11 stringSwitch
// test.kt:15 stringSwitch
// test.kt:19 stringSwitch
// test.kt:18 stringSwitch
// test.kt:24 stringSwitch
// test.kt:26 stringSwitch
@@ -100,9 +100,7 @@ fun box() {
// test.kt:4 stringSwitch
// test.kt:5 stringSwitch
// test.kt:10 stringSwitch
// test.kt:10 stringSwitch
// test.kt:11 stringSwitch
// test.kt:17 stringSwitch
// test.kt:16 stringSwitch
// test.kt:19 stringSwitch
// test.kt:23 stringSwitch
@@ -110,9 +108,7 @@ fun box() {
// test.kt:4 stringSwitch
// test.kt:6 stringSwitch
// test.kt:10 stringSwitch
// test.kt:10 stringSwitch
// test.kt:12 stringSwitch
// test.kt:17 stringSwitch
// test.kt:16 stringSwitch
// test.kt:20 stringSwitch
// test.kt:23 stringSwitch
@@ -120,9 +116,7 @@ fun box() {
// test.kt:4 stringSwitch
// test.kt:7 stringSwitch
// test.kt:10 stringSwitch
// test.kt:10 stringSwitch
// test.kt:13 stringSwitch
// test.kt:17 stringSwitch
// test.kt:16 stringSwitch
// test.kt:21 stringSwitch
// test.kt:23 stringSwitch
@@ -26,7 +26,7 @@ suspend fun box() {
// test.kt:9 doResume
// test.kt:9 box$slambda
// test.kt:9 doResume
// test.kt:5 foo
// test.kt:6 foo
// test.kt:5 foo
// test.kt:10 doResume
// test.kt:12 doResume
@@ -18,6 +18,4 @@ fun box(): String {
// test.kt:8 box
// EXPECTATIONS JS_IR
// test.kt:4 box
// test.kt:6 box
// test.kt:8 box
@@ -52,18 +52,13 @@ fun box() {
// test.kt:16 box
// test.kt:5 foo
// test.kt:6 foo
// test.kt:10 foo
// test.kt:11 foo
// test.kt:13 foo
// test.kt:17 box
// test.kt:5 foo
// test.kt:7 foo
// test.kt:10 foo
// test.kt:11 foo
// test.kt:13 foo
// test.kt:18 box
// test.kt:5 foo
// test.kt:8 foo
// test.kt:10 foo
// test.kt:13 foo
// test.kt:19 box
-1
View File
@@ -24,5 +24,4 @@ fun box() {
// EXPECTATIONS JS_IR
// test.kt:4 box
// test.kt:4 box
// test.kt:12 box
+1 -2
View File
@@ -26,5 +26,4 @@ fun box() {
// EXPECTATIONS JS_IR
// test.kt:4 box
// test.kt:5 box
// test.kt:5 box
// test.kt:16 box
// test.kt:16 box
-6
View File
@@ -39,15 +39,9 @@ fun box() {
// EXPECTATIONS JS_IR
// test.kt:15 box
// test.kt:4 foo
// test.kt:5 foo
// test.kt:12 foo
// test.kt:16 box
// test.kt:4 foo
// test.kt:5 foo
// test.kt:12 foo
// test.kt:17 box
// test.kt:4 foo
// test.kt:5 foo
// test.kt:12 foo
// test.kt:18 box
@@ -58,22 +58,16 @@ fun box() {
// EXPECTATIONS JS_IR
// test.kt:26 box
// test.kt:4 foo
// test.kt:4 foo
// test.kt:13 foo
// test.kt:13 foo
// test.kt:15 foo
// test.kt:22 foo
// test.kt:27 box
// test.kt:4 foo
// test.kt:4 foo
// test.kt:13 foo
// test.kt:13 foo
// test.kt:17 foo
// test.kt:22 foo
// test.kt:28 box
// test.kt:4 foo
// test.kt:4 foo
// test.kt:13 foo
// test.kt:13 foo
// test.kt:19 foo
// test.kt:22 foo
@@ -26,5 +26,4 @@ fun box() {
// EXPECTATIONS JS_IR
// test.kt:4 box
// test.kt:5 box
// test.kt:5 box
// test.kt:16 box
-14
View File
@@ -73,24 +73,17 @@ fun box() {
// EXPECTATIONS JS_IR
// test.kt:18 box
// test.kt:4 foo
// test.kt:4 foo
// test.kt:5 foo
// test.kt:4 foo
// test.kt:4 foo
// test.kt:6 foo
// test.kt:4 foo
// test.kt:4 foo
// test.kt:10 foo
// test.kt:10 foo
// test.kt:13 foo
// test.kt:10 foo
// test.kt:15 foo
// test.kt:10 foo
// test.kt:10 foo
// test.kt:12 foo
// test.kt:4 foo
// test.kt:4 foo
// test.kt:10 foo
// test.kt:10 foo
// test.kt:13 foo
// test.kt:10 foo
@@ -98,24 +91,17 @@ fun box() {
// test.kt:10 foo
// test.kt:15 foo
// test.kt:10 foo
// test.kt:10 foo
// test.kt:11 foo
// test.kt:4 foo
// test.kt:4 foo
// test.kt:6 foo
// test.kt:4 foo
// test.kt:4 foo
// test.kt:10 foo
// test.kt:10 foo
// test.kt:13 foo
// test.kt:10 foo
// test.kt:15 foo
// test.kt:10 foo
// test.kt:10 foo
// test.kt:12 foo
// test.kt:4 foo
// test.kt:4 foo
// test.kt:10 foo
// test.kt:10 foo
// test.kt:13 foo
// test.kt:10 foo
-14
View File
@@ -122,50 +122,36 @@ fun box() {
// EXPECTATIONS JS_IR
// test.kt:22 box
// test.kt:5 foo
// test.kt:4 foo
// test.kt:7 foo
// test.kt:5 foo
// test.kt:4 foo
// test.kt:8 foo
// test.kt:5 foo
// test.kt:4 foo
// test.kt:13 foo
// test.kt:12 foo
// test.kt:17 foo
// test.kt:12 foo
// test.kt:19 foo
// test.kt:13 foo
// test.kt:12 foo
// test.kt:16 foo
// test.kt:5 foo
// test.kt:4 foo
// test.kt:13 foo
// test.kt:12 foo
// test.kt:17 foo
// test.kt:12 foo
// test.kt:19 foo
// test.kt:12 foo
// test.kt:19 foo
// test.kt:13 foo
// test.kt:12 foo
// test.kt:15 foo
// test.kt:5 foo
// test.kt:4 foo
// test.kt:8 foo
// test.kt:5 foo
// test.kt:4 foo
// test.kt:13 foo
// test.kt:12 foo
// test.kt:17 foo
// test.kt:12 foo
// test.kt:19 foo
// test.kt:13 foo
// test.kt:12 foo
// test.kt:16 foo
// test.kt:5 foo
// test.kt:4 foo
// test.kt:13 foo
// test.kt:12 foo
// test.kt:17 foo
// test.kt:12 foo
@@ -73,27 +73,15 @@ fun nop() {}
// EXPECTATIONS JS_IR
// test.kt:3 box
// test.kt:19 value
// test.kt:4 box
// test.kt:20 box
// test.kt:5 box
// test.kt:21 box
// test.kt:6 box
// test.kt:22 box
// test.kt:7 box
// test.kt:7 box
// test.kt:28 nop
// test.kt:20 box
// test.kt:12 box
// test.kt:21 box
// test.kt:12 box
// test.kt:20 box
// test.kt:13 box
// test.kt:26 box
// test.kt:13 box
// test.kt:21 box
// test.kt:14 box
// test.kt:25 box
// test.kt:14 box
// test.kt:14 box
// test.kt:28 nop
// test.kt:17 box
// test.kt:17 box