KT-12877: add JsNonModule with support on front-end

This commit is contained in:
Alexey Andreev
2016-07-01 16:47:40 +03:00
committed by Alexey Andreev
parent 3f2ec6871d
commit 0238b182cc
20 changed files with 1581 additions and 57 deletions
@@ -0,0 +1,39 @@
// MODULE: m1
// FILE: a.kt
package foo
import kotlin.js.*
@JsModule("A") @native object A {
fun f(): Int
val g: Int
}
@JsModule("B") @native open class B {
fun foo(): Int
}
@JsModule("bar") @native fun bar(): Unit
// MODULE: m2(m1)
// FILE: b.kt
// TODO: it's hard to test @JsNonModule on file from an external module
@file:JsModule("foo")
package foo
@native fun baz(): Unit
// FILE: c.kt
package bar
import foo.*
fun box() {
A.<!CALL_TO_JS_MODULE_WITHOUT_MODULE_SYSTEM!>f<!>()+A.<!CALL_TO_JS_MODULE_WITHOUT_MODULE_SYSTEM!>g<!>
<!CALL_TO_JS_MODULE_WITHOUT_MODULE_SYSTEM!>B<!>()
<!CALL_TO_JS_MODULE_WITHOUT_MODULE_SYSTEM!>bar<!>()
<!CALL_TO_JS_MODULE_WITHOUT_MODULE_SYSTEM!>baz<!>()
}
@native class DerivedB : <!CALL_TO_JS_MODULE_WITHOUT_MODULE_SYSTEM!>B<!>()
@@ -0,0 +1,43 @@
// -- Module: <m1> --
package
package foo {
@kotlin.js.JsModule(import = "bar") @kotlin.js.native public fun bar(): kotlin.Unit
@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.JsModule(import = "B") @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
}
}
// -- Module: <m2> --
package
package bar {
public fun box(): kotlin.Unit
@kotlin.js.native public final class DerivedB : foo.B {
public constructor DerivedB()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun foo(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
package foo {
@kotlin.js.native public fun baz(): kotlin.Unit
}
@@ -0,0 +1,33 @@
// MODULE: m1
// FILE: a.kt
package foo
import kotlin.js.*
@JsNonModule @native object A {
fun f(): Int
val g: Int
}
@JsNonModule @native open class B {
fun foo(): Int
}
@JsNonModule @native fun bar(): Unit
// MODULE: m2(m1)
// MODULE_KIND: AMD
// TODO: it's hard to test @JsNonModule on file from an external module
// FILE: c.kt
package bar
import foo.*
fun box() {
A.<!CALL_TO_JS_NON_MODULE_WITH_MODULE_SYSTEM!>f<!>()+A.<!CALL_TO_JS_NON_MODULE_WITH_MODULE_SYSTEM!>g<!>
<!CALL_TO_JS_NON_MODULE_WITH_MODULE_SYSTEM!>B<!>()
<!CALL_TO_JS_NON_MODULE_WITH_MODULE_SYSTEM!>bar<!>()
}
@native class DerivedB : <!CALL_TO_JS_NON_MODULE_WITH_MODULE_SYSTEM!>B<!>()
@@ -0,0 +1,34 @@
package
package bar {
public fun box(): kotlin.Unit
@kotlin.js.native public final class DerivedB : foo.B {
public constructor DerivedB()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun foo(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
package foo {
@kotlin.js.JsNonModule @kotlin.js.native public fun bar(): kotlin.Unit
@kotlin.js.JsNonModule @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
}
}