Java to Kotlin converter: fixed a bug with incorrect assignment generation
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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>()
|
||||
}
|
||||
Reference in New Issue
Block a user