JVM IR: fix containing declaration for top level members in wrapped descriptors
In addition to fixing getContainingDeclaration, change origin of multifile facades to FILE_CLASS since the corresponding class descriptor should also be skipped when computing containing declaration. This fixes the problem with internal function calls in -Xmultifile-parts-inherit mode (previously we incorrectly mangled the function name in MethodSignatureMapper), and also fixes coroutine intrinsic calls when compiling kotlin-stdlib with JVM IR. In the latter case, all intrinsics (such as isBuiltInSuspendCoroutineUninterceptedOrReturn) are present in sources, and were previously not detected as intrinsics by the code in `generateInlineIntrinsic` because the FQ name didn't match: it had an additional component for the file class name.
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_LIGHT_ANALYSIS
|
||||
// WITH_RUNTIME
|
||||
// !INHERIT_MULTIFILE_PARTS
|
||||
|
||||
// FILE: test.kt
|
||||
|
||||
@file:JvmMultifileClass
|
||||
@file:JvmName("Test")
|
||||
|
||||
internal fun <T> List<T>.first(): T = get(0)
|
||||
|
||||
fun test(): String {
|
||||
return listOf("OK").first()
|
||||
}
|
||||
|
||||
// FILE: box.kt
|
||||
|
||||
fun box(): String = test()
|
||||
Reference in New Issue
Block a user