diff --git a/src/org/jetbrains/jet/j2k/Converter.java b/src/org/jetbrains/jet/j2k/Converter.java index a0725bc5066..ded34b9e8d8 100644 --- a/src/org/jetbrains/jet/j2k/Converter.java +++ b/src/org/jetbrains/jet/j2k/Converter.java @@ -761,35 +761,6 @@ public class Converter { return expression; } - @NotNull - public List createConversions(@NotNull PsiCallExpression expression) { - PsiExpressionList argumentList = expression.getArgumentList(); - PsiExpression[] arguments = argumentList != null ? argumentList.getExpressions() : new PsiExpression[]{}; - List conversions = new LinkedList(); - //noinspection UnusedDeclaration - for (final PsiExpression a : arguments) { - conversions.add(""); - } - - PsiMethod resolve = expression.resolveMethod(); - if (resolve != null) { - List expectedTypes = new LinkedList(); - List actualTypes = new LinkedList(); - - for (PsiParameter p : resolve.getParameterList().getParameters()) - expectedTypes.add(p.getType()); - - for (PsiExpression e : arguments) - actualTypes.add(e.getType()); - - if (conversions.size() == actualTypes.size() && actualTypes.size() == expectedTypes.size()) { - for (int i = 0; i < actualTypes.size(); i++) - conversions.set(i, createConversionForExpression(arguments[i], expectedTypes.get(i))); - } - } - return conversions; - } - @NotNull public List createConversions(@NotNull PsiPolyadicExpression expression, PsiType expectedType) { PsiExpression[] arguments = expression.getOperands(); diff --git a/src/org/jetbrains/jet/j2k/ast/MethodCallExpression.java b/src/org/jetbrains/jet/j2k/ast/MethodCallExpression.java deleted file mode 100644 index cb541679f98..00000000000 --- a/src/org/jetbrains/jet/j2k/ast/MethodCallExpression.java +++ /dev/null @@ -1,61 +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.ast.types.Type; -import org.jetbrains.jet.j2k.util.AstUtil; - -import java.util.List; - -/** - * @author ignatov - */ -public class MethodCallExpression extends Expression { - private final Expression myMethodCall; - private final List myArguments; - private final List myConversions; - private final boolean myIsResultNullable; - private final List myTypeParameters; - - public MethodCallExpression(Expression methodCall, List arguments, List typeParameters) { - this(methodCall, arguments, AstUtil.createListWithEmptyString(arguments), typeParameters, false); - } - - public MethodCallExpression(Expression methodCall, List arguments, List conversions, List typeParameters, boolean nullable) { - myMethodCall = methodCall; - myArguments = arguments; - myConversions = conversions; - myIsResultNullable = nullable; - myTypeParameters = typeParameters; - } - - @Override - public boolean isNullable() { - return myMethodCall.isNullable() || myIsResultNullable; - } - - @NotNull - @Override - public String toKotlin() { - String typeParamsToKotlin = myTypeParameters.size() > 0 - ? "<" + AstUtil.joinNodes(myTypeParameters, COMMA_WITH_SPACE) + ">" - : EMPTY; - List applyConversions = AstUtil.applyConversions(AstUtil.nodesToKotlin(myArguments), myConversions); - return myMethodCall.toKotlin() + typeParamsToKotlin + "(" + AstUtil.join(applyConversions, COMMA_WITH_SPACE) + ")"; - } -} diff --git a/src/org/jetbrains/jet/j2k/ast/MethodCallExpression.kt b/src/org/jetbrains/jet/j2k/ast/MethodCallExpression.kt new file mode 100644 index 00000000000..a382080b2c3 --- /dev/null +++ b/src/org/jetbrains/jet/j2k/ast/MethodCallExpression.kt @@ -0,0 +1,21 @@ +package org.jetbrains.jet.j2k.ast + +import org.jetbrains.jet.j2k.ast.types.Type +import org.jetbrains.jet.j2k.util.AstUtil +import java.util.List + +public open class MethodCallExpression(val methodCall: Expression, + val arguments: List, + val typeParameters: List, + val resultIsNullable: Boolean = false): Expression() { + public override fun isNullable(): Boolean = methodCall.isNullable() || resultIsNullable + + public override fun toKotlin(): String { + val typeParamsToKotlin: String? = (if (typeParameters.size() > 0) + "<" + AstUtil.joinNodes(typeParameters, ", ") + ">" + else + "") + val argumentsMapped = arguments.map { it.toKotlin() } + return methodCall.toKotlin() + typeParamsToKotlin + "(" + argumentsMapped.makeString(", ") + ")" + } +} diff --git a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java index 00323b9c8f8..29e3ecc8790 100644 --- a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java +++ b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java @@ -236,8 +236,7 @@ public class ExpressionVisitor extends StatementVisitor { myResult = // TODO: not resolved new MethodCallExpression( getConverter().expressionToExpression(expression.getMethodExpression()), - getConverter().expressionsToExpressionList(expression.getArgumentList().getExpressions()), - getConverter().createConversions(expression), + getConverter().argumentsToExpressionList(expression), getConverter().typesToTypeList(expression.getTypeArguments()), getConverter().typeToType(expression.getType()).getNullable() ); } @@ -289,7 +288,7 @@ public class ExpressionVisitor extends StatementVisitor { new MethodCallExpression( new IdentifierImpl("init"), getConverter().expressionsToExpressionList(arguments), - typeParameters)); + typeParameters, false)); } @NotNull diff --git a/tests/testData/ast/issues/file/kt-543-boxed.kt b/tests/testData/ast/issues/file/kt-543-boxed.kt index 17671fb7213..a27057b7c65 100644 --- a/tests/testData/ast/issues/file/kt-543-boxed.kt +++ b/tests/testData/ast/issues/file/kt-543-boxed.kt @@ -4,8 +4,8 @@ open fun putInt(i : Int?) : Unit { } open fun test() : Unit { var b : Byte = 10 -putInt((b).toInt()) +putInt(b.toInt()) var b2 : Byte? = 10 -putInt((b2).toInt()) +putInt(b2.toInt()) } } \ No newline at end of file diff --git a/tests/testData/ast/issues/file/kt-543.kt b/tests/testData/ast/issues/file/kt-543.kt index 380d97ae2f2..a37983ba916 100644 --- a/tests/testData/ast/issues/file/kt-543.kt +++ b/tests/testData/ast/issues/file/kt-543.kt @@ -4,6 +4,6 @@ open fun putInt(i : Int) : Unit { } open fun test() : Unit { var b : Byte = 10 -putInt((b).toInt()) +putInt(b.toInt()) } } \ No newline at end of file diff --git a/tests/testData/ast/issues/file/kt-809.kt b/tests/testData/ast/issues/file/kt-809.kt index 0087d79ef81..f341103f8f5 100644 --- a/tests/testData/ast/issues/file/kt-809.kt +++ b/tests/testData/ast/issues/file/kt-809.kt @@ -13,7 +13,7 @@ open class Test() { open fun putInt(i : Int) : Unit { } open fun test() : Unit { -putInt((One.myContainer?.myInt).sure()) +putInt(One.myContainer?.myInt!!) IntContainer(One.myContainer?.myInt!!) } } \ No newline at end of file