New J2K: Support all java operators

This commit is contained in:
Simon Ogorodnik
2018-05-30 21:04:48 +03:00
committed by Ilya Kirillov
parent 6dc8933a93
commit 2c2bd9ab5a
2 changed files with 9 additions and 20 deletions
@@ -93,17 +93,7 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
}
}
fun PsiJavaToken.toJK(): JKOperator = when (tokenType) {
JavaTokenType.PLUS -> JKJavaOperatorImpl.PLUS
JavaTokenType.MINUS -> JKJavaOperatorImpl.MINUS
JavaTokenType.EQEQ -> JKJavaOperatorImpl.EQEQ
JavaTokenType.NE -> JKJavaOperatorImpl.NE
JavaTokenType.GT -> JKJavaOperatorImpl.GT
JavaTokenType.LT -> JKJavaOperatorImpl.LT
JavaTokenType.GE -> JKJavaOperatorImpl.GE
JavaTokenType.LE -> JKJavaOperatorImpl.LE
else -> throw RuntimeException("Not supported")
}
fun PsiJavaToken.toJK(): JKOperator = JKJavaOperatorImpl.tokenToOperator[tokenType] ?: error("Unsupported token-type: $tokenType")
fun PsiPrefixExpression.toJK(): JKExpression {
return JKPrefixExpressionImpl(operand.toJK(), operationSign.toJK())
@@ -16,6 +16,8 @@
package org.jetbrains.kotlin.j2k.tree.impl
import com.intellij.psi.impl.source.tree.ElementType.OPERATION_BIT_SET
import com.intellij.psi.tree.IElementType
import org.jetbrains.kotlin.j2k.ast.Nullability
import org.jetbrains.kotlin.j2k.tree.*
import org.jetbrains.kotlin.j2k.tree.JKLiteralExpression.LiteralType.*
@@ -64,15 +66,12 @@ class JKJavaModifierImpl(override val type: JKJavaModifier.JavaModifierType) : J
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaModifier(this, data)
}
sealed class JKJavaOperatorImpl : JKOperator {
object PLUS : JKJavaOperatorImpl()
object MINUS : JKJavaOperatorImpl()
object EQEQ : JKJavaOperatorImpl()
object NE : JKJavaOperatorImpl()
object GT : JKJavaOperatorImpl()
object LT : JKJavaOperatorImpl()
object GE : JKJavaOperatorImpl()
object LE : JKJavaOperatorImpl()
class JKJavaOperatorImpl private constructor(val token: IElementType) : JKOperator {
companion object {
val tokenToOperator = OPERATION_BIT_SET.types.associate {
it to JKJavaOperatorImpl(it)
}
}
}
sealed class JKJavaQualifierImpl : JKQualifier {