diff --git a/translator/test/org/jetbrains/k2js/test/AbstractExpressionTest.java b/translator/test/org/jetbrains/k2js/test/AbstractExpressionTest.java index 6d4c92bf6d3..58e33655e39 100644 --- a/translator/test/org/jetbrains/k2js/test/AbstractExpressionTest.java +++ b/translator/test/org/jetbrains/k2js/test/AbstractExpressionTest.java @@ -3,7 +3,7 @@ package org.jetbrains.k2js.test; /** * @author Talanov Pavel */ -public abstract class AbstractExpressionTest extends IncludeLibraryTest { +public abstract class AbstractExpressionTest extends TranslationTest { private final String SUITE = "expression/"; diff --git a/translator/test/org/jetbrains/k2js/test/BasicClassTest.java b/translator/test/org/jetbrains/k2js/test/BasicClassTest.java index 55105b914c0..8bb10e7019e 100644 --- a/translator/test/org/jetbrains/k2js/test/BasicClassTest.java +++ b/translator/test/org/jetbrains/k2js/test/BasicClassTest.java @@ -5,7 +5,7 @@ import org.junit.Test; /** * @author Talanov Pavel */ -public class BasicClassTest extends IncludeLibraryTest { +public class BasicClassTest extends TranslationTest { final private static String MAIN = "class/"; diff --git a/translator/test/org/jetbrains/k2js/test/ClassInheritanceTest.java b/translator/test/org/jetbrains/k2js/test/ClassInheritanceTest.java index 128ae092eaf..b9cae04b922 100644 --- a/translator/test/org/jetbrains/k2js/test/ClassInheritanceTest.java +++ b/translator/test/org/jetbrains/k2js/test/ClassInheritanceTest.java @@ -5,7 +5,7 @@ import org.junit.Test; /** * @author Talanov Pavel */ -public final class ClassInheritanceTest extends IncludeLibraryTest { +public final class ClassInheritanceTest extends TranslationTest { final private static String MAIN = "inheritance/"; @@ -43,6 +43,11 @@ public final class ClassInheritanceTest extends IncludeLibraryTest { public void baseClassDefinedAfterDerived() throws Exception { testFooBoxIsTrue("baseClassDefinedAfterDerived.kt"); } + + @Test + public void definitionOrder() throws Exception { + testFooBoxIsTrue("definitionOrder.kt"); + } } diff --git a/translator/test/org/jetbrains/k2js/test/IncludeLibraryTest.java b/translator/test/org/jetbrains/k2js/test/IncludeLibraryTest.java deleted file mode 100644 index 4b87608a5f6..00000000000 --- a/translator/test/org/jetbrains/k2js/test/IncludeLibraryTest.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.jetbrains.k2js.test; - -import java.util.Arrays; -import java.util.List; - -/** - * @author Talanov Pavel - */ -public abstract class IncludeLibraryTest extends TranslationTest { - - @Override - protected List generateFilenameList(String inputFile) { - return Arrays.asList(kotlinLibraryPath(), inputFile); - } - -} diff --git a/translator/test/org/jetbrains/k2js/test/KotlinLibTest.java b/translator/test/org/jetbrains/k2js/test/KotlinLibTest.java index 9ebb587e83e..3c393a51d4f 100644 --- a/translator/test/org/jetbrains/k2js/test/KotlinLibTest.java +++ b/translator/test/org/jetbrains/k2js/test/KotlinLibTest.java @@ -12,7 +12,7 @@ import java.util.Map; /** * @author Talanov Pavel */ -public class KotlinLibTest extends IncludeLibraryTest { +public class KotlinLibTest extends TranslationTest { final private static String MAIN = "kotlinLib/"; diff --git a/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java b/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java index 37baf029cda..2c72d645120 100644 --- a/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java +++ b/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java @@ -5,7 +5,7 @@ import org.junit.Test; /** * @author Talanov Pavel */ -public class OperatorOverloadingTest extends IncludeLibraryTest { +public class OperatorOverloadingTest extends TranslationTest { final private static String MAIN = "operatorOverloading/"; diff --git a/translator/test/org/jetbrains/k2js/test/PatternMatchingTest.java b/translator/test/org/jetbrains/k2js/test/PatternMatchingTest.java index 50af786df8f..eb8c2f78d96 100644 --- a/translator/test/org/jetbrains/k2js/test/PatternMatchingTest.java +++ b/translator/test/org/jetbrains/k2js/test/PatternMatchingTest.java @@ -5,7 +5,7 @@ import org.junit.Test; /** * @author Talanov Pavel */ -public final class PatternMatchingTest extends IncludeLibraryTest { +public final class PatternMatchingTest extends TranslationTest { final private static String MAIN = "patternMatching/"; diff --git a/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java b/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java index de06377e759..a57e4062b09 100644 --- a/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java +++ b/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java @@ -5,7 +5,7 @@ import org.junit.Test; /** * @author Talanov Pavel */ -public final class PropertyAccessorTest extends IncludeLibraryTest { +public final class PropertyAccessorTest extends TranslationTest { final private static String MAIN = "propertyAccess/"; diff --git a/translator/test/org/jetbrains/k2js/test/RTTITest.java b/translator/test/org/jetbrains/k2js/test/RTTITest.java index 0fa4ddc4d0f..1c36a765d56 100644 --- a/translator/test/org/jetbrains/k2js/test/RTTITest.java +++ b/translator/test/org/jetbrains/k2js/test/RTTITest.java @@ -5,7 +5,7 @@ import org.junit.Test; /** * @author Talanov Pavel */ -public class RTTITest extends IncludeLibraryTest { +public class RTTITest extends TranslationTest { final private static String MAIN = "rtti/"; diff --git a/translator/test/org/jetbrains/k2js/test/TraitTest.java b/translator/test/org/jetbrains/k2js/test/TraitTest.java index d8346238200..7059564b7e8 100644 --- a/translator/test/org/jetbrains/k2js/test/TraitTest.java +++ b/translator/test/org/jetbrains/k2js/test/TraitTest.java @@ -5,7 +5,7 @@ import org.junit.Test; /** * @author Talanov Pavel */ -public final class TraitTest extends IncludeLibraryTest { +public final class TraitTest extends TranslationTest { final private static String MAIN = "trait/"; @@ -49,5 +49,10 @@ public final class TraitTest extends IncludeLibraryTest { testFooBoxIsOk("funDelegation.jet"); } + @Test + public void definitionOrder() throws Exception { + testFooBoxIsTrue("definitionOrder.kt"); + } + } diff --git a/translator/test/org/jetbrains/k2js/test/TranslationTest.java b/translator/test/org/jetbrains/k2js/test/TranslationTest.java index ae1ddbd0b58..7cbad97c0aa 100644 --- a/translator/test/org/jetbrains/k2js/test/TranslationTest.java +++ b/translator/test/org/jetbrains/k2js/test/TranslationTest.java @@ -5,6 +5,7 @@ import org.mozilla.javascript.Context; import org.mozilla.javascript.Scriptable; import java.io.FileReader; +import java.util.Arrays; import java.util.List; @@ -16,7 +17,7 @@ public abstract class TranslationTest { final protected static String TEST_FILES = "testFiles/"; final private static String CASES = "cases/"; final private static String OUT = "out/"; - final private String KOTLIN_JS_LIB = TEST_FILES + "kotlin_lib.js"; + final private static String KOTLIN_JS_LIB = TEST_FILES + "kotlin_lib.js"; protected abstract String mainDirectory(); @@ -62,7 +63,9 @@ public abstract class TranslationTest { K2JSTranslator.translate(args); } - abstract protected List generateFilenameList(String inputfile); + protected List generateFilenameList(String inputFile) { + return Arrays.asList(kotlinLibraryPath(), inputFile); + } //TODO: refactor filename generation logic private String getOutputFilePath(String filename) { @@ -87,10 +90,10 @@ public abstract class TranslationTest { reader.close(); } - protected void runRhinoTest(List filenames, RhinoResultChecker checker) throws Exception { + protected void runRhinoTest(List fileNames, RhinoResultChecker checker) throws Exception { Context cx = Context.enter(); Scriptable scope = cx.initStandardObjects(); - for (String filename : filenames) { + for (String filename : fileNames) { runFileWithRhino(filename, cx, scope); } checker.runChecks(cx, scope); diff --git a/translator/test/org/jetbrains/k2js/test/TupleTest.java b/translator/test/org/jetbrains/k2js/test/TupleTest.java index 4e8fab2ad21..3e2a66b9363 100644 --- a/translator/test/org/jetbrains/k2js/test/TupleTest.java +++ b/translator/test/org/jetbrains/k2js/test/TupleTest.java @@ -3,7 +3,7 @@ package org.jetbrains.k2js.test; /** * @author Talanov Pavel */ -public class TupleTest extends IncludeLibraryTest { +public class TupleTest extends TranslationTest { final private static String MAIN = "tuple/"; diff --git a/translator/testFiles/inheritance/cases/definitionOrder.kt b/translator/testFiles/inheritance/cases/definitionOrder.kt new file mode 100644 index 00000000000..1f57193674f --- /dev/null +++ b/translator/testFiles/inheritance/cases/definitionOrder.kt @@ -0,0 +1,37 @@ +namespace foo + +class C() : B() { + { + order = order + "C" + } +} + +class D() : B() { + { + order = order + "D" + } +} + +class E() : A() { + { + order = order + "E" + } +} + +open class B() : A() { + { + order = order + "B" + } +} + +open class A() { + + var order = "" + { + order = order + "A" + } +} + +fun box() : Boolean { + return (C().order == "ABC") && (D().order == "ABD") && (E().order == "AE") +} \ No newline at end of file diff --git a/translator/testFiles/trait/cases/definitionOrder.kt b/translator/testFiles/trait/cases/definitionOrder.kt new file mode 100644 index 00000000000..7104bdbe4aa --- /dev/null +++ b/translator/testFiles/trait/cases/definitionOrder.kt @@ -0,0 +1,41 @@ +namespace foo + +class C() : B() { + { + order = order + "C" + } +} + +class D() : B() { + { + order = order + "D" + } +} + +class E() : A() { + { + order = order + "E" + } +} + +open class B() : A(), F { + { + order = order + "B" + } +} + +open class A() : F { + + var order = "" + { + order = order + "A" + } +} + +trait F { + fun bar() = "F" +} + +fun box() : Boolean { + return (C().order == "ABC") && (D().order == "ABD") && (E().order == "AE") && (C().bar() == "F") && (A().bar() == "F") +} \ No newline at end of file