JVM_IR KT-50078 fix for-in-array loop bytecode shape

This commit is contained in:
Dmitry Petrov
2021-12-06 14:53:04 +03:00
committed by teamcity
parent 256aaa3388
commit 100d7123c2
10 changed files with 204 additions and 170 deletions
@@ -1,14 +1,13 @@
fun box() : String {
fun box(): String {
val a = arrayOfNulls<Int>(5)
var i = 0
var sum = 0
for(el in 0..4) {
a[i] = i++
for (i in 0..4) {
a[i] = i + 1
}
for (el in (a as Array<Int>)) {
sum = sum + el
}
if(sum != 10) return "a failed"
if (sum != 15) return "failed: sum=$sum"
return "OK"
}
@@ -1,14 +1,15 @@
fun box() : String {
val a = IntArray (5)
var i = 0
// WITH_RUNTIME
fun box(): String {
val a = IntArray(5)
var sum = 0
for(el in 0..4) {
a[i] = i++
for (i in 0..4) {
a[i] = i + 1
}
for (el in a) {
sum = sum + el
}
if(sum != 10) return "a failed"
if (sum != 15) return "failed: sum=$sum"
return "OK"
}
@@ -33,4 +33,4 @@ fun box(): String {
// 4 ISTORE
// 0 IADD
// 0 ISUB
// 1 IINC
// 0 IINC
@@ -31,4 +31,4 @@ fun box(): String {
// 4 ISTORE
// 0 IADD
// 0 ISUB
// 1 IINC
// 0 IINC
@@ -21,6 +21,6 @@ fun f() {
// 1 LOCALVARIABLE c C L3 L\d+ 0
// JVM_IR_TEMPLATES
// 1 ISTORE 2\s+L3
// 1 ISTORE 2\s+L4
// 1 ILOAD 2\s+INVOKEVIRTUAL java/io/PrintStream.print \(C\)V
// 1 LOCALVARIABLE c C L3 L\d+ 2
// 1 LOCALVARIABLE c C L4 L\d+ 2