Uast Java, Kotlin: Support all binary operators in Uast

This commit is contained in:
Yan Zhulanow
2016-03-18 16:28:29 +03:00
parent 3f6796f0c2
commit 985c8660b7
3 changed files with 23 additions and 1 deletions
@@ -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(">>>=")
}
}
@@ -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
}
@@ -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