@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.KaFunctionSymbol
10
10
import org.jetbrains.kotlin.analysis.api.types.KaType
11
11
import org.jetbrains.kotlin.analysis.api.types.KaTypeNullability
12
12
import org.jetbrains.kotlin.analysis.api.types.symbol
13
+ import org.jetbrains.kotlin.lexer.KtToken
13
14
import org.jetbrains.kotlin.lexer.KtTokens
14
15
import org.jetbrains.kotlin.name.CallableId
15
16
import org.jetbrains.kotlin.name.ClassId
@@ -287,7 +288,7 @@ private fun KotlinFileExtractor.extractBinaryExpression(
287
288
callable : Label <out DbCallable >,
288
289
parent : StmtExprParent
289
290
) {
290
- val op = expression.operationToken
291
+ val op = expression.operationToken as ? KtToken
291
292
val target = ((expression.resolveToCall() as ? KaSuccessCallInfo )?.call as ? KaSimpleFunctionCall )?.symbol
292
293
293
294
if (target == null ) {
@@ -304,11 +305,19 @@ private fun KotlinFileExtractor.extractBinaryExpression(
304
305
extractBinaryExpression(expression, callable, parent, tw::writeExprs_divexpr)
305
306
} else if (op == KtTokens .PERC && target.isNumericWithName(" rem" )) {
306
307
extractBinaryExpression(expression, callable, parent, tw::writeExprs_remexpr)
308
+ } else if (op == KtTokens .IDENTIFIER && target.isNumericWithName(" and" )) {
309
+ extractBinaryExpression(expression, callable, parent, tw::writeExprs_andbitexpr)
310
+ } else if (op == KtTokens .IDENTIFIER && target.isNumericWithName(" or" )) {
311
+ extractBinaryExpression(expression, callable, parent, tw::writeExprs_orbitexpr)
312
+ } else if (op == KtTokens .IDENTIFIER && target.isNumericWithName(" xor" )) {
313
+ extractBinaryExpression(expression, callable, parent, tw::writeExprs_xorbitexpr)
314
+ } else if (op == KtTokens .IDENTIFIER && target.isNumericWithName(" shl" )) {
315
+ extractBinaryExpression(expression, callable, parent, tw::writeExprs_lshiftexpr)
316
+ } else if (op == KtTokens .IDENTIFIER && target.isNumericWithName(" shr" )) {
317
+ extractBinaryExpression(expression, callable, parent, tw::writeExprs_rshiftexpr)
318
+ } else if (op == KtTokens .IDENTIFIER && target.isNumericWithName(" ushr" )) {
319
+ extractBinaryExpression(expression, callable, parent, tw::writeExprs_urshiftexpr)
307
320
} else {
308
- if (op !in listOf (KtTokens .PLUS , KtTokens .MINUS , KtTokens .MUL , KtTokens .DIV , KtTokens .PERC )) {
309
- TODO (" Unhandled binary op" )
310
- }
311
-
312
321
TODO (" Extract as method call" )
313
322
}
314
323
}
0 commit comments