[JVM IR] Fix lambdaInLocalFunction.kt by adding helper methods that

return the target backend under test.
This commit is contained in:
Mark Punzalan
2020-01-15 01:01:52 -08:00
committed by Alexander Udalov
parent beb3165839
commit 7329a1641a
4 changed files with 34 additions and 11 deletions
@@ -1,8 +1,10 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// WITH_REFLECT
// WITH_HELPERS
import helpers.*
fun box(): String {
fun foo(): Any {
@@ -10,11 +12,16 @@ fun box(): String {
}
val javaClass = foo().javaClass
val enclosingMethod = javaClass.getEnclosingMethod()
if (enclosingMethod?.getName() != "invoke") return "method: $enclosingMethod"
val enclosingClass = javaClass.getEnclosingClass()!!.getName()
if (enclosingClass != "LambdaInLocalFunctionKt\$box$1") return "enclosing class: $enclosingClass"
// The enclosing method is a local function, which are in a separate class (implementing FunctionN) for non-IR, and are static methods
// in the enclosing class for IR.
val actualEnclosingMethod = javaClass.getEnclosingMethod()!!.getName()
val expectedEnclosingMethod = if (isIR()) "box\$foo" else "invoke"
if (actualEnclosingMethod != expectedEnclosingMethod) return "method: $actualEnclosingMethod"
val actualEnclosingClass = javaClass.getEnclosingClass()!!.getName()
val expectedEnclosingClass = if (isIR()) "LambdaInLocalFunctionKt" else "LambdaInLocalFunctionKt\$box\$1"
if (actualEnclosingClass != expectedEnclosingClass) return "enclosing class: $actualEnclosingClass"
val declaringClass = javaClass.getDeclaringClass()
if (declaringClass != null) return "anonymous function has a declaring class: $declaringClass"