Do not inline non-const vals

#KT-10425 Fixed
This commit is contained in:
Denis Zharkov
2016-02-05 12:33:57 +03:00
parent f2edcd99a8
commit 0efe28a12a
4 changed files with 39 additions and 1 deletions
@@ -0,0 +1,28 @@
val x = 1
class A {
val b = 2
}
fun box(): Int {
when ("abc".length) {
x -> return 0
else -> A()
}
if (x == 0) return 1
val a = A()
when ("cde".length) {
a.b -> return 0
else -> A()
}
if (a.b == 0) return 1
return 2
}
/* 1 GETSTATIC is located within `x` public getter, other 2 are accesses that should not be inlined */
// 3 GETSTATIC NoInlineNonConstKt\.x : I
// 2 INVOKEVIRTUAL A\.getB \(\)I
@@ -1,5 +1,6 @@
const val y = "cde"
fun foo(x : String) : String {
val y = "cde"
when (x) {
"abc", "${y}" -> return "abc_cde"
"e" + "fg", "ghi" -> return "efg_ghi"