New J2K: Operators translation.
This commit is contained in:
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.j2k
|
package org.jetbrains.kotlin.j2k
|
||||||
|
|
||||||
|
import com.intellij.psi.JavaTokenType
|
||||||
|
import com.intellij.psi.tree.IElementType
|
||||||
import org.jetbrains.kotlin.j2k.ast.Nullability
|
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||||
import org.jetbrains.kotlin.j2k.tree.*
|
import org.jetbrains.kotlin.j2k.tree.*
|
||||||
import org.jetbrains.kotlin.j2k.tree.impl.JKBodyStub
|
import org.jetbrains.kotlin.j2k.tree.impl.JKBodyStub
|
||||||
@@ -37,6 +39,13 @@ class NewCodeBuilder {
|
|||||||
JKClass.ClassKind.INTERFACE -> "interface"
|
JKClass.ClassKind.INTERFACE -> "interface"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun operatorString(operator: IElementType): String {
|
||||||
|
return when (operator) {
|
||||||
|
JavaTokenType.DIV -> "/"
|
||||||
|
else -> "TODO: $operator"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
inner class Visitor : JKVisitorVoid {
|
inner class Visitor : JKVisitorVoid {
|
||||||
override fun visitTreeElement(treeElement: JKTreeElement) {
|
override fun visitTreeElement(treeElement: JKTreeElement) {
|
||||||
printer.print("/* !!! Hit visitElement for element type: ${treeElement::class} !!! */")
|
printer.print("/* !!! Hit visitElement for element type: ${treeElement::class} !!! */")
|
||||||
@@ -111,7 +120,7 @@ class NewCodeBuilder {
|
|||||||
override fun visitBinaryExpression(binaryExpression: JKBinaryExpression) {
|
override fun visitBinaryExpression(binaryExpression: JKBinaryExpression) {
|
||||||
binaryExpression.left.accept(this)
|
binaryExpression.left.accept(this)
|
||||||
printer.printWithNoIndent(" ")
|
printer.printWithNoIndent(" ")
|
||||||
printer.printWithNoIndent(binaryExpression.operator)
|
printer.printWithNoIndent(operatorString(binaryExpression.operator.token))
|
||||||
printer.printWithNoIndent(" ")
|
printer.printWithNoIndent(" ")
|
||||||
binaryExpression.right.accept(this)
|
binaryExpression.right.accept(this)
|
||||||
}
|
}
|
||||||
@@ -121,13 +130,13 @@ class NewCodeBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun visitPrefixExpression(prefixExpression: JKPrefixExpression) {
|
override fun visitPrefixExpression(prefixExpression: JKPrefixExpression) {
|
||||||
printer.printWithNoIndent(prefixExpression.operator)
|
printer.printWithNoIndent(operatorString(prefixExpression.operator.token))
|
||||||
prefixExpression.expression.accept(this)
|
prefixExpression.expression.accept(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitPostfixExpression(postfixExpression: JKPostfixExpression) {
|
override fun visitPostfixExpression(postfixExpression: JKPostfixExpression) {
|
||||||
postfixExpression.expression.accept(this)
|
postfixExpression.expression.accept(this)
|
||||||
printer.printWithNoIndent(postfixExpression.operator)
|
printer.printWithNoIndent(operatorString(postfixExpression.operator.token))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitQualifiedExpression(qualifiedExpression: JKQualifiedExpression) {
|
override fun visitQualifiedExpression(qualifiedExpression: JKQualifiedExpression) {
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ class JKJavaModifierImpl(override val type: JKJavaModifier.JavaModifierType) : J
|
|||||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaModifier(this, data)
|
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaModifier(this, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
class JKJavaOperatorImpl private constructor(val token: IElementType) : JKOperator {
|
class JKJavaOperatorImpl private constructor(override val token: IElementType) : JKOperator {
|
||||||
companion object {
|
companion object {
|
||||||
val tokenToOperator = OPERATION_BIT_SET.types.associate {
|
val tokenToOperator = OPERATION_BIT_SET.types.associate {
|
||||||
it to JKJavaOperatorImpl(it)
|
it to JKJavaOperatorImpl(it)
|
||||||
|
|||||||
@@ -16,8 +16,10 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.j2k.tree.impl
|
package org.jetbrains.kotlin.j2k.tree.impl
|
||||||
|
|
||||||
|
import com.intellij.psi.tree.IElementType
|
||||||
import org.jetbrains.kotlin.j2k.tree.*
|
import org.jetbrains.kotlin.j2k.tree.*
|
||||||
import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor
|
import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor
|
||||||
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
|
|
||||||
class JKKtPropertyImpl(
|
class JKKtPropertyImpl(
|
||||||
modifierList: JKModifierList,
|
modifierList: JKModifierList,
|
||||||
@@ -79,11 +81,11 @@ class JKKtLiteralExpressionImpl(
|
|||||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitKtLiteralExpression(this, data)
|
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitKtLiteralExpression(this, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class JKKtOperatorImpl : JKOperator, JKElementBase() {
|
sealed class JKKtOperatorImpl(override val token: IElementType) : JKOperator, JKElementBase() {
|
||||||
object PLUS : JKKtOperatorImpl()
|
object PLUS : JKKtOperatorImpl(KtTokens.PLUS)
|
||||||
object MINUS : JKKtOperatorImpl()
|
object MINUS : JKKtOperatorImpl(KtTokens.MINUS)
|
||||||
object EQEQ : JKKtOperatorImpl()
|
object EQEQ : JKKtOperatorImpl(KtTokens.EQEQ)
|
||||||
object NE : JKKtOperatorImpl()
|
object NE : JKKtOperatorImpl(KtTokens.NOT_IS)
|
||||||
}
|
}
|
||||||
|
|
||||||
class JKKtModifierImpl(override val type: JKKtModifier.KtModifierType) : JKKtModifier, JKElementBase() {
|
class JKKtModifierImpl(override val type: JKKtModifier.KtModifierType) : JKKtModifier, JKElementBase() {
|
||||||
|
|||||||
@@ -16,11 +16,14 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.j2k.tree
|
package org.jetbrains.kotlin.j2k.tree
|
||||||
|
|
||||||
|
import com.intellij.psi.tree.IElementType
|
||||||
import org.jetbrains.kotlin.j2k.ast.Nullability
|
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||||
import org.jetbrains.kotlin.j2k.tree.impl.JKSymbol
|
import org.jetbrains.kotlin.j2k.tree.impl.JKSymbol
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType
|
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType
|
||||||
|
|
||||||
interface JKOperator
|
interface JKOperator {
|
||||||
|
val token: IElementType
|
||||||
|
}
|
||||||
|
|
||||||
interface JKQualifier
|
interface JKQualifier
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user