diff --git a/src/org/jetbrains/jet/j2k/ast/BinaryExpression.java b/src/org/jetbrains/jet/j2k/ast/BinaryExpression.java deleted file mode 100644 index 42c7f8773cf..00000000000 --- a/src/org/jetbrains/jet/j2k/ast/BinaryExpression.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2010-2012 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.jet.j2k.ast; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.j2k.util.AstUtil; - -import java.util.Arrays; -import java.util.List; - -/** - * @author ignatov - */ -public class BinaryExpression extends Expression { - private final Expression myLeft; - private final Expression myRight; - private final String myOp; - private final List myConversions; - - public BinaryExpression(Expression left, Expression right, String op) { - this(left, right, op, Arrays.asList("", "")); - } - - public BinaryExpression(Expression left, Expression right, String op, List conversions) { - myLeft = left; - myRight = right; - myOp = op; - myConversions = conversions; - } - - @NotNull - @Override - public String toKotlin() { - List expressionsWithConversions = AstUtil.applyConversions(AstUtil.nodesToKotlin(Arrays.asList(myLeft, myRight)), myConversions); - return AstUtil.join(expressionsWithConversions, SPACE + myOp + SPACE); - } -} diff --git a/src/org/jetbrains/jet/j2k/ast/BinaryExpression.kt b/src/org/jetbrains/jet/j2k/ast/BinaryExpression.kt new file mode 100644 index 00000000000..ead17689913 --- /dev/null +++ b/src/org/jetbrains/jet/j2k/ast/BinaryExpression.kt @@ -0,0 +1,9 @@ +package org.jetbrains.jet.j2k.ast + +import org.jetbrains.jet.j2k.util.AstUtil +import java.util.Arrays +import java.util.List + +public open class BinaryExpression(val left: Expression, val right: Expression, val op: String): Expression() { + public override fun toKotlin(): String = left.toKotlin() + " " + op + " " + right.toKotlin() +} diff --git a/src/org/jetbrains/jet/j2k/ast/MethodCallExpression.java b/src/org/jetbrains/jet/j2k/ast/MethodCallExpression.java index 8c162ae07eb..cb541679f98 100644 --- a/src/org/jetbrains/jet/j2k/ast/MethodCallExpression.java +++ b/src/org/jetbrains/jet/j2k/ast/MethodCallExpression.java @@ -46,7 +46,7 @@ public class MethodCallExpression extends Expression { @Override public boolean isNullable() { - return myIsResultNullable; + return myMethodCall.isNullable() || myIsResultNullable; } @NotNull diff --git a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java index e39b9ffc450..00323b9c8f8 100644 --- a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java +++ b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java @@ -150,10 +150,9 @@ public class ExpressionVisitor extends StatementVisitor { else { myResult = new BinaryExpression( - getConverter().expressionToExpression(expression.getLOperand()), - getConverter().expressionToExpression(expression.getROperand()), - getOperatorString(expression.getOperationSign().getTokenType()), - getConverter().createConversions(expression, PsiType.BOOLEAN) + getConverter().expressionToExpression(expression.getLOperand(), expression.getType()), + getConverter().expressionToExpression(expression.getROperand(), expression.getType()), + getOperatorString(expression.getOperationSign().getTokenType()) ); } } diff --git a/tests/testData/ast/issues/file/kt-852.kt b/tests/testData/ast/issues/file/kt-852.kt index 67038cd5c1a..5108a7b821d 100644 --- a/tests/testData/ast/issues/file/kt-852.kt +++ b/tests/testData/ast/issues/file/kt-852.kt @@ -4,7 +4,7 @@ open fun test() : String? { var s1 : String? = "" var s2 : String? = "" var s3 : String? = "" -if ((s1?.isEmpty()).sure() && (s2?.isEmpty()).sure()) +if (s1?.isEmpty()!! && s2?.isEmpty()!!) return "OK" if ((s1?.isEmpty()).sure() && (s2?.isEmpty()).sure() && (s3?.isEmpty()).sure()) return "OOOK"