KT-12877: add diagnostics on JsModule/JsNonModule:
1) for all cases of misusing of JsModule report on JsNonModule as well 2) report about non-top-level declarations with JsModule/JsNonModule 3) report about JsModule/JsNonModule declarations inside file marked with JsModule/JsNonModule 4) report about usages of declarations not marked with both JsModule and JsNonModule from UMD module
This commit is contained in:
committed by
Alexey Andreev
parent
08a7f9c298
commit
31a1d6ca66
@@ -0,0 +1,27 @@
|
||||
// MODULE: m1
|
||||
// FILE: a.kt
|
||||
package foo
|
||||
|
||||
import kotlin.js.*
|
||||
|
||||
@JsModule("A") @native object A {
|
||||
fun f(): Int
|
||||
|
||||
val g: Int
|
||||
}
|
||||
|
||||
@JsNonModule @native open class B {
|
||||
fun foo(): Int
|
||||
}
|
||||
|
||||
// MODULE: m2(m1)
|
||||
// MODULE_KIND: UMD
|
||||
// FILE: c.kt
|
||||
package bar
|
||||
|
||||
import foo.*
|
||||
|
||||
fun box() {
|
||||
A.<!CALL_FROM_UMD_MUST_BE_JS_MODULE_AND_JS_NON_MODULE!>f<!>()+A.<!CALL_FROM_UMD_MUST_BE_JS_MODULE_AND_JS_NON_MODULE!>g<!>
|
||||
<!CALL_FROM_UMD_MUST_BE_JS_MODULE_AND_JS_NON_MODULE!>B<!>()
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package
|
||||
|
||||
package bar {
|
||||
public fun box(): kotlin.Unit
|
||||
}
|
||||
|
||||
package foo {
|
||||
|
||||
@kotlin.js.JsModule(import = "A") @kotlin.js.native public object A {
|
||||
private constructor A()
|
||||
public final val g: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun f(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@kotlin.js.JsNonModule @kotlin.js.native public open class B {
|
||||
public constructor B()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final fun foo(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
package foo
|
||||
|
||||
<!JS_MODULE_PROHIBITED_ON_VAR!>@JsModule("bar") @native var baz: Int<!> = noImpl
|
||||
<!JS_MODULE_PROHIBITED_ON_VAR!>@JsModule("bar") @native var bar: Int<!> = noImpl
|
||||
|
||||
<!JS_MODULE_PROHIBITED_ON_VAR!>@JsNonModule @native var baz: Int<!> = noImpl
|
||||
@@ -1,5 +1,6 @@
|
||||
package
|
||||
|
||||
package foo {
|
||||
@kotlin.js.JsModule(import = "bar") @kotlin.js.native public var baz: kotlin.Int
|
||||
@kotlin.js.JsModule(import = "bar") @kotlin.js.native public var bar: kotlin.Int
|
||||
@kotlin.js.JsNonModule @kotlin.js.native public var baz: kotlin.Int
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
@file:JsModule("foo")
|
||||
package foo
|
||||
|
||||
@JsModule("A") @native class <!NESTED_JS_MODULE_PROHIBITED!>A<!>
|
||||
|
||||
@JsModule("B") @native <!NESTED_JS_MODULE_PROHIBITED!>object B<!>
|
||||
|
||||
<!NESTED_JS_MODULE_PROHIBITED!>@JsModule("foo") @native fun foo()<!> = 23
|
||||
|
||||
<!NESTED_JS_MODULE_PROHIBITED!>@JsModule("bar") @native val bar<!> = 42
|
||||
|
||||
<!NESTED_JS_MODULE_PROHIBITED!>@JsNonModule @native val baz<!> = 99
|
||||
@@ -0,0 +1,21 @@
|
||||
package
|
||||
|
||||
package foo {
|
||||
@kotlin.js.JsModule(import = "bar") @kotlin.js.native public val bar: kotlin.Int = 42
|
||||
@kotlin.js.JsNonModule @kotlin.js.native public val baz: kotlin.Int = 99
|
||||
@kotlin.js.JsModule(import = "foo") @kotlin.js.native public fun foo(): kotlin.Int
|
||||
|
||||
@kotlin.js.JsModule(import = "A") @kotlin.js.native public final class A {
|
||||
public constructor A()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@kotlin.js.JsModule(import = "B") @kotlin.js.native public object B {
|
||||
private constructor B()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package foo
|
||||
|
||||
class A {
|
||||
<!JS_MODULE_PROHIBITED_ON_NON_TOPLEVEL!>@JsModule("foo") @native fun foo(): Int<!>
|
||||
}
|
||||
|
||||
object B {
|
||||
<!JS_MODULE_PROHIBITED_ON_NON_TOPLEVEL!>@JsModule("foo") @native fun bar(): Int<!>
|
||||
}
|
||||
|
||||
fun baz() {
|
||||
<!JS_MODULE_PROHIBITED_ON_NON_TOPLEVEL!>@JsModule("bzz") @native fun bzz(): Int<!>
|
||||
|
||||
@JsModule("bzz") @native class <!JS_MODULE_PROHIBITED_ON_NON_TOPLEVEL!>C<!>
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package
|
||||
|
||||
package foo {
|
||||
public fun baz(): kotlin.Unit
|
||||
|
||||
public final class A {
|
||||
public constructor A()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@kotlin.js.JsModule(import = "foo") @kotlin.js.native public final fun foo(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public object B {
|
||||
private constructor B()
|
||||
@kotlin.js.JsModule(import = "foo") @kotlin.js.native public final fun bar(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
+3
-1
@@ -6,4 +6,6 @@ package foo
|
||||
|
||||
<!JS_MODULE_PROHIBITED_ON_NON_NATIVE!>@JsModule("foo") fun foo()<!> = 23
|
||||
|
||||
<!JS_MODULE_PROHIBITED_ON_NON_NATIVE!>@JsModule("bar") val bar<!> = 42
|
||||
<!JS_MODULE_PROHIBITED_ON_NON_NATIVE!>@JsModule("bar") val bar<!> = 42
|
||||
|
||||
<!JS_MODULE_PROHIBITED_ON_NON_NATIVE!>@JsNonModule val baz<!> = 99
|
||||
+1
@@ -2,6 +2,7 @@ package
|
||||
|
||||
package foo {
|
||||
@kotlin.js.JsModule(import = "bar") public val bar: kotlin.Int = 42
|
||||
@kotlin.js.JsNonModule public val baz: kotlin.Int = 99
|
||||
@kotlin.js.JsModule(import = "foo") public fun foo(): kotlin.Int
|
||||
|
||||
@kotlin.js.JsModule(import = "A") public final class A {
|
||||
|
||||
Reference in New Issue
Block a user