JS backend: fix default arguments

generate special statements, like this:
 if (arg1 === void(0))
    arg1 = value1
This commit is contained in:
Erokhin Stanislav
2013-09-27 13:20:31 +04:00
parent b2788cad97
commit 8103626121
21 changed files with 251 additions and 134 deletions
@@ -1,54 +0,0 @@
/*
* Copyright 2010-2013 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.k2js.test.semantics;
import junit.framework.Test;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.k2js.test.BasicTest;
import org.jetbrains.k2js.test.SingleFileTranslationTest;
import org.jetbrains.k2js.translate.context.Namer;
@SuppressWarnings("JUnitTestCaseWithNoTests")
public final class AdditionalTest extends SingleFileTranslationTest {
@NotNull
private final String filename;
@SuppressWarnings("JUnitTestCaseWithNonTrivialConstructors")
public AdditionalTest(@NotNull String filename) {
super("additional/");
this.filename = filename;
}
@Override
public void runTest() throws Exception {
runFunctionOutputTest(filename, Namer.getRootNamespaceName(), "box", "OK");
}
public static Test suite() throws Exception {
return TranslatorTestCaseBuilder
.suiteForDirectory(BasicTest.pathToTestFilesRoot() + "additional/cases/", new TranslatorTestCaseBuilder.NamedTestFactory() {
@NotNull
@Override
public Test createTest(@NotNull String filename) {
AdditionalTest examplesTest = new AdditionalTest(filename);
examplesTest.setName(filename);
return examplesTest;
}
});
}
}
@@ -0,0 +1,57 @@
package org.jetbrains.k2js.test.semantics;
import org.jetbrains.k2js.test.SingleFileTranslationTest;
public class DefaultArgumentsTest extends SingleFileTranslationTest {
public DefaultArgumentsTest() {
super("defaultArguments/");
}
public void testConstructorCallWithDefArg1() throws Exception {
checkFooBoxIsOk();
}
public void testConstructorCallWithDefArg2() throws Exception {
checkFooBoxIsOk();
}
public void testDefArgsWithSuperCall() throws Exception {
checkFooBoxIsOk();
}
public void testEnumWithDefArg() throws Exception {
checkFooBoxIsOk();
}
public void testEnumWithOneDefArg() throws Exception {
checkFooBoxIsOk();
}
public void testEnumWithTwoDefArgs() throws Exception {
checkFooBoxIsOk();
}
public void testExtensionFunWithDefArgs() throws Exception {
checkFooBoxIsOk();
}
public void testFunInAbstractClassWithDefArg() throws Exception {
checkFooBoxIsOk();
}
public void testOverloadFunWithDefArg() throws Exception {
checkFooBoxIsOk();
}
public void testOverrideValWithDefaultValue() throws Exception {
checkFooBoxIsOk();
}
public void testVirtualCallWithDefArg() throws Exception {
checkFooBoxIsOk();
}
}