JS BE: expose imported modules via $$importsForInline$$ property

... and use it as prefix to FQN in inline functions. This allows
to properly inline function declared in module A to module B,
when this function calls another function in module C.

See KT-18201
This commit is contained in:
Alexey Andreev
2017-05-31 17:49:25 +03:00
parent 978661c53d
commit 1df6f2f9a0
13 changed files with 346 additions and 50 deletions
@@ -0,0 +1,24 @@
// EXPECTED_REACHABLE_NODES: 491
// MODULE: lib1
// FILE: lib1.kt
fun foo() = "O"
fun bar() = "K"
// MODULE: lib2(lib1)
// FILE: lib2a.kt
// PROPERTY_WRITE_COUNT: name=lib1 count=1
// PROPERTY_WRITE_COUNT: name=$$imports$$ count=1
inline fun o() = foo()
// FILE: lib2b.kt
inline fun k() = bar()
// MODULE: main(lib2)
// FILE: main.kt
// RECOMPILE
fun box() = o() + k()