New J2K: Use binaryExpression instead of operatorExpression

This commit is contained in:
Ilya Kirillov
2018-12-24 12:19:22 +03:00
committed by Ilya Kirillov
parent 84ad58b50b
commit 11da99a1d0
7 changed files with 13 additions and 35 deletions
@@ -41,27 +41,30 @@ object ConversionsRunner {
+ConstructorConversion(context)
+ImplicitInitializerConversion(context)
+ParameterModificationInMethodCallsConversion(context)
+PrimitiveTypesInitializersConversion(context)
+DefaultArgumentsConversion(context)
+PrintlnConversion(context)
+BlockToRunConversion(context)
+LowerNullabilityInFunctionParametersConversion(context)
+JetbrainsNullableAnnotationsConverter(context)
+PrimaryConstructorDetectConversion(context)
+InsertDefaultPrimaryConstructorConversion(context)
+FieldToPropertyConversion()
+JavaStandartMethodsConversion(context)
+JavaMethodToKotlinFunctionConversion(context)
+MainFunctionConversion(context)
+LiteralConversion()
+AssertStatementConversion(context)
+PolyadicExpressionConversion()
+PolyadicExpressionConversion(context)
+SwitchStatementConversion(context)
+InstanceOfConversion()
+LiteralConversion()
+ForConversion(context)
+ForInConversion()
+CollectionOperationsConversion(context)
+ArrayOperationsConversion(context)
+TypeMappingConversion(context)
+ImplicitCastsConversion(context)
+LowerNullabilityInFunctionParametersConversion(context)
+FixNullabilityBySuperFunctionConversion(context)
+DefaultNullabilityToNullableConversion()
+NullableQualifierConversion(context)
+StringMethodsConversion(context)
//Kotlin --> Kotlin conversions
@@ -17,7 +17,6 @@
package org.jetbrains.kotlin.j2k
import org.jetbrains.kotlin.j2k.NewCodeBuilder.ParenthesisKind.*
import org.jetbrains.kotlin.j2k.ast.Mutability
import org.jetbrains.kotlin.j2k.ast.Nullability
import org.jetbrains.kotlin.j2k.conversions.parentOfType
import org.jetbrains.kotlin.j2k.tree.*
@@ -345,14 +344,6 @@ class NewCodeBuilder {
}
}
override fun visitKtOperatorExpression(ktOperatorExpression: JKKtOperatorExpression) {
ktOperatorExpression.receiver.accept(this)
printer.printWithNoIndent(" ")
printer.printWithNoIndent(ktOperatorExpression.identifier.name)
printer.printWithNoIndent(" ")
ktOperatorExpression.argument.accept(this)
}
override fun visitIfElseExpression(ifElseExpression: JKIfElseExpression) {
printer.printWithNoIndent("if (")
ifElseExpression.condition.accept(this)
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.j2k.conversions.multiResolveFqName
import org.jetbrains.kotlin.j2k.conversions.resolveFqName
import org.jetbrains.kotlin.j2k.tree.*
import org.jetbrains.kotlin.j2k.tree.impl.*
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.psi.KtNamedFunction
import java.math.BigInteger
@@ -150,7 +151,7 @@ fun untilToExpression(
to: JKExpression,
conversionContext: ConversionContext,
psiContext: PsiElement
): JKKtOperatorExpression =
): JKExpression =
rangeExpression(
from,
to,
@@ -164,7 +165,7 @@ fun downToExpression(
to: JKExpression,
conversionContext: ConversionContext,
psiContext: PsiElement
): JKKtOperatorExpression =
): JKExpression =
rangeExpression(
from,
to,
@@ -179,11 +180,11 @@ fun rangeExpression(
operatorName: String,
conversionContext: ConversionContext,
psiContext: PsiElement
): JKKtOperatorExpressionImpl {
): JKExpression {
val symbol = conversionContext.symbolProvider.provideDirectSymbol(
multiResolveFqName(ClassId.fromString("kotlin/ranges/$operatorName"), psiContext).first()
) as JKMethodSymbol
return JKKtOperatorExpressionImpl(from, symbol, to)
return JKBinaryExpressionImpl(from, to, JKKtOperatorImpl(JKKtWordOperatorToken(operatorName), symbol))
}
fun blockStatement(vararg statements: JKStatement) =
@@ -241,15 +241,6 @@ class JKKtInitDeclarationImpl(block: JKBlock) : JKKtInitDeclaration, JKBranchEle
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitKtInitDeclaration(this, data)
}
class JKKtOperatorExpressionImpl(
receiver: JKExpression,
override var identifier: JKMethodSymbol,
argument: JKExpression
) : JKKtOperatorExpression, JKBranchElementBase() {
override var receiver: JKExpression by child(receiver)
override var argument: JKExpression by child(argument)
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitKtOperatorExpression(this, data)
}
class JKKtConvertedFromForLoopSyntheticWhileStatementImpl(
variableDeclaration: JKStatement,
@@ -90,11 +90,6 @@ interface JKKtInitDeclaration : JKDeclaration {
var block: JKBlock
}
interface JKKtOperatorExpression : JKExpression {
var receiver: JKExpression
var identifier: JKMethodSymbol
var argument: JKExpression
}
interface JKKtConvertedFromForLoopSyntheticWhileStatement : JKStatement {
var variableDeclaration: JKStatement
@@ -118,7 +118,6 @@ interface JKVisitor<out R, in D> {
fun visitKtValueWhenLabel(ktValueWhenLabel: JKKtValueWhenLabel, data: D): R = visitKtWhenLabel(ktValueWhenLabel, data)
fun visitKtIsExpression(ktIsExpression: JKKtIsExpression, data: D): R = visitExpression(ktIsExpression, data)
fun visitKtInitDeclaration(ktInitDeclaration: JKKtInitDeclaration, data: D): R = visitDeclaration(ktInitDeclaration, data)
fun visitKtOperatorExpression(ktOperatorExpression: JKKtOperatorExpression, data: D): R = visitExpression(ktOperatorExpression, data)
fun visitKtConvertedFromForLoopSyntheticWhileStatement(ktConvertedFromForLoopSyntheticWhileStatement: JKKtConvertedFromForLoopSyntheticWhileStatement, data: D): R = visitStatement(ktConvertedFromForLoopSyntheticWhileStatement, data)
fun visitKtThrowExpression(ktThrowExpression: JKKtThrowExpression, data: D): R = visitExpression(ktThrowExpression, data)
fun visitKtTryExpression(ktTryExpression: JKKtTryExpression, data: D): R = visitExpression(ktTryExpression, data)
@@ -233,8 +233,6 @@ interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
override fun visitKtIsExpression(ktIsExpression: JKKtIsExpression, data: Nothing?) = visitKtIsExpression(ktIsExpression)
fun visitKtInitDeclaration(ktInitDeclaration: JKKtInitDeclaration) = visitDeclaration(ktInitDeclaration, null)
override fun visitKtInitDeclaration(ktInitDeclaration: JKKtInitDeclaration, data: Nothing?) = visitKtInitDeclaration(ktInitDeclaration)
fun visitKtOperatorExpression(ktOperatorExpression: JKKtOperatorExpression) = visitExpression(ktOperatorExpression, null)
override fun visitKtOperatorExpression(ktOperatorExpression: JKKtOperatorExpression, data: Nothing?) = visitKtOperatorExpression(ktOperatorExpression)
fun visitKtConvertedFromForLoopSyntheticWhileStatement(ktConvertedFromForLoopSyntheticWhileStatement: JKKtConvertedFromForLoopSyntheticWhileStatement) = visitStatement(ktConvertedFromForLoopSyntheticWhileStatement, null)
override fun visitKtConvertedFromForLoopSyntheticWhileStatement(ktConvertedFromForLoopSyntheticWhileStatement: JKKtConvertedFromForLoopSyntheticWhileStatement, data: Nothing?) = visitKtConvertedFromForLoopSyntheticWhileStatement(ktConvertedFromForLoopSyntheticWhileStatement)
fun visitKtThrowExpression(ktThrowExpression: JKKtThrowExpression) = visitExpression(ktThrowExpression, null)