Process non-aload0 outer access in constructor during inline
#KT-17972 Fixed
This commit is contained in:
committed by
Michael Bogdanov
parent
5e265b3d17
commit
3f7bf8467a
@@ -0,0 +1,33 @@
|
||||
// FILE: 1.kt
|
||||
package test
|
||||
|
||||
class Test {
|
||||
|
||||
val prop: String = "OK"
|
||||
|
||||
fun test() =
|
||||
inlineFun {
|
||||
noInline {
|
||||
object {
|
||||
val inflater = prop
|
||||
}.inflater
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline fun <T> inlineFun(init: () -> T): T {
|
||||
return init()
|
||||
}
|
||||
|
||||
fun <T> noInline(init: () -> T): T {
|
||||
return init()
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
//NO_CHECK_LAMBDA_INLINING
|
||||
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
return Test().test()
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
// FILE: 1.kt
|
||||
package test
|
||||
|
||||
class Test {
|
||||
|
||||
val prop: String = "OK"
|
||||
|
||||
fun test() =
|
||||
inlineFun {
|
||||
inlineFun2 {
|
||||
object {
|
||||
val inflater = prop
|
||||
}.inflater
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline fun <T> inlineFun(init: () -> T): T {
|
||||
return init()
|
||||
}
|
||||
|
||||
inline fun <T> inlineFun2(init: () -> T): T {
|
||||
return init()
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
//NO_CHECK_LAMBDA_INLINING
|
||||
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
return Test().test()
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
// FILE: 1.kt
|
||||
package test
|
||||
|
||||
class Test {
|
||||
|
||||
val prop: String = "OK"
|
||||
|
||||
fun test() =
|
||||
inlineFun {
|
||||
noInline {
|
||||
inlineFun {
|
||||
object {
|
||||
val inflater = prop
|
||||
}.inflater
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline fun <T> inlineFun(init: () -> T): T {
|
||||
return init()
|
||||
}
|
||||
|
||||
fun <T> noInline(init: () -> T): T {
|
||||
return init()
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
//NO_CHECK_LAMBDA_INLINING
|
||||
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
return Test().test()
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
// FILE: 1.kt
|
||||
package test
|
||||
|
||||
class Test {
|
||||
|
||||
val prop: String = "OK"
|
||||
|
||||
fun test() =
|
||||
inlineFun {
|
||||
noInline {
|
||||
inlineFun {
|
||||
noInline {
|
||||
object {
|
||||
val inflater = prop
|
||||
}.inflater
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline fun <T> inlineFun(init: () -> T): T {
|
||||
return init()
|
||||
}
|
||||
|
||||
fun <T> noInline(init: () -> T): T {
|
||||
return init()
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
//NO_CHECK_LAMBDA_INLINING
|
||||
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
return Test().test()
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
// FILE: 1.kt
|
||||
package test
|
||||
|
||||
class Test {
|
||||
|
||||
val prop: String = "OK"
|
||||
|
||||
fun test() =
|
||||
inlineFun {
|
||||
noInline {
|
||||
noInline {
|
||||
object {
|
||||
val inflater = prop
|
||||
}.inflater
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline fun <T> inlineFun(init: () -> T): T {
|
||||
return init()
|
||||
}
|
||||
|
||||
fun <T> noInline(init: () -> T): T {
|
||||
return init()
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
//NO_CHECK_LAMBDA_INLINING
|
||||
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
return Test().test()
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
// FILE: 1.kt
|
||||
package test
|
||||
|
||||
open class A(val value: String)
|
||||
|
||||
class Test {
|
||||
|
||||
val prop: String = "OK"
|
||||
|
||||
fun test() =
|
||||
inlineFun {
|
||||
noInline {
|
||||
object : A(prop) {
|
||||
|
||||
}.value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline fun <T> inlineFun(init: () -> T): T {
|
||||
return init()
|
||||
}
|
||||
|
||||
fun <T> noInline(init: () -> T): T {
|
||||
return init()
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
//NO_CHECK_LAMBDA_INLINING
|
||||
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
return Test().test()
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
// FILE: 1.kt
|
||||
package test
|
||||
|
||||
open class A(val value: String)
|
||||
|
||||
class Test {
|
||||
|
||||
val prop: String = "OK"
|
||||
|
||||
fun test() =
|
||||
inlineFun {
|
||||
noInline {
|
||||
inlineFun {
|
||||
object : A(prop) {
|
||||
|
||||
}.value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline fun <T> inlineFun(init: () -> T): T {
|
||||
return init()
|
||||
}
|
||||
|
||||
fun <T> noInline(init: () -> T): T {
|
||||
return init()
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
//NO_CHECK_LAMBDA_INLINING
|
||||
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
return Test().test()
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
// FILE: 1.kt
|
||||
package test
|
||||
|
||||
open class A(val value: String)
|
||||
|
||||
class Test {
|
||||
|
||||
val prop: String = "OK"
|
||||
|
||||
fun test() =
|
||||
inlineFun {
|
||||
noInline {
|
||||
inlineFun {
|
||||
noInline {
|
||||
object : A(prop) {
|
||||
|
||||
}.value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inline fun <T> inlineFun(init: () -> T): T {
|
||||
return init()
|
||||
}
|
||||
|
||||
fun <T> noInline(init: () -> T): T {
|
||||
return init()
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
//NO_CHECK_LAMBDA_INLINING
|
||||
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
return Test().test()
|
||||
}
|
||||
Reference in New Issue
Block a user