Fix for KT-13133: Incorrect InnerClasses attribute value for anonymous object copied from an inline function

#KT-13133 Fixed
This commit is contained in:
Michael Bogdanov
2016-07-22 13:06:17 +03:00
parent 91e486d020
commit 99cdc41ab6
12 changed files with 93 additions and 28 deletions
@@ -0,0 +1,33 @@
// WITH_REFLECT
// FILE: 1.kt
package test
inline fun inf(crossinline cif: Any.() -> String): () -> String {
return {
object : () -> String {
override fun invoke() = cif()
}
}()
}
// FILE: 2.kt
import test.*
fun box(): String {
val simpleName = inf {
javaClass.simpleName
}()
if (simpleName != "" ) return "fail 1: $simpleName"
val name = inf {
javaClass.name
}()
if (name != "_2Kt\$box$\$inlined\$inf$2$1" ) return "fail 2: $name"
return "OK"
}
@@ -31,7 +31,7 @@ fun box(): String {
if (enclosingMethod?.name != "invoke") return "fail 1: ${enclosingMethod?.name}"
enclosingClass = res2.javaClass.enclosingClass
if (enclosingClass?.name != "_2Kt\$box$\$inlined\$call\$lambda\$lambda$2") return "fail 2: ${enclosingClass?.name}"
if (enclosingClass?.name != "_2Kt\$box$\$inlined\$call$2\$lambda$1") return "fail 2: ${enclosingClass?.name}"
return res2()
}
@@ -26,7 +26,7 @@ fun box(): String {
}
if (encl1 != "_2Kt\$box\$\$inlined\$test\$lambda$1") return "fail 1: $encl1"
if (encl2 != "_2Kt\$box\$\$inlined\$test\$lambda\$lambda$2") return "fail 2: $encl2"
if (encl2 != "_2Kt\$box\$\$inlined\$test\$lambda$1$2") return "fail 2: $encl2"
return "OK"
}
+2 -2
View File
@@ -17,6 +17,6 @@ inline fun test(s: () -> Unit) {
s()
}
// 2 INNERCLASS Kt10259Kt\$box\$\$inlined\$test\$lambda\$1
// 2 INNERCLASS Kt10259Kt\$box\$\$inlined\$test\$lambda\$lambda\$1
// 2 INNERCLASS Kt10259Kt\$box\$\$inlined\$test\$lambda\$1\s
// 2 INNERCLASS Kt10259Kt\$box\$\$inlined\$test\$lambda\$1\$1
// 4 INNERCLASS
+2 -2
View File
@@ -17,6 +17,6 @@ inline fun test(crossinline s: () -> Unit) {
// 3 INNERCLASS Kt10259_2Kt\$test\$1 null
// 2 INNERCLASS Kt10259_2Kt\$test\$1\$1
// 2 INNERCLASS Kt10259_2Kt\$box\$\$inlined\$test\$1
// 2 INNERCLASS Kt10259_2Kt\$box\$\$inlined\$test\$lambda\$1
// 2 INNERCLASS Kt10259_2Kt\$box\$\$inlined\$test\$1\s
// 2 INNERCLASS Kt10259_2Kt\$box\$\$inlined\$test\$1\$1
// 9 INNERCLASS
+4 -4
View File
@@ -21,9 +21,9 @@ inline fun test(crossinline s: () -> Unit) {
// 3 INNERCLASS Kt10259_3Kt\$test\$1 null
// 2 INNERCLASS Kt10259_3Kt\$test\$1\$1
// 2 INNERCLASS Kt10259_3Kt\$box\$\$inlined\$test\$1
// 2 INNERCLASS Kt10259_3Kt\$box\$\$inlined\$test\$lambda\$1
// 2 INNERCLASS Kt10259_3Kt\$box\$\$inlined\$test\$1\s
// 2 INNERCLASS Kt10259_3Kt\$box\$\$inlined\$test\$1\$1\s
// inlined:
// 2 INNERCLASS Kt10259_3Kt\$box\$\$inlined\$test\$lambda\$lambda\$lambda\$1
// 2 INNERCLASS Kt10259_3Kt\$box\$\$inlined\$test\$lambda\$lambda\$lambda\$lambda\$1
// 2 INNERCLASS Kt10259_3Kt\$box\$\$inlined\$test\$1\$1\$lambda\$1\s
// 2 INNERCLASS Kt10259_3Kt\$box\$\$inlined\$test\$1\$1\$lambda\$1\$1\s
// 13 INNERCLASS