From 985c8660b74190b59b0959ecd123fd819bcf8d3b Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Fri, 18 Mar 2016 16:28:29 +0300 Subject: [PATCH] Uast Java, Kotlin: Support all binary operators in Uast --- .../org/jetbrains/uast/kinds/UastBinaryOperator.kt | 2 +- .../uast/java/internal/javaInternalUastUtils.kt | 11 +++++++++++ .../uast/expressions/KotlinUBinaryExpression.kt | 11 +++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/plugins/uast-common/src/org/jetbrains/uast/kinds/UastBinaryOperator.kt b/plugins/uast-common/src/org/jetbrains/uast/kinds/UastBinaryOperator.kt index 7033838490a..ac19313afce 100644 --- a/plugins/uast-common/src/org/jetbrains/uast/kinds/UastBinaryOperator.kt +++ b/plugins/uast-common/src/org/jetbrains/uast/kinds/UastBinaryOperator.kt @@ -119,6 +119,6 @@ class UastBinaryOperator(override val text: String): UastOperator { val SHIFT_RIGHT_ASSIGN = UastBinaryOperator(">>=") @JvmField - val BITWISE_SHIFT_RIGHT_ASSIGN = UastBinaryOperator(">>>=") + val UNSIGNED_SHIFT_RIGHT_ASSIGN = UastBinaryOperator(">>>=") } } \ No newline at end of file diff --git a/plugins/uast-java/src/org/jetbrains/uast/java/internal/javaInternalUastUtils.kt b/plugins/uast-java/src/org/jetbrains/uast/java/internal/javaInternalUastUtils.kt index 3bda8475770..351c06c5289 100644 --- a/plugins/uast-java/src/org/jetbrains/uast/java/internal/javaInternalUastUtils.kt +++ b/plugins/uast-java/src/org/jetbrains/uast/java/internal/javaInternalUastUtils.kt @@ -44,6 +44,7 @@ internal fun PsiModifierListOwner.getVisibility(): UastVisibility { } internal fun IElementType.getOperatorType() = when (this) { + JavaTokenType.EQ -> UastBinaryOperator.ASSIGN JavaTokenType.PLUS -> UastBinaryOperator.PLUS JavaTokenType.MINUS -> UastBinaryOperator.MINUS JavaTokenType.ASTERISK -> UastBinaryOperator.MULT @@ -61,6 +62,16 @@ internal fun IElementType.getOperatorType() = when (this) { JavaTokenType.LTLT -> UastBinaryOperator.SHIFT_LEFT JavaTokenType.GTGT -> UastBinaryOperator.SHIFT_RIGHT JavaTokenType.GTGTGT -> UastBinaryOperator.BITWISE_SHIFT_RIGHT + JavaTokenType.PLUSEQ -> UastBinaryOperator.PLUS_ASSIGN + JavaTokenType.MINUSEQ -> UastBinaryOperator.MINUS_ASSIGN + JavaTokenType.ASTERISKEQ -> UastBinaryOperator.MULTIPLY_ASSIGN + JavaTokenType.DIVEQ -> UastBinaryOperator.DIVIDE_ASSIGN + JavaTokenType.ANDEQ -> UastBinaryOperator.AND_ASSIGN + JavaTokenType.XOREQ -> UastBinaryOperator.XOR_ASSIGN + JavaTokenType.OREQ -> UastBinaryOperator.OR_ASSIGN + JavaTokenType.LTLTEQ -> UastBinaryOperator.SHIFT_LEFT_ASSIGN + JavaTokenType.GTGTEQ -> UastBinaryOperator.SHIFT_RIGHT_ASSIGN + JavaTokenType.GTGTGTEQ -> UastBinaryOperator.UNSIGNED_SHIFT_RIGHT_ASSIGN else -> UastBinaryOperator.UNKNOWN } diff --git a/plugins/uast-kotlin/src/org/jetbrains/kotlin/uast/expressions/KotlinUBinaryExpression.kt b/plugins/uast-kotlin/src/org/jetbrains/kotlin/uast/expressions/KotlinUBinaryExpression.kt index 13c935f8a65..2b57ac80665 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/kotlin/uast/expressions/KotlinUBinaryExpression.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/kotlin/uast/expressions/KotlinUBinaryExpression.kt @@ -30,11 +30,17 @@ class KotlinUBinaryExpression( override val rightOperand by lz { KotlinConverter.convertOrEmpty(psi.right, this) } override val operator = when (psi.operationToken) { + KtTokens.EQ -> UastBinaryOperator.ASSIGN KtTokens.PLUS -> UastBinaryOperator.PLUS KtTokens.MINUS -> UastBinaryOperator.MINUS KtTokens.MUL -> UastBinaryOperator.MULT KtTokens.DIV -> UastBinaryOperator.DIV KtTokens.PERC -> UastBinaryOperator.MOD + KtTokens.OROR -> UastBinaryOperator.LOGICAL_OR + KtTokens.ANDAND -> UastBinaryOperator.LOGICAL_AND + //KtTokens.OR -> UastBinaryOperator.BITWISE_OR + //KtTokens.AND -> UastBinaryOperator.BITWISE_AND + //KtTokens.XOR -> UastBinaryOperator.BITWISE_XOR KtTokens.EQEQ -> UastBinaryOperator.EQUALS KtTokens.EXCLEQ -> UastBinaryOperator.NOT_EQUALS KtTokens.EQEQEQ -> UastBinaryOperator.IDENTITY_EQUALS @@ -43,6 +49,11 @@ class KotlinUBinaryExpression( KtTokens.GTEQ -> UastBinaryOperator.GREATER_OR_EQUAL KtTokens.LT -> UastBinaryOperator.LESS KtTokens.LTEQ -> UastBinaryOperator.LESS_OR_EQUAL + KtTokens.PLUSEQ -> UastBinaryOperator.PLUS_ASSIGN + KtTokens.MINUSEQ -> UastBinaryOperator.MINUS_ASSIGN + KtTokens.MULTEQ -> UastBinaryOperator.MULTIPLY_ASSIGN + KtTokens.DIVEQ -> UastBinaryOperator.DIVIDE_ASSIGN + KtTokens.PERCEQ -> UastBinaryOperator.REMAINDER_ASSIGN KtTokens.IN_KEYWORD -> KotlinBinaryOperators.IN KtTokens.NOT_IN -> KotlinBinaryOperators.NOT_IN else -> UastBinaryOperator.UNKNOWN