From b1d4261f28c7af1fb008b64490bb9e95d5ca4574 Mon Sep 17 00:00:00 2001 From: Dave Holoway Date: Fri, 5 Jun 2020 16:12:30 +0100 Subject: [PATCH] fix assignment operator types --- langserver/java/body-parser3.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/langserver/java/body-parser3.js b/langserver/java/body-parser3.js index ae43c65..15e91d2 100644 --- a/langserver/java/body-parser3.js +++ b/langserver/java/body-parser3.js @@ -908,19 +908,22 @@ function resolveAssignment(tokens, ident, lhs, op, rhs) { case "bitwise-operator": // ^ is classed as a bitwise operator, but is also a logical operator checkOperator(tokens, lhsvar, op, rhsvar, pre_assign_operator === '^' ? /^[BSIJCZ]{2}$/ : /^[BSIJC]{2}$/); + rhsvar = new Value(rhs.source, lhsvar.type); break; case "logical-operator": checkOperator(tokens, lhsvar, op, rhsvar, /^ZZ$/); break; case "muldiv-operator": - checkOperator(tokens, lhsvar, op, rhsvar, /^[BSIJC]{2}$/); + checkOperator(tokens, lhsvar, op, rhsvar, /^([BSIJC]{2}|[FD][BSIJCFD])$/); + rhsvar = new Value(rhs.source, lhsvar.type); break; case "plumin-operator": if (pre_assign_operator === '+' && lhsvar.type.typeSignature === 'Ljava/lang/String;') { // implicitly cast the rhs to a String value rhsvar = new Value(rhs.source, lhsvar.type); } else { - checkOperator(tokens, lhsvar, op, rhsvar, /^[BSIJC]{2}$/); + checkOperator(tokens, lhsvar, op, rhsvar, /^([BSIJC]{2}|[FD][BSIJCFD])$/); + rhsvar = new Value(rhs.source, lhsvar.type); } break; }