Skip to content

Commit 35717ad

Browse files
author
emmanue1
committed
Fix ClassCastException
1 parent 52dd723 commit 35717ad

File tree

1 file changed

+11
-13
lines changed

1 file changed

+11
-13
lines changed

src/main/java/org/jd/core/v1/service/converter/classfiletojavasyntax/util/ByteCodeParser.java

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1480,46 +1480,44 @@ private void createAssignment(Statements statements, DefaultStack<Expression> st
14801480
Expression lastExpression = lastStatement.getExpression();
14811481

14821482
if (lastExpression.isBinaryOperatorExpression()) {
1483-
BinaryOperatorExpression boe = (BinaryOperatorExpression) lastExpression;
1484-
1485-
if (getLastRightExpression(boe) == rightExpression) {
1483+
if (getLastRightExpression(lastExpression) == rightExpression) {
14861484
// Multi assignment
1487-
lastES.setExpression(new BinaryOperatorExpression(lineNumber, leftExpression.getType(), leftExpression, "=", boe, 16));
1485+
lastES.setExpression(new BinaryOperatorExpression(lineNumber, leftExpression.getType(), leftExpression, "=", lastExpression, 16));
14881486
return;
14891487
}
14901488

1491-
if ((lineNumber > 0) && (boe.getLineNumber() == lineNumber) && (boe.getLeftExpression().getClass() == rightExpression.getClass())) {
1492-
if (leftExpression.isLocalVariableReferenceExpression()) {
1493-
ClassFileLocalVariableReferenceExpression lvr1 = (ClassFileLocalVariableReferenceExpression) boe.getLeftExpression();
1489+
if ((lineNumber > 0) && (lastExpression.getLineNumber() == lineNumber) && (lastExpression.getLeftExpression().getClass() == rightExpression.getClass())) {
1490+
if (rightExpression.isLocalVariableReferenceExpression()) {
1491+
ClassFileLocalVariableReferenceExpression lvr1 = (ClassFileLocalVariableReferenceExpression) lastExpression.getLeftExpression();
14941492
ClassFileLocalVariableReferenceExpression lvr2 = (ClassFileLocalVariableReferenceExpression) rightExpression;
14951493

14961494
if (lvr1.getLocalVariable() == lvr2.getLocalVariable()) {
14971495
// Multi assignment
1498-
lastES.setExpression(new BinaryOperatorExpression(lineNumber, leftExpression.getType(), leftExpression, "=", boe, 16));
1496+
lastES.setExpression(new BinaryOperatorExpression(lineNumber, leftExpression.getType(), leftExpression, "=", lastExpression, 16));
14991497
return;
15001498
}
1501-
} else if (leftExpression.isFieldReferenceExpression()) {
1502-
FieldReferenceExpression fr1 = (FieldReferenceExpression) boe.getLeftExpression();
1499+
} else if (rightExpression.isFieldReferenceExpression()) {
1500+
FieldReferenceExpression fr1 = (FieldReferenceExpression) lastExpression.getLeftExpression();
15031501
FieldReferenceExpression fr2 = (FieldReferenceExpression) rightExpression;
15041502

15051503
if (fr1.getName().equals(fr2.getName()) && fr1.getExpression().getType().equals(fr2.getExpression().getType())) {
15061504
// Multi assignment
1507-
lastES.setExpression(new BinaryOperatorExpression(lineNumber, leftExpression.getType(), leftExpression, "=", boe, 16));
1505+
lastES.setExpression(new BinaryOperatorExpression(lineNumber, leftExpression.getType(), leftExpression, "=", lastExpression, 16));
15081506
return;
15091507
}
15101508
}
15111509
}
15121510
} else if (lastExpression.isPreOperatorExpression()) {
15131511
if (lastExpression.getExpression().getClass() == rightExpression.getClass()) {
1514-
if (lastExpression.getExpression().isLocalVariableReferenceExpression()) {
1512+
if (rightExpression.isLocalVariableReferenceExpression()) {
15151513
ClassFileLocalVariableReferenceExpression lvr1 = (ClassFileLocalVariableReferenceExpression)lastExpression.getExpression();
15161514
ClassFileLocalVariableReferenceExpression lvr2 = (ClassFileLocalVariableReferenceExpression)rightExpression;
15171515

15181516
if (lvr1.getLocalVariable() == lvr2.getLocalVariable()) {
15191517
rightExpression = newPreArithmeticOperatorExpression(lastExpression.getLineNumber(), lastExpression.getOperator(), lastExpression.getExpression());
15201518
statements.removeLast();
15211519
}
1522-
} else if (lastExpression.getExpression().isFieldReferenceExpression()) {
1520+
} else if (rightExpression.isFieldReferenceExpression()) {
15231521
FieldReferenceExpression fr1 = (FieldReferenceExpression)lastExpression.getExpression();
15241522
FieldReferenceExpression fr2 = (FieldReferenceExpression)rightExpression;
15251523

0 commit comments

Comments
 (0)