Files
Ilya Chernikov 8cc9f911d5 FIR: temp: make klib symbol provider know parent packages
Current qualified access resolving algo rely (likely incorrectly,
see #KT-58037) on a providers' "knowledge" about parent packages.
This commit adds this "knowledge" to k-lib based provider.
#KT-57353 fixed
2023-04-19 11:42:03 +00:00

57 lines
1.0 KiB
Kotlin
Vendored

// DONT_TARGET_EXACT_BACKEND: JS
// KJS_WITH_FULL_RUNTIME
// MODULE: ModuleA1
// NO_COMMON_FILES
// FILE: modulea1.kt
package demoPackage.a1
@JsExport
data class ModuleA1Class(private val string: String = "A1") {
override fun toString(): String = string
}
// MODULE: ModuleA2(ModuleA1)
// NO_COMMON_FILES
// FILE: modulea2.kt
package demoPackage.a2
import demoPackage.a1.ModuleA1Class
@JsExport
fun moduleA2Function() = ModuleA1Class("A2")
// MODULE: ModuleB
// NO_COMMON_FILES
// FILE: moduleb.kt
package demoPackage.b
@JsExport
fun moduleBFunction() = "B"
// MODULE: main(ModuleA2, ModuleB)
// MODULE_KIND: COMMON_JS
// FILE: main.kt
package mainPackage
import demoPackage.*
external interface JsResult {
val moduleA1: String
val moduleA2: String
val moduleB: String
}
@JsModule("lib")
external fun jsBox(): JsResult
fun box(): String {
assertEquals(demoPackage.b.moduleBFunction(), "B")
val res = jsBox()
assertEquals(res.moduleA1, "A1")
assertEquals(res.moduleA2, "A2")
assertEquals(res.moduleB, "B")
return "OK"
}