KT-12877: serialize information about file annotations. For each top-level declaration store containing file. Use this information to properly handle file-targeted JsModule.

This commit is contained in:
Alexey Andreev
2016-06-28 17:49:17 +03:00
committed by Alexey Andreev
parent 6df40559f0
commit ac703dfda6
35 changed files with 2087 additions and 165 deletions
@@ -0,0 +1,28 @@
define("native-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
};
});
@@ -0,0 +1,39 @@
// MODULE: lib
// FILE: lib.kt
// MODULE_KIND: AMD
@file:JsModule("native-lib")
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
// MODULE: main(lib)
// FILE: main.kt
// MODULE_KIND: AMD
package foo
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(23))
assertEquals(423, bar)
return "OK"
}