Skip to content

Commit b9c0481

Browse files
author
emmanue1
committed
Fix error in instance field initializations
1 parent b804323 commit b9c0481

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

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

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.util.*;
2525

2626
import static org.jd.core.v1.api.printer.Printer.UNKNOWN_LINE_NUMBER;
27+
import static org.jd.core.v1.model.javasyntax.declaration.Declaration.FLAG_SYNTHETIC;
2728

2829
public class InitInstanceFieldVisitor extends AbstractJavaSyntaxVisitor {
2930
protected SearchFirstLineNumberVisitor searchFirstLineNumberVisitor = new SearchFirstLineNumberVisitor();
@@ -92,18 +93,24 @@ public void visit(ConstructorDeclaration declaration) {
9293
datas.add(new Data(cfcd, statements, iterator.nextIndex()));
9394

9495
if (datas.size() == 1) {
95-
int firstLineNumber = superConstructorCall.getLineNumber();
96+
int firstLineNumber;
9697

97-
if (superConstructorCall.getDescriptor().equals("()V") && (firstLineNumber != UNKNOWN_LINE_NUMBER) && iterator.hasNext()) {
98-
if ((lineNumber == UNKNOWN_LINE_NUMBER) || (lineNumber >= firstLineNumber)) {
99-
searchFirstLineNumberVisitor.init();
100-
iterator.next().accept(searchFirstLineNumberVisitor);
101-
iterator.previous();
98+
if ((cfcd.getFlags() & FLAG_SYNTHETIC) != 0) {
99+
firstLineNumber = UNKNOWN_LINE_NUMBER;
100+
} else {
101+
firstLineNumber = superConstructorCall.getLineNumber();
102102

103-
int ln = searchFirstLineNumberVisitor.getLineNumber();
103+
if (superConstructorCall.getDescriptor().equals("()V") && (firstLineNumber != UNKNOWN_LINE_NUMBER) && iterator.hasNext()) {
104+
if ((lineNumber == UNKNOWN_LINE_NUMBER) || (lineNumber >= firstLineNumber)) {
105+
searchFirstLineNumberVisitor.init();
106+
iterator.next().accept(searchFirstLineNumberVisitor);
107+
iterator.previous();
104108

105-
if ((ln != UNKNOWN_LINE_NUMBER) && (ln >= firstLineNumber)) {
106-
firstLineNumber = UNKNOWN_LINE_NUMBER;
109+
int ln = searchFirstLineNumberVisitor.getLineNumber();
110+
111+
if ((ln != UNKNOWN_LINE_NUMBER) && (ln >= firstLineNumber)) {
112+
firstLineNumber = UNKNOWN_LINE_NUMBER;
113+
}
107114
}
108115
}
109116
}

0 commit comments

Comments
 (0)