Skip to content

Commit 0b16617

Browse files
author
emmanue1
committed
Improve RemoveBinaryOpReturnStatementsVisitor
1 parent 1fe723a commit 0b16617

File tree

1 file changed

+22
-19
lines changed

1 file changed

+22
-19
lines changed

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

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -38,30 +38,33 @@ public void visit(Statements statements) {
3838

3939
if (res.getExpression().getClass() == ClassFileLocalVariableReferenceExpression.class) {
4040
ClassFileLocalVariableReferenceExpression lvr1 = (ClassFileLocalVariableReferenceExpression)res.getExpression();
41-
Statement statement = (Statement)statements.get(statements.size()-2);
4241

43-
if (statement.getClass() == ExpressionStatement.class) {
44-
ExpressionStatement es = (ExpressionStatement)statement;
42+
if (lvr1.getName() == null) {
43+
Statement statement = (Statement)statements.get(statements.size()-2);
4544

46-
if (es.getExpression().getClass() == BinaryOperatorExpression.class) {
47-
BinaryOperatorExpression boe = (BinaryOperatorExpression)es.getExpression();
48-
Expression leftExpression = boe.getLeftExpression();
45+
if (statement.getClass() == ExpressionStatement.class) {
46+
ExpressionStatement es = (ExpressionStatement)statement;
4947

50-
if (leftExpression.getClass() == ClassFileLocalVariableReferenceExpression.class) {
51-
ClassFileLocalVariableReferenceExpression lvr2 = (ClassFileLocalVariableReferenceExpression)leftExpression;
48+
if (es.getExpression().getClass() == BinaryOperatorExpression.class) {
49+
BinaryOperatorExpression boe = (BinaryOperatorExpression)es.getExpression();
50+
Expression leftExpression = boe.getLeftExpression();
5251

53-
if ((lvr1.getLocalVariable() == lvr2.getLocalVariable()) && (lvr1.getLocalVariable().getReferences().size() == 2)) {
54-
// Remove synthetic assignment statement
55-
statements.remove(statements.size()-2);
56-
// Replace synthetic local variable with expression
57-
res.setExpression(boe.getRightExpression());
58-
// Check line number
59-
int expressionLineNumber = boe.getRightExpression().getLineNumber();
60-
if (res.getLineNumber() > expressionLineNumber) {
61-
res.setLineNumber(expressionLineNumber);
52+
if (leftExpression.getClass() == ClassFileLocalVariableReferenceExpression.class) {
53+
ClassFileLocalVariableReferenceExpression lvr2 = (ClassFileLocalVariableReferenceExpression) leftExpression;
54+
55+
if ((lvr1.getLocalVariable() == lvr2.getLocalVariable()) && (lvr1.getLocalVariable().getReferences().size() == 2)) {
56+
// Remove synthetic assignment statement
57+
statements.remove(statements.size() - 2);
58+
// Replace synthetic local variable with expression
59+
res.setExpression(boe.getRightExpression());
60+
// Check line number
61+
int expressionLineNumber = boe.getRightExpression().getLineNumber();
62+
if (res.getLineNumber() > expressionLineNumber) {
63+
res.setLineNumber(expressionLineNumber);
64+
}
65+
// Remove synthetic local variable
66+
localVariableMaker.removeLocalVariable(lvr1.getLocalVariable());
6267
}
63-
// Remove synthetic local variable
64-
localVariableMaker.removeLocalVariable(lvr1.getLocalVariable());
6568
}
6669
}
6770
}

0 commit comments

Comments
 (0)