blob: 63a667e07a3c2329f2b36f2cefa1d64f9370e6b2 [file]
// RUN_PIPELINE_TILL: FRONTEND
package foo
// A member is referenced through its receiver, so a module annotation on it is ignored by the backend.
external class A {
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("f")<!>
fun f(): Int
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("p")<!>
val p: Int
<!JS_MODULE_PROHIBITED_ON_VAR!><!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("v")<!>
var v: Int<!>
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsNonModule<!>
fun nonModule(): Int
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("B")<!>
class B
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("O")<!>
object O
companion object {
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("g")<!>
fun g(): Int
}
}
external object Obj {
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("f")<!>
fun f(): Int
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("C")<!>
class C
}
external interface I {
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("f")<!>
fun f(): Int
}
// Deeper nesting: every level is referenced through its outer declaration.
external class Outer {
class Middle {
class Inner {
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("f")<!>
fun f(): Int
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("p")<!>
val p: Int
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("Deepest")<!>
class Deepest
}
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("Obj")<!>
object Obj {
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("g")<!>
fun g(): Int
}
companion object {
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("h")<!>
fun h(): Int
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("InCompanion")<!>
class InCompanion
}
}
interface NestedInterface {
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("f")<!>
fun f(): Int
}
}
// A module on the top-level declaration is fine, but not on its members at any depth.
@JsModule("TopLevel")
external class TopLevel {
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("f")<!>
fun f(): Int
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("Nested")<!>
class Nested {
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("g")<!>
fun g(): Int
}
}
@JsModule("TopLevelObject")
external object TopLevelObject {
object NestedObject {
<!JS_MODULE_PROHIBITED_ON_MEMBER!>@JsModule("f")<!>
fun f(): Int
}
}