From 2c2bd9ab5ab67fbc64ea741b34c440d624128336 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Wed, 30 May 2018 21:04:48 +0300 Subject: [PATCH] New J2K: Support all java operators --- .../jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt | 12 +----------- .../org/jetbrains/kotlin/j2k/tree/impl/j.kt | 17 ++++++++--------- 2 files changed, 9 insertions(+), 20 deletions(-) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index 0b85b799fbb..c4816ec47c1 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -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()) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt index 61c5d0741d5..24a3fd4d21b 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt @@ -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 accept(visitor: JKVisitor, 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 {