blob: cad35ba2b5e1aa40b164bc20e80172a12a6dc721 [file]
// TARGET_BACKEND: NATIVE
// FILECHECK_STAGE: CStubs
// MODULE: lib
// FILE: A.kt
class A {
// CHECK-DEBUG: define ptr @"kfun:A#internalInlineMethod(kotlin.Any?){}kotlin.String"
// CHECK-DEBUG: call void @"kfun:A.A$internalInlineMethod$1.<init>#internal"
internal inline fun internalInlineMethod(random: Any?) = object {
fun run() = "OK"
}.run()
// CHECK: define ptr @"kfun:A#publicMethod(){}kotlin.String"
// CHECK: call void @"kfun:A.A$publicMethod$$inlined$internalInlineMethod$1.<init>#internal"
// CHECK: call void @"kfun:A.A$publicMethod$$inlined$internalInlineMethod$2.<init>#internal"
fun publicMethod() = internalInlineMethod(1) + internalInlineMethod(2)
}
// MODULE: main()(lib)
// FILE: main.kt
// CHECK: define ptr @"kfun:#box(){}kotlin.String"
fun box(): String {
// Test that the local class is not extracted and not reused in each inline function call site
// CHECK: call void @"kfun:box$$inlined$internalInlineMethod$1.<init>#internal"
A().internalInlineMethod(3).let {
if (it != "OK") return it
}
// CHECK: call void @"kfun:box$$inlined$internalInlineMethod$2.<init>#internal"
A().internalInlineMethod(4).let {
if (it != "OK") return it
}
A().publicMethod().let {
if (it != "OKOK") return it
}
return "OK"
}