[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
@@ -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