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() {
|
class AssignmentExpression(val left: Expression, val right: Expression, val op: String) : Expression() {
|
||||||
override fun generateCode(builder: CodeBuilder) {
|
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)
|
initializerToUse = getDefaultInitializer(this)
|
||||||
}
|
}
|
||||||
if (!initializerToUse.isEmpty) {
|
if (!initializerToUse.isEmpty) {
|
||||||
builder append "=" append initializerToUse
|
builder append " = " append initializerToUse
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,9 +38,9 @@ class LocalVariable(
|
|||||||
else {
|
else {
|
||||||
val shouldSpecifyType = settings.specifyLocalVariableTypeByDefault
|
val shouldSpecifyType = settings.specifyLocalVariableTypeByDefault
|
||||||
if (shouldSpecifyType)
|
if (shouldSpecifyType)
|
||||||
builder append identifier append ":" append typeCalculator() append "=" append initializer
|
builder append identifier append ":" append typeCalculator() append " = " append initializer
|
||||||
else
|
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 lhs = converter.convertExpression(expression.getLExpression())
|
||||||
val rhs = converter.convertExpression(expression.getRExpression()!!, expression.getLExpression().getType())
|
val rhs = converter.convertExpression(expression.getRExpression()!!, expression.getLExpression().getType())
|
||||||
if (!secondOp.isEmpty()) {
|
if (!secondOp.isEmpty()) {
|
||||||
result = AssignmentExpression(lhs, BinaryExpression(lhs, rhs, secondOp), "=")
|
result = AssignmentExpression(lhs, BinaryExpression(lhs, rhs, secondOp), " = ")
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
result = AssignmentExpression(lhs, rhs, expression.getOperationSign().getText()!!)
|
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 {
|
private fun expressionToKotlin(code: String, settings: ConverterSettings, project: Project): String {
|
||||||
val result = statementToKotlin("final Object o =" + code + "}", settings, project)
|
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? {
|
override fun getProjectJDK(): Sdk? {
|
||||||
|
|||||||
@@ -1682,6 +1682,11 @@ public class JavaToKotlinConverterTestGenerated extends AbstractJavaToKotlinConv
|
|||||||
doTest("j2k/tests/testData/ast/issues/qualifyStatic.java");
|
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")
|
@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