Skip to content

Commit 524f4d8

Browse files
author
emmanue1
committed
Fix local variable reference errors
1 parent daf99f8 commit 524f4d8

File tree

4 files changed

+57
-30
lines changed

4 files changed

+57
-30
lines changed

src/main/java/org/jd/core/v1/model/javasyntax/declaration/LocalVariableDeclarator.java

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,6 @@ public LocalVariableDeclarator(String name) {
1717
this.name = name;
1818
}
1919

20-
public LocalVariableDeclarator(int lineNumber, String name) {
21-
this.lineNumber = lineNumber;
22-
this.name = name;
23-
}
24-
25-
public LocalVariableDeclarator(String name, int dimension) {
26-
this.name = name;
27-
this.dimension = dimension;
28-
}
29-
3020
public LocalVariableDeclarator(String name, VariableInitializer variableInitializer) {
3121
this.name = name;
3222
this.variableInitializer = variableInitializer;
@@ -38,19 +28,6 @@ public LocalVariableDeclarator(int lineNumber, String name, VariableInitializer
3828
this.variableInitializer = variableInitializer;
3929
}
4030

41-
public LocalVariableDeclarator(String name, int dimension, VariableInitializer variableInitializer) {
42-
this.name = name;
43-
this.dimension = dimension;
44-
this.variableInitializer = variableInitializer;
45-
}
46-
47-
public LocalVariableDeclarator(int lineNumber, String name, int dimension, VariableInitializer variableInitializer) {
48-
this.lineNumber = lineNumber;
49-
this.name = name;
50-
this.dimension = dimension;
51-
this.variableInitializer = variableInitializer;
52-
}
53-
5431
public String getName() {
5532
return name;
5633
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/*
2+
* Copyright (c) 2008-2019 Emmanuel Dupuy.
3+
* This project is distributed under the GPLv3 license.
4+
* This is a Copyleft license that gives the user the right to use,
5+
* copy and modify the code freely for non-commercial purposes.
6+
*/
7+
8+
package org.jd.core.v1.service.converter.classfiletojavasyntax.model.javasyntax.declaration;
9+
10+
import org.jd.core.v1.model.javasyntax.declaration.LocalVariableDeclarator;
11+
import org.jd.core.v1.model.javasyntax.declaration.VariableInitializer;
12+
import org.jd.core.v1.service.converter.classfiletojavasyntax.model.localvariable.AbstractLocalVariable;
13+
import org.jd.core.v1.service.converter.classfiletojavasyntax.model.localvariable.LocalVariableReference;
14+
15+
public class ClassFileLocalVariableDeclarator extends LocalVariableDeclarator implements LocalVariableReference {
16+
protected AbstractLocalVariable localVariable;
17+
18+
public ClassFileLocalVariableDeclarator(AbstractLocalVariable localVariable) {
19+
super(null);
20+
this.localVariable = localVariable;
21+
}
22+
23+
public ClassFileLocalVariableDeclarator(int lineNumber, AbstractLocalVariable localVariable, VariableInitializer variableInitializer) {
24+
super(lineNumber, null, variableInitializer);
25+
this.localVariable = localVariable;
26+
}
27+
28+
public String getName() {
29+
return localVariable.getName();
30+
}
31+
32+
public void setName(String name) {
33+
localVariable.setName(name);
34+
}
35+
36+
@Override
37+
public AbstractLocalVariable getLocalVariable() {
38+
return localVariable;
39+
}
40+
41+
@Override
42+
public void setLocalVariable(AbstractLocalVariable localVariable) {
43+
this.localVariable = localVariable;
44+
}
45+
46+
@Override
47+
public String toString() {
48+
return "ClassFileLocalVariableDeclarator{name=" + localVariable.getName() + ", dimension" + dimension + ", variableInitializer=" + variableInitializer + "}";
49+
}
50+
}

src/main/java/org/jd/core/v1/service/converter/classfiletojavasyntax/model/localvariable/Frame.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.jd.core.v1.model.javasyntax.expression.*;
1212
import org.jd.core.v1.model.javasyntax.statement.*;
1313
import org.jd.core.v1.model.javasyntax.type.*;
14+
import org.jd.core.v1.service.converter.classfiletojavasyntax.model.javasyntax.declaration.ClassFileLocalVariableDeclarator;
1415
import org.jd.core.v1.service.converter.classfiletojavasyntax.model.javasyntax.expression.ClassFileLocalVariableReferenceExpression;
1516
import org.jd.core.v1.service.converter.classfiletojavasyntax.model.javasyntax.statement.ClassFileForStatement;
1617
import org.jd.core.v1.service.converter.classfiletojavasyntax.util.LocalVariableMaker;
@@ -444,7 +445,7 @@ protected void createInlineDeclarations() {
444445

445446
for (AbstractLocalVariable lv : sorted) {
446447
// Add declaration before current statement
447-
iterator.add(new LocalVariableDeclarationStatement(lv.getType(), new LocalVariableDeclarator(lv.getName())));
448+
iterator.add(new LocalVariableDeclarationStatement(lv.getType(), new ClassFileLocalVariableDeclarator(lv)));
448449
lv.setDeclared(true);
449450
undeclaredLocalVariables.remove(lv);
450451
}
@@ -560,7 +561,7 @@ protected LocalVariableDeclarationStatement newDeclarationStatement(
560561
variableInitializer = new ExpressionVariableInitializer(boe.getRightExpression());
561562
}
562563

563-
return new LocalVariableDeclarationStatement(type, new LocalVariableDeclarator(boe.getLineNumber(), reference.getName(), variableInitializer));
564+
return new LocalVariableDeclarationStatement(type, new ClassFileLocalVariableDeclarator(boe.getLineNumber(), reference.getLocalVariable(), variableInitializer));
564565
}
565566

566567
@SuppressWarnings("unchecked")
@@ -622,7 +623,7 @@ protected void updateForStatement(
622623
((NewInitializedArray)init.getRightExpression()).getArrayInitializer() :
623624
new ExpressionVariableInitializer(init.getRightExpression());
624625

625-
forStatement.setDeclaration(new LocalVariableDeclaration(localVariable.getType(), new LocalVariableDeclarator(init.getLineNumber(), reference.getName(), variableInitializer)));
626+
forStatement.setDeclaration(new LocalVariableDeclaration(localVariable.getType(), new ClassFileLocalVariableDeclarator(init.getLineNumber(), reference.getLocalVariable(), variableInitializer)));
626627
forStatement.setInit(null);
627628
}
628629

@@ -709,7 +710,7 @@ protected LocalVariableDeclarators createDeclarators1(DefaultList<Expression> bo
709710
VariableInitializer variableInitializer = boe.getRightExpression().isNewInitializedArray() ?
710711
((NewInitializedArray) boe.getRightExpression()).getArrayInitializer() :
711712
new ExpressionVariableInitializer(boe.getRightExpression());
712-
LocalVariableDeclarator declarator = new LocalVariableDeclarator(boe.getLineNumber(), reference.getName(), variableInitializer);
713+
LocalVariableDeclarator declarator = new ClassFileLocalVariableDeclarator(boe.getLineNumber(), reference.getLocalVariable(), variableInitializer);
713714

714715
if (setDimension) {
715716
declarator.setDimension(reference.getLocalVariable().getDimension());
@@ -734,7 +735,7 @@ protected void createStartBlockDeclarations() {
734735
if (addIndex == -1) {
735736
addIndex = getAddIndex();
736737
}
737-
statements.add(addIndex, new LocalVariableDeclarationStatement(lv.getType(), new LocalVariableDeclarator(lv.getName())));
738+
statements.add(addIndex, new LocalVariableDeclarationStatement(lv.getType(), new ClassFileLocalVariableDeclarator(lv)));
738739
lv.setDeclared(true);
739740
}
740741

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import org.jd.core.v1.model.javasyntax.expression.*;
1414
import org.jd.core.v1.model.javasyntax.statement.*;
1515
import org.jd.core.v1.model.javasyntax.type.BaseType;
16-
import org.jd.core.v1.model.javasyntax.type.InnerObjectType;
1716
import org.jd.core.v1.model.javasyntax.type.ObjectType;
1817
import org.jd.core.v1.model.javasyntax.type.Type;
1918
import org.jd.core.v1.service.converter.classfiletojavasyntax.model.javasyntax.declaration.*;
@@ -113,7 +112,7 @@ public void visit(ConstructorDeclaration declaration) {
113112
Expression e = expression.getLeftExpression();
114113

115114
if (e.isFieldReferenceExpression()) {
116-
String name = ((FieldReferenceExpression)e).getName();
115+
String name = e.getName();
117116

118117
if (name.startsWith("this$")) {
119118
outerType = (ObjectType) expression.getRightExpression().getType();

0 commit comments

Comments
 (0)