diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 41ed6962122..ed756ac66d9 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,23 +4,36 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
-
+
-
+
+
+
+
+
@@ -133,7 +146,7 @@
-
+
@@ -146,7 +159,7 @@
-
+
@@ -159,7 +172,7 @@
-
+
@@ -229,20 +242,38 @@
-
+
-
-
+
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -250,17 +281,8 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -268,8 +290,37 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -277,46 +328,10 @@
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -326,37 +341,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -364,8 +350,17 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -373,33 +368,56 @@
-
-
+
+
-
+
-
-
+
+
-
-
-
-
+
+
-
-
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -407,17 +425,10 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
@@ -446,22 +457,22 @@
@@ -598,7 +609,11 @@
-
+
+
+
+
+
@@ -616,7 +631,7 @@
-
+
@@ -663,8 +678,70 @@
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -686,7 +763,15 @@
-
+
+
+
+
+
+
+
+
+
@@ -704,33 +789,11 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -738,24 +801,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -792,7 +837,43 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -806,6 +887,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -837,7 +950,7 @@
-
+
@@ -871,8 +984,36 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -884,7 +1025,7 @@
-
+
@@ -892,22 +1033,43 @@
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -918,8 +1080,8 @@
-
-
+
+
@@ -942,31 +1104,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -974,48 +1113,21 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
+
+
+
-
+
+
@@ -1148,11 +1260,11 @@
-
-
-
-
-
+
+
+
+
+
localhost
@@ -1227,7 +1339,7 @@
-
+
@@ -1271,7 +1383,7 @@
-
+
@@ -1284,8 +1396,6 @@
-
-
@@ -1309,6 +1419,8 @@
+
+
@@ -1318,126 +1430,120 @@
-
+
-
+
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1479,7 +1585,7 @@
- IDEA IC-110.408
+ IDEA IC-112.121
@@ -1491,7 +1597,7 @@
- backend
+ frontend
diff --git a/js/src/com/google/dart/compiler/util/AstUtil.java b/js/src/com/google/dart/compiler/util/AstUtil.java
index 5dcb376cc92..6860f941650 100644
--- a/js/src/com/google/dart/compiler/util/AstUtil.java
+++ b/js/src/com/google/dart/compiler/util/AstUtil.java
@@ -327,4 +327,9 @@ public class AstUtil {
public static JsExpression equalsTrue(JsExpression expression, JsProgram program) {
return equals(expression, program.getTrueLiteral());
}
+
+
+ public static JsBinaryOperation sum(JsExpression left, JsExpression right) {
+ return new JsBinaryOperation(JsBinaryOperator.ADD, left, right);
+ }
}
diff --git a/translator/src/org/jetbrains/k2js/translate/context/StandardClasses.java b/translator/src/org/jetbrains/k2js/translate/context/StandardClasses.java
index 31652d4b0d4..a5fc37236da 100644
--- a/translator/src/org/jetbrains/k2js/translate/context/StandardClasses.java
+++ b/translator/src/org/jetbrains/k2js/translate/context/StandardClasses.java
@@ -30,9 +30,16 @@ public final class StandardClasses {
declareIterator(standardClasses, standardLibrary);
declareJavaArrayList(standardClasses);
declareJavaSystem(standardClasses);
+ declareInteger(standardClasses);
return standardClasses;
}
+ private static void declareInteger(@NotNull StandardClasses standardClasses) {
+ String integerFQName = ".java.lang.Integer";
+ standardClasses.declareStandardTopLevelObject(integerFQName, "Integer");
+ declareMethods(standardClasses, integerFQName, "parseInt");
+ }
+
private static void declareJavaSystem(@NotNull StandardClasses standardClasses) {
String systemFQName = ".java.lang.System";
standardClasses.declareStandardTopLevelObject(systemFQName, "System");
diff --git a/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java b/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java
index 1f54448796f..af746d54e44 100644
--- a/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java
+++ b/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java
@@ -22,6 +22,7 @@ import org.jetbrains.k2js.translate.utils.BindingUtils;
import java.util.List;
+import static org.jetbrains.k2js.translate.utils.BindingUtils.getCompileTimeValue;
import static org.jetbrains.k2js.translate.utils.TranslationUtils.notNullCheck;
import static org.jetbrains.k2js.translate.utils.TranslationUtils.translateInitializerForProperty;
@@ -217,21 +218,25 @@ public final class ExpressionVisitor extends TranslatorVisitor {
if (stringLiteral != null) {
return stringLiteral;
}
- throw new AssertionError("String templates not supported!");
+ return resolveAsTemplate(expression, context);
+ }
+
+ @NotNull
+ private JsNode resolveAsTemplate(@NotNull JetStringTemplateExpression expression,
+ @NotNull TranslationContext context) {
+ return StringTemplateTranslator.translate(expression, context);
}
@Nullable
- private JsStringLiteral resolveAsStringConstant(@NotNull JetStringTemplateExpression expression,
+ private JsStringLiteral resolveAsStringConstant(@NotNull JetExpression expression,
@NotNull TranslationContext context) {
- CompileTimeConstant> compileTimeValue =
- context.bindingContext().get(BindingContext.COMPILE_TIME_VALUE, expression);
- if (compileTimeValue != null) {
- Object value = compileTimeValue.getValue();
- assert value instanceof String : "Compile time constant template should be a String constant.";
- String constantString = (String) value;
- return context.program().getStringLiteral(constantString);
+ Object value = getCompileTimeValue(context.bindingContext(), expression);
+ if (value == null) {
+ return null;
}
- return null;
+ assert value instanceof String : "Compile time constant template should be a String constant.";
+ String constantString = (String) value;
+ return context.program().getStringLiteral(constantString);
}
@Override
diff --git a/translator/src/org/jetbrains/k2js/translate/expression/StringTemplateTranslator.java b/translator/src/org/jetbrains/k2js/translate/expression/StringTemplateTranslator.java
new file mode 100644
index 00000000000..3d9a634bf33
--- /dev/null
+++ b/translator/src/org/jetbrains/k2js/translate/expression/StringTemplateTranslator.java
@@ -0,0 +1,85 @@
+package org.jetbrains.k2js.translate.expression;
+
+import com.google.dart.compiler.backend.js.ast.JsExpression;
+import com.google.dart.compiler.backend.js.ast.JsStringLiteral;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.jetbrains.jet.lang.psi.*;
+import org.jetbrains.k2js.translate.context.TranslationContext;
+import org.jetbrains.k2js.translate.general.AbstractTranslator;
+import org.jetbrains.k2js.translate.general.Translation;
+
+import static com.google.dart.compiler.util.AstUtil.sum;
+
+/**
+ * @author Talanov Pavel
+ */
+public final class StringTemplateTranslator extends AbstractTranslator {
+
+ @NotNull
+ public static JsExpression translate(@NotNull JetStringTemplateExpression expression,
+ @NotNull TranslationContext context) {
+ return (new StringTemplateTranslator(expression, context).translate());
+ }
+
+
+ @NotNull
+ private final JetStringTemplateExpression expression;
+
+ private StringTemplateTranslator(@NotNull JetStringTemplateExpression expression,
+ @NotNull TranslationContext context) {
+ super(context);
+ this.expression = expression;
+ }
+
+ @NotNull
+ private JsExpression translate() {
+ assert expression.getEntries().length != 0 : "String template must have one or more entries.";
+ EntryVisitor entryVisitor = new EntryVisitor();
+ for (JetStringTemplateEntry entry : expression.getEntries()) {
+ entry.accept(entryVisitor);
+ }
+ return entryVisitor.getResultingExpression();
+ }
+
+ private final class EntryVisitor extends JetVisitorVoid {
+
+ @Nullable
+ private JsExpression resultingExpression = null;
+
+ void append(@NotNull JsExpression expression) {
+ if (resultingExpression == null) {
+ resultingExpression = expression;
+ } else {
+ resultingExpression = sum(resultingExpression, expression);
+ }
+ }
+
+ @Override
+ public void visitStringTemplateEntryWithExpression(@NotNull JetStringTemplateEntryWithExpression entry) {
+ JetExpression entryExpression = entry.getExpression();
+ assert entryExpression != null :
+ "JetStringTemplateEntryWithExpression must have not null entry expression.";
+ append(Translation.translateAsExpression(entryExpression, context()));
+ }
+
+ //TODO: duplication
+ @Override
+ public void visitLiteralStringTemplateEntry(@NotNull JetLiteralStringTemplateEntry entry) {
+ JsStringLiteral stringConstant = context().program().getStringLiteral(entry.getText());
+ append(stringConstant);
+ }
+
+ @Override
+ public void visitEscapeStringTemplateEntry(@NotNull JetEscapeStringTemplateEntry entry) {
+ JsStringLiteral escapedValue = context().program().getStringLiteral(entry.getUnescapedValue());
+ append(escapedValue);
+ }
+
+ @NotNull
+ public JsExpression getResultingExpression() {
+ assert resultingExpression != null;
+ return resultingExpression;
+ }
+ }
+}
diff --git a/translator/src/org/jetbrains/k2js/translate/expression/WhenTranslator.java b/translator/src/org/jetbrains/k2js/translate/expression/WhenTranslator.java
index 3fe95cc61e1..de547b82bbe 100644
--- a/translator/src/org/jetbrains/k2js/translate/expression/WhenTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/expression/WhenTranslator.java
@@ -45,6 +45,9 @@ public class WhenTranslator extends AbstractTranslator {
List entries = translateEntries();
resultingFor.setBody(AstUtil.newBlock(entries));
return resultingFor;
+// JsFunction dummyFunction = JsFunction.getAnonymousFunctionWithScope(context().jsScope());
+// dummyFunction.setBody(AstUtil.convertToBlock(resultingFor));
+// return AstUtil.newInvocation(dummyFunction);
}
@NotNull
diff --git a/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java b/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java
index 19c5b3cbaf6..7e8afbd0a3a 100644
--- a/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java
+++ b/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java
@@ -7,6 +7,7 @@ import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.calls.ResolvedCall;
+import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant;
import org.jetbrains.jet.lang.types.JetStandardClasses;
import org.jetbrains.jet.lang.types.JetType;
@@ -239,4 +240,13 @@ public final class BindingUtils {
return descriptor;
}
+ @Nullable
+ public static Object getCompileTimeValue(@NotNull BindingContext context, @NotNull JetExpression expression) {
+ CompileTimeConstant> compileTimeValue = context.get(BindingContext.COMPILE_TIME_VALUE, expression);
+ if (compileTimeValue != null) {
+ return compileTimeValue.getValue();
+ }
+ return null;
+ }
+
}
diff --git a/translator/test/org/jetbrains/k2js/test/ConditionalTest.java b/translator/test/org/jetbrains/k2js/test/ConditionalTest.java
index 449d869a16e..732278a8a3c 100644
--- a/translator/test/org/jetbrains/k2js/test/ConditionalTest.java
+++ b/translator/test/org/jetbrains/k2js/test/ConditionalTest.java
@@ -25,8 +25,8 @@ public class ConditionalTest extends AbstractExpressionTest {
}
//TODO: test fails due to isStatement issue, include when issue is solved or implement another solution
-// @Test
-// public void ifElseIf() throws Exception {
-// testFunctionOutput("elseif.kt", "foo", "box", 5);
-// }
+ @Test
+ public void ifElseIf() throws Exception {
+ testFunctionOutput("elseif.kt", "foo", "box", 5);
+ }
}
diff --git a/translator/test/org/jetbrains/k2js/test/PatternMatchingTest.java b/translator/test/org/jetbrains/k2js/test/PatternMatchingTest.java
index bc8e622bd7b..59b09a20baf 100644
--- a/translator/test/org/jetbrains/k2js/test/PatternMatchingTest.java
+++ b/translator/test/org/jetbrains/k2js/test/PatternMatchingTest.java
@@ -55,15 +55,8 @@ public final class PatternMatchingTest extends TranslationTest {
testFooBoxIsTrue("matchNullableType.kt");
}
- //TODO: tests not actual due to drop of conditionCall feature
-// @Test
-// public void whenConditionMethodCall() throws Exception {
-// testFooBoxIsTrue("whenConditionMethodCall.kt");
-// }
-//
-// @Test
-// public void whenConditionPropertyAccess() throws Exception {
-// testFooBoxIsTrue("whenConditionPropertyAccess.kt");
-// }
-
+ @Test
+ public void whenAsExpression() throws Exception {
+ testFooBoxIsTrue("whenAsExpression.kt");
+ }
}
diff --git a/translator/test/org/jetbrains/k2js/test/RhinoSystemOutputChecker.java b/translator/test/org/jetbrains/k2js/test/RhinoSystemOutputChecker.java
index 7d65afab5b3..807a6f3c1a4 100644
--- a/translator/test/org/jetbrains/k2js/test/RhinoSystemOutputChecker.java
+++ b/translator/test/org/jetbrains/k2js/test/RhinoSystemOutputChecker.java
@@ -41,13 +41,13 @@ public final class RhinoSystemOutputChecker implements RhinoResultChecker {
@NotNull
private String execMain() {
- String constructArguments = "var args = new Kotlin.Array(" + arguments.size() + ");\n";
+ String constructArguments = "var args = Kotlin.array(" + arguments.size() + ");\n";
int index = 0;
for (String argument : arguments) {
- constructArguments = constructArguments + "args[" + index + "] = \"" + argument + "\";\n";
+ constructArguments = constructArguments + "args.set(" + index + ", \"" + argument + "\");\n";
index++;
}
- String callMain = "foo.main(args)\n";
+ String callMain = "Anonymous.main(args);\n";
return constructArguments + callMain;
}
}
diff --git a/translator/test/org/jetbrains/k2js/test/StringTest.java b/translator/test/org/jetbrains/k2js/test/StringTest.java
index fa8a9b09d02..e4969660d85 100644
--- a/translator/test/org/jetbrains/k2js/test/StringTest.java
+++ b/translator/test/org/jetbrains/k2js/test/StringTest.java
@@ -23,4 +23,19 @@ public class StringTest extends AbstractExpressionTest {
public void stringAssignment() throws Exception {
testFooBoxIsTrue("stringAssignment.kt");
}
+
+ @Test
+ public void intInTemplate() throws Exception {
+ testFunctionOutput("intInTemplate.kt", "foo", "box", "my age is 3");
+ }
+
+ @Test
+ public void stringInTemplate() throws Exception {
+ testFunctionOutput("stringInTemplate.kt", "foo", "box", "oHelloo");
+ }
+
+ @Test
+ public void multipleExpressionInTemplate() throws Exception {
+ testFunctionOutput("multipleExpressionsInTemplate.kt", "foo", "box", "left = 3\nright = 2\nsum = 5\n");
+ }
}
diff --git a/translator/test/org/jetbrains/k2js/test/SystemTest.java b/translator/test/org/jetbrains/k2js/test/SystemTest.java
index 6ae1a73ab11..38ad9020589 100644
--- a/translator/test/org/jetbrains/k2js/test/SystemTest.java
+++ b/translator/test/org/jetbrains/k2js/test/SystemTest.java
@@ -27,5 +27,25 @@ public final class SystemTest extends JavaClassesTest {
checkOutput("systemPrint.kt", "Hello, world!");
}
+ @Test
+ public void printArg() throws Exception {
+ checkOutput("printArg.kt", "Hello, world!", "Hello, world!");
+ }
+
+ @Test
+ public void whileLoop() throws Exception {
+ checkOutput("whileLoop.kt", "guest1\nguest2\nguest3\nguest4\n", "guest1", "guest2", "guest3", "guest4");
+ }
+
+ @Test
+ public void ifAsExpression() throws Exception {
+ checkOutput("ifAsExpression.kt", "20\n", "10", "20");
+ }
+
+ @Test
+ public void multiLanguageHello() throws Exception {
+ checkOutput("multiLanguageHello.kt", "Salut!\n", "FR");
+ }
+
}
diff --git a/translator/test/org/jetbrains/k2js/test/TranslationTest.java b/translator/test/org/jetbrains/k2js/test/TranslationTest.java
index 07575c7ccd9..f80e3eedb43 100644
--- a/translator/test/org/jetbrains/k2js/test/TranslationTest.java
+++ b/translator/test/org/jetbrains/k2js/test/TranslationTest.java
@@ -1,5 +1,6 @@
package org.jetbrains.k2js.test;
+import org.jetbrains.k2js.K2JSTranslator;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;
diff --git a/translator/testFiles/expression/string/cases/intInTemplate.kt b/translator/testFiles/expression/string/cases/intInTemplate.kt
new file mode 100644
index 00000000000..652970e9367
--- /dev/null
+++ b/translator/testFiles/expression/string/cases/intInTemplate.kt
@@ -0,0 +1,7 @@
+namespace foo
+
+fun box() : String {
+ var number = 3
+ return ("my age is $number");
+}
+
diff --git a/translator/testFiles/expression/string/cases/multipleExpressionsInTemplate.kt b/translator/testFiles/expression/string/cases/multipleExpressionsInTemplate.kt
new file mode 100644
index 00000000000..d9adb6d2d25
--- /dev/null
+++ b/translator/testFiles/expression/string/cases/multipleExpressionsInTemplate.kt
@@ -0,0 +1,8 @@
+namespace foo
+
+fun box() : String {
+ var right = 2
+ var left = 3
+ return ("left = $left\nright = $right\nsum = ${left + right}\n");
+}
+
diff --git a/translator/testFiles/expression/string/cases/stringInTemplate.kt b/translator/testFiles/expression/string/cases/stringInTemplate.kt
new file mode 100644
index 00000000000..08b841d3f08
--- /dev/null
+++ b/translator/testFiles/expression/string/cases/stringInTemplate.kt
@@ -0,0 +1,7 @@
+namespace foo
+
+fun box() : String {
+ var name = "Hello"
+ return ("o${name}o");
+}
+
diff --git a/translator/testFiles/java/system/cases/ifAsExpression.kt b/translator/testFiles/java/system/cases/ifAsExpression.kt
new file mode 100644
index 00000000000..bb8b9c0573c
--- /dev/null
+++ b/translator/testFiles/java/system/cases/ifAsExpression.kt
@@ -0,0 +1,5 @@
+fun main(args : Array) {
+ System.out?.println(max(Integer.parseInt(args[0]), Integer.parseInt(args[1])))
+}
+
+fun max(a : Int, b : Int) = if (a > b) a else b
\ No newline at end of file
diff --git a/translator/testFiles/java/system/cases/multiLanguageHello.kt b/translator/testFiles/java/system/cases/multiLanguageHello.kt
new file mode 100644
index 00000000000..5fa8993f7cd
--- /dev/null
+++ b/translator/testFiles/java/system/cases/multiLanguageHello.kt
@@ -0,0 +1,9 @@
+fun main(args : Array) {
+ val language = if (args.size == 0) "EN" else args[0]
+ System.out?.println(when (language) {
+ "EN" => "Hello!"
+ "FR" => "Salut!"
+ "IT" => "Ciao!"
+ else => "Sorry, I can't greet you in $language yet"
+ })
+}
diff --git a/translator/testFiles/java/system/cases/printArg.kt b/translator/testFiles/java/system/cases/printArg.kt
new file mode 100644
index 00000000000..0300a93901e
--- /dev/null
+++ b/translator/testFiles/java/system/cases/printArg.kt
@@ -0,0 +1,3 @@
+fun main(args : Array) {
+ System.out?.print(args[0]);
+}
diff --git a/translator/testFiles/java/system/cases/systemPrint.kt b/translator/testFiles/java/system/cases/systemPrint.kt
index 3f6edfcdac4..4913966a4d2 100644
--- a/translator/testFiles/java/system/cases/systemPrint.kt
+++ b/translator/testFiles/java/system/cases/systemPrint.kt
@@ -1,5 +1,3 @@
-namespace foo
-
fun main(args : Array) {
System.out?.print("Hello, world!");
}
diff --git a/translator/testFiles/java/system/cases/whileLoop.kt b/translator/testFiles/java/system/cases/whileLoop.kt
new file mode 100644
index 00000000000..5ef65053397
--- /dev/null
+++ b/translator/testFiles/java/system/cases/whileLoop.kt
@@ -0,0 +1,5 @@
+fun main(args : Array) {
+ var i = 0
+ while (i < args.size)
+ System.out?.println(args[i++])
+}
diff --git a/translator/testFiles/kotlin_lib.js b/translator/testFiles/kotlin_lib.js
index 878b391810f..ce375b40a33 100644
--- a/translator/testFiles/kotlin_lib.js
+++ b/translator/testFiles/kotlin_lib.js
@@ -540,6 +540,16 @@ Kotlin.ArrayIterator = Class.create({
}
});
+Kotlin.Integer = function () {
+
+ return {
+ parseInt:function (str) {
+ return parseInt(str);
+ }
+ }
+
+}();
+
Kotlin.System = function () {
var output = "";
diff --git a/translator/testFiles/patternMatching/cases/whenAsExpression.kt b/translator/testFiles/patternMatching/cases/whenAsExpression.kt
new file mode 100644
index 00000000000..b83792a32f1
--- /dev/null
+++ b/translator/testFiles/patternMatching/cases/whenAsExpression.kt
@@ -0,0 +1,12 @@
+namespace foo
+
+
+fun box() : Boolean {
+
+ return (when(1) {
+ is 2 => 3
+ is 1 => 1
+ else => 5
+ } == 1)
+
+}
\ No newline at end of file
diff --git a/translator/translator.iml b/translator/translator.iml
index ca6199fc73b..0a4844c97a4 100644
--- a/translator/translator.iml
+++ b/translator/translator.iml
@@ -7,13 +7,13 @@
-
+
+
-