Error diagnostic for private classes in inline functions; Fix for KT-7545: IllegalAccessError when accessing private nested class through inlined function from different package
#KT-7545 Fixed
This commit is contained in:
+3
-3
@@ -1,4 +1,4 @@
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE -INVISIBLE_PRIVATE_CLASS_MEMBER_FROM_INLINE
|
||||
private class Z public constructor(){
|
||||
public val publicProperty:Int = 12
|
||||
public fun publicFun() {}
|
||||
@@ -14,7 +14,7 @@ internal inline fun testInternal() {
|
||||
Z().publicFun()
|
||||
}
|
||||
|
||||
private class Z2 {
|
||||
internal class Z2 {
|
||||
private val privateProperty = 11;
|
||||
|
||||
public val publicProperty:Int = 12
|
||||
@@ -34,7 +34,7 @@ private class Z2 {
|
||||
Z2().privateFun()
|
||||
}
|
||||
|
||||
inline fun testInternal() {
|
||||
internal inline fun testInternal() {
|
||||
privateProperty
|
||||
privateFun()
|
||||
publicProperty
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ private final class Z {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
private final class Z2 {
|
||||
internal final class Z2 {
|
||||
public constructor Z2()
|
||||
private final val privateProperty: kotlin.Int = 11
|
||||
public final val publicProperty: kotlin.Int = 12
|
||||
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE
|
||||
private class Z2 {
|
||||
internal class Z2 {
|
||||
private val privateProperty = 11;
|
||||
|
||||
public val publicProperty:Int = 12
|
||||
@@ -8,7 +8,7 @@ private class Z2 {
|
||||
|
||||
public fun publicFun() {}
|
||||
|
||||
private inner class ZInner {
|
||||
internal inner class ZInner {
|
||||
public inline fun test() {
|
||||
privateProperty
|
||||
privateFun()
|
||||
@@ -21,7 +21,7 @@ private class Z2 {
|
||||
Z2().privateFun()
|
||||
}
|
||||
|
||||
inline fun testInternal() {
|
||||
internal inline fun testInternal() {
|
||||
privateProperty
|
||||
privateFun()
|
||||
publicFun()
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package
|
||||
|
||||
private final class Z2 {
|
||||
internal final class Z2 {
|
||||
public constructor Z2()
|
||||
private final val privateProperty: kotlin.Int = 11
|
||||
public final val publicProperty: kotlin.Int = 12
|
||||
@@ -10,7 +10,7 @@ private final class Z2 {
|
||||
public final fun publicFun(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
private final inner class ZInner {
|
||||
internal final inner class ZInner {
|
||||
public constructor ZInner()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
// !DIAGNOSTICS: -EXPOSED_PARAMETER_TYPE
|
||||
|
||||
private class S public constructor() {
|
||||
fun a() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
internal inline fun x(s: S, z: () -> Unit) {
|
||||
z()
|
||||
<!PRIVATE_CLASS_MEMBER_FROM_INLINE!>S<!>()
|
||||
s.<!PRIVATE_CLASS_MEMBER_FROM_INLINE!>a<!>()
|
||||
test()
|
||||
}
|
||||
|
||||
private inline fun x2(s: S, z: () -> Unit) {
|
||||
z()
|
||||
S()
|
||||
s.a()
|
||||
test()
|
||||
}
|
||||
|
||||
private fun test(): S {
|
||||
return S()
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package
|
||||
|
||||
private fun test(): S
|
||||
private inline fun x(/*0*/ s: S, /*1*/ z: () -> kotlin.Unit): kotlin.Unit
|
||||
|
||||
private final class S {
|
||||
public constructor S()
|
||||
public final fun a(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Reference in New Issue
Block a user