From c7bfae7450842199b6957117b37b88f01e7f8b4f Mon Sep 17 00:00:00 2001 From: UniquePassive Date: Sun, 15 Oct 2017 01:50:14 +0200 Subject: [PATCH] Output ints rather than chars for numbers in additions/substractions too --- .../modules/decompiler/exps/FunctionExprent.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/FunctionExprent.java b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/FunctionExprent.java index 7eb7405..7ee6cfb 100644 --- a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/FunctionExprent.java +++ b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/FunctionExprent.java @@ -454,9 +454,19 @@ public class FunctionExprent extends Exprent { tracer.addMapping(bytecode); if (funcType <= FUNCTION_USHR) { - return wrapOperandString(lstOperands.get(0), false, indent, tracer) + Exprent left = lstOperands.get(0); + Exprent right = lstOperands.get(1); + + if (right.type == EXPRENT_CONST) { + ((ConstExprent) right).adjustConstType(left.getExprType()); + } + else if (left.type == EXPRENT_CONST) { + ((ConstExprent) left).adjustConstType(right.getExprType()); + } + + return wrapOperandString(left, false, indent, tracer) .append(OPERATORS[funcType]) - .append(wrapOperandString(lstOperands.get(1), true, indent, tracer)); + .append(wrapOperandString(right, true, indent, tracer)); } // try to determine more accurate type for 'char' literals