Java to Kotlin converter: fixed a bug with incorrect assignment generation

This commit is contained in:
Valentin Kipyatkov
2014-06-23 14:30:26 +04:00
parent a28e7b0872
commit 0e9edb7487
8 changed files with 23 additions and 6 deletions
@@ -29,7 +29,7 @@ class ArrayAccessExpression(val expression: Expression, val index: Expression, v
class AssignmentExpression(val left: Expression, val right: Expression, val op: String) : Expression() {
override fun generateCode(builder: CodeBuilder) {
builder.appendOperand(this, left).append(op).appendOperand(this, right)
builder.appendOperand(this, left).append(" ").append(op).append(" ").appendOperand(this, right)
}
}
+1 -1
View File
@@ -41,7 +41,7 @@ open class Field(
initializerToUse = getDefaultInitializer(this)
}
if (!initializerToUse.isEmpty) {
builder append "=" append initializerToUse
builder append " = " append initializerToUse
}
}
}
@@ -38,9 +38,9 @@ class LocalVariable(
else {
val shouldSpecifyType = settings.specifyLocalVariableTypeByDefault
if (shouldSpecifyType)
builder append identifier append ":" append typeCalculator() append "=" append initializer
builder append identifier append ":" append typeCalculator() append " = " append initializer
else
builder append identifier append "=" append initializer
builder append identifier append " = " append initializer
}
}
}
@@ -77,7 +77,7 @@ class ExpressionVisitor(private val converter: Converter,
val lhs = converter.convertExpression(expression.getLExpression())
val rhs = converter.convertExpression(expression.getRExpression()!!, expression.getLExpression().getType())
if (!secondOp.isEmpty()) {
result = AssignmentExpression(lhs, BinaryExpression(lhs, rhs, secondOp), "=")
result = AssignmentExpression(lhs, BinaryExpression(lhs, rhs, secondOp), " = ")
}
else {
result = AssignmentExpression(lhs, rhs, expression.getOperationSign().getText()!!)
@@ -145,7 +145,7 @@ abstract class AbstractJavaToKotlinConverterTest() : LightIdeaTestCase() {
private fun expressionToKotlin(code: String, settings: ConverterSettings, project: Project): String {
val result = statementToKotlin("final Object o =" + code + "}", settings, project)
return result.replaceFirst("val o:Any\\?=", "").replaceFirst("val o:Any=", "").replaceFirst("val o=", "").trim()
return result.replaceFirst("val o:Any\\? = ", "").replaceFirst("val o:Any = ", "").replaceFirst("val o = ", "").trim()
}
override fun getProjectJDK(): Sdk? {
@@ -1682,6 +1682,11 @@ public class JavaToKotlinConverterTestGenerated extends AbstractJavaToKotlinConv
doTest("j2k/tests/testData/ast/issues/qualifyStatic.java");
}
@TestMetadata("spaceBeforeAssignment.java")
public void testSpaceBeforeAssignment() throws Exception {
doTest("j2k/tests/testData/ast/issues/spaceBeforeAssignment.java");
}
}
@TestMetadata("j2k/tests/testData/ast/kotlinApiAccess")
@@ -0,0 +1,6 @@
//file
import java.util.*
class A {
List<String> list = new ArrayList<String>();
}
@@ -0,0 +1,6 @@
import java.util.*
import kotlin.List
class A() {
var list: List<String> = ArrayList<String>()
}