JVM_IR: further refine synthetic accessor generation
References to protected members from crossinline lambdas in the same package do not need accessors.
This commit is contained in:
+31
@@ -0,0 +1,31 @@
|
||||
// !LANGUAGE: -ProhibitProtectedCallFromInline
|
||||
// IGNORE_BACKEND: JVM
|
||||
// IGNORE_BACKEND_MULTI_MODULE: JVM
|
||||
// FILE: 1.kt
|
||||
|
||||
package test
|
||||
|
||||
inline fun runCrossinline(crossinline f: () -> String) = f()
|
||||
|
||||
open class Base {
|
||||
protected open val FOO = "O"
|
||||
|
||||
protected open fun test() = "K"
|
||||
}
|
||||
|
||||
open class P : Base() {
|
||||
inline fun protectedProp(crossinline f: (String) -> String): String =
|
||||
runCrossinline { f(FOO) }
|
||||
|
||||
inline fun protectedFun(crossinline f: (String) -> String): String =
|
||||
runCrossinline { f(test()) }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
import test.*
|
||||
|
||||
fun box() : String {
|
||||
val p = P()
|
||||
return p.protectedProp { it } + p.protectedFun { it }
|
||||
}
|
||||
Reference in New Issue
Block a user