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:
Michael Bogdanov
2016-02-02 13:56:02 +03:00
parent 71c2a6e792
commit d1db404959
19 changed files with 200 additions and 12 deletions
@@ -0,0 +1,18 @@
package test
private class S public constructor() {
class Z {
fun a(): String {
return "K"
}
}
}
// This function exposes S.Z which is a class nested into a private class S (package-private in the byte code)
// It can be accessed outside the `test` package now that S.Z. is public in the byte code, but it may be changed later
internal inline fun call(s: () -> String): String {
return s() + test().a()
}
private fun test(): S.Z {
return S.Z()
}