New J2K: Support all java operators
This commit is contained in:
committed by
Ilya Kirillov
parent
6dc8933a93
commit
2c2bd9ab5a
@@ -93,17 +93,7 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun PsiJavaToken.toJK(): JKOperator = when (tokenType) {
|
fun PsiJavaToken.toJK(): JKOperator = JKJavaOperatorImpl.tokenToOperator[tokenType] ?: error("Unsupported token-type: $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 PsiPrefixExpression.toJK(): JKExpression {
|
fun PsiPrefixExpression.toJK(): JKExpression {
|
||||||
return JKPrefixExpressionImpl(operand.toJK(), operationSign.toJK())
|
return JKPrefixExpressionImpl(operand.toJK(), operationSign.toJK())
|
||||||
|
|||||||
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.j2k.tree.impl
|
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.ast.Nullability
|
||||||
import org.jetbrains.kotlin.j2k.tree.*
|
import org.jetbrains.kotlin.j2k.tree.*
|
||||||
import org.jetbrains.kotlin.j2k.tree.JKLiteralExpression.LiteralType.*
|
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)
|
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaModifier(this, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class JKJavaOperatorImpl : JKOperator {
|
class JKJavaOperatorImpl private constructor(val token: IElementType) : JKOperator {
|
||||||
object PLUS : JKJavaOperatorImpl()
|
companion object {
|
||||||
object MINUS : JKJavaOperatorImpl()
|
val tokenToOperator = OPERATION_BIT_SET.types.associate {
|
||||||
object EQEQ : JKJavaOperatorImpl()
|
it to JKJavaOperatorImpl(it)
|
||||||
object NE : JKJavaOperatorImpl()
|
}
|
||||||
object GT : JKJavaOperatorImpl()
|
}
|
||||||
object LT : JKJavaOperatorImpl()
|
|
||||||
object GE : JKJavaOperatorImpl()
|
|
||||||
object LE : JKJavaOperatorImpl()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class JKJavaQualifierImpl : JKQualifier {
|
sealed class JKJavaQualifierImpl : JKQualifier {
|
||||||
|
|||||||
Reference in New Issue
Block a user