8cc9f911d5
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
57 lines
1.0 KiB
Kotlin
Vendored
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"
|
|
} |