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,28 @@
// EXPECTED_REACHABLE_NODES: 490
// MODULE: lib1
// FILE: lib1.js
define("lib1", [], function() {
return {
foo: function() {
return "OK";
}
};
})
// MODULE: lib2(lib1)
// FILE: lib2.kt
// MODULE_KIND: AMD
@file:JsModule("lib1")
external fun foo(): String
// MODULE: lib3(lib2)
// FILE: lib3.kt
// MODULE_KIND: AMD
inline fun bar() = foo()
// MODULE: main(lib3)
// FILE: main.kt
// MODULE_KIND: AMD
fun box() = bar()