KT-12877: support plain reference to declaration in UMD wrapper, support plain reference to package

This commit is contained in:
Alexey Andreev
2016-07-05 11:45:33 +03:00
committed by Alexey Andreev
parent 495c876b3b
commit d63a727474
12 changed files with 285 additions and 42 deletions
@@ -1,3 +1,6 @@
function lib(y) {
function foo(y) {
return 23 + y;
}
function baz(y) {
return 42 + y;
}
@@ -2,11 +2,17 @@
// NO_JS_MODULE_SYSTEM
package foo
@JsModule("lib")
@JsModule("libfoo")
@JsNonModule
@native fun foo(x: Int): Int = noImpl
@JsModule("libbar")
@JsNonModule
@JsName("baz")
@native fun bar(x: Int): Int = noImpl
fun box(): String {
assertEquals(65, foo(42))
assertEquals(142, bar(100))
return "OK"
}
@@ -0,0 +1,29 @@
var lib = function() {
function A(x) {
this.x = x;
}
A.prototype.foo = function (y) {
return this.x + y;
};
B = {
x: 123,
foo: function(y) {
return this.x + y;
}
};
function foo(y) {
return 323 + y;
}
var bar = 423;
return {
A: A,
B: B,
foo: foo,
bar: bar,
mbar: -1
};
}();
@@ -0,0 +1,36 @@
@file:JsModule("lib")
@file:JsNonModule
package foo
@native class A(@native val x: Int = noImpl) {
@native fun foo(y: Int): Int = noImpl
}
@native object B {
@native val x: Int = noImpl
@native fun foo(y: Int): Int = noImpl
}
@native fun foo(y: Int): Int = noImpl
@native val bar: Int = noImpl
@native var mbar: Int = noImpl
fun box(): String {
val a = A(23)
assertEquals(23, a.x)
assertEquals(65, a.foo(42))
assertEquals(123, B.x)
assertEquals(265, B.foo(142))
assertEquals(365, foo(42))
assertEquals(423, bar)
mbar = 523
assertEquals(523, mbar)
return "OK"
}
@@ -0,0 +1,29 @@
var lib = function() {
function A(x) {
this.x = x;
}
A.prototype.foo = function (y) {
return this.x + y;
};
B = {
x: 123,
foo: function(y) {
return this.x + y;
}
};
function foo(y) {
return 323 + y;
}
var bar = 423;
return {
A: A,
B: B,
foo: foo,
bar: bar,
mbar: -1
};
}();
@@ -0,0 +1,38 @@
// MODULE_KIND: UMD
// NO_JS_MODULE_SYSTEM
@file:JsModule("lib")
@file:JsNonModule
package foo
@native class A(@native val x: Int = noImpl) {
@native fun foo(y: Int): Int = noImpl
}
@native object B {
@native val x: Int = noImpl
@native fun foo(y: Int): Int = noImpl
}
@native fun foo(y: Int): Int = noImpl
@native val bar: Int = noImpl
@native var mbar: Int = noImpl
fun box(): String {
val a = A(23)
assertEquals(23, a.x)
assertEquals(65, a.foo(42))
assertEquals(123, B.x)
assertEquals(265, B.foo(142))
assertEquals(365, foo(42))
assertEquals(423, bar)
mbar = 523
assertEquals(523, mbar)
return "OK"
}