[KT-4124] Add test case for nested native class

This commit is contained in:
Alexey Andreev
2016-02-15 14:27:25 +03:00
parent 68828317b8
commit 040a646174
3 changed files with 48 additions and 0 deletions
@@ -16,8 +16,15 @@
package org.jetbrains.kotlin.js.test.semantics;
import com.google.common.collect.Lists;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.js.JavaScript;
import org.jetbrains.kotlin.js.config.EcmaVersion;
import org.jetbrains.kotlin.js.test.SingleFileTranslationTest;
import java.io.File;
import java.util.List;
public class NestedTypesTest extends SingleFileTranslationTest {
public NestedTypesTest() {
super("nestedTypes/");
@@ -42,4 +49,22 @@ public class NestedTypesTest extends SingleFileTranslationTest {
public void testOuterObject() throws Exception {
checkFooBoxIsOk();
}
public void testNestedNative() throws Exception {
checkFooBoxIsOk();
}
@NotNull
@Override
protected List<String> additionalJsFiles(@NotNull EcmaVersion ecmaVersion) {
List<String> result = Lists.newArrayList(super.additionalJsFiles(ecmaVersion));
String jsFilePath = pathToTestDir() + "native/" + getTestName(true) + JavaScript.DOT_EXTENSION;
File jsFile = new File(jsFilePath);
if (jsFile.exists() && jsFile.isFile()) {
result.add(jsFilePath);
}
return result;
}
}
@@ -0,0 +1,16 @@
package foo
open class A {
@native class B(value: Int = 0) {
val foo: Int
get() = noImpl
fun bar(): Int = noImpl
}
}
fun box(): String {
var b = A.B(23)
if (b.foo != 123) return "failed1: ${b.foo}"
if (b.bar() != 1123) return "failed2: ${b.bar()}"
return "OK"
}
@@ -0,0 +1,7 @@
function B(value) {
this.foo = 100 + value;
}
B.prototype = {};
B.prototype.bar = function() {
return this.foo + 1000;
};