Added tests and support for binary with type RHS expressions.

This commit is contained in:
Pavel Talanov
2011-11-17 20:19:34 +04:00
parent d4fb413778
commit ca57aee040
5 changed files with 58 additions and 0 deletions
@@ -394,4 +394,12 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
}
@Override
@NotNull
public JsNode visitBinaryWithTypeRHSExpression(@NotNull JetBinaryExpressionWithTypeRHS expression,
@NotNull TranslationContext context) {
return Translation.translateExpression(expression.getLeft(), context);
}
}
@@ -44,6 +44,11 @@ public final class OperatorTable {
binaryOperatorsMap.put(JetTokens.ANDAND, JsBinaryOperator.AND);
binaryOperatorsMap.put(JetTokens.EXCLEQ, JsBinaryOperator.NEQ);
binaryOperatorsMap.put(JetTokens.PERC, JsBinaryOperator.MOD);
binaryOperatorsMap.put(JetTokens.PLUSEQ, JsBinaryOperator.ASG_ADD);
binaryOperatorsMap.put(JetTokens.MINUSEQ, JsBinaryOperator.ASG_SUB);
binaryOperatorsMap.put(JetTokens.DIVEQ, JsBinaryOperator.ASG_DIV);
binaryOperatorsMap.put(JetTokens.MULTEQ, JsBinaryOperator.ASG_MUL);
binaryOperatorsMap.put(JetTokens.PERCEQ, JsBinaryOperator.ASG_MOD);
}
static {
@@ -34,4 +34,14 @@ public final class PatternMatchingTest extends IncludeLibraryTest {
testFooBoxIsTrue("whenValue.kt");
}
@Test
public void whenNotValue() throws Exception {
testFooBoxIsTrue("whenNotValue.kt");
}
@Test
public void whenValueOrType() throws Exception {
testFooBoxIsTrue("whenValueOrType.kt");
}
}
@@ -0,0 +1,10 @@
namespace foo
fun box() : Boolean {
var a = 4
when(a) {
!is 3 => a = 10;
!is 4 => a = 20;
}
return (a == 10)
}
@@ -0,0 +1,25 @@
namespace foo
class A() {
}
class B() {
}
fun box() : Boolean {
var c : Int = 0
var a = A() : Any?
var b = null : Any?
when(a) {
is null => c = 10;
is B => c = 10000
is A => c = 20;
}
when(b) {
is null => c += 5
is B => c += 100
}
return (c == 25)
}