Skip to content

Commit 0492ad6

Browse files
author
emmanue1
committed
Fix error on integer constant definition
1 parent 7fd25cc commit 0492ad6

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

src/main/java/org/jd/core/v1/service/converter/classfiletojavasyntax/visitor/UpdateIntegerConstantTypeVisitor.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -99,31 +99,33 @@ public void visit(BinaryOperatorExpression expression) {
9999
Expression left = expression.getLeftExpression();
100100
Expression right = expression.getRightExpression();
101101

102+
Type leftType = left.getType();
103+
Type rightType = right.getType();
104+
102105
switch (expression.getOperator()) {
103106
case "&":
104107
case "|":
105108
case "^":
106-
left.accept(this);
107-
right.accept(this);
109+
Type type = PrimitiveTypeUtil.getCommonPrimitiveType((PrimitiveType)leftType, (PrimitiveType)rightType);
110+
if (type == null) {
111+
type = TYPE_INT;
112+
}
113+
expression.setLeftExpression(updateExpression(type, left));
114+
expression.setRightExpression(updateExpression(type, right));
108115
break;
109116
case "=":
110117
left.accept(this);
111-
expression.setRightExpression(updateExpression(left.getType(), right));
118+
expression.setRightExpression(updateExpression(leftType, right));
112119
break;
113120
case ">":
114121
case ">=":
115122
case "<":
116123
case "<=":
117124
case "==":
118125
case "!=":
119-
Type leftType = left.getType();
120-
Type rightType = right.getType();
121-
122126
if ((leftType.getDimension() == 0) && (rightType.getDimension() == 0)) {
123127
if (leftType.isPrimitive()) {
124128
if (rightType.isPrimitive()) {
125-
Type type;
126-
127129
if (leftType == rightType) {
128130
type = leftType;
129131
} else {
@@ -132,7 +134,6 @@ public void visit(BinaryOperatorExpression expression) {
132134
type = TYPE_INT;
133135
}
134136
}
135-
136137
expression.setLeftExpression(updateExpression(type, left));
137138
expression.setRightExpression(updateExpression(type, right));
138139
} else {
@@ -422,6 +423,9 @@ protected Expression updateExpression(Type type, Expression expression) {
422423
break;
423424
}
424425
break;
426+
case FLAG_LONG:
427+
ice.setType(TYPE_LONG);
428+
break;
425429
}
426430

427431
return expression;

0 commit comments

Comments
 (0)