Skip to content

Commit de7f67f

Browse files
author
emmanue1
committed
Improves the layout
1 parent d5a198d commit de7f67f

File tree

1 file changed

+39
-8
lines changed

1 file changed

+39
-8
lines changed

src/main/java/org/jd/core/v1/service/fragmenter/javasyntaxtojavafragment/visitor/SingleLineStatementVisitor.java

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,43 +16,58 @@
1616
import java.util.List;
1717

1818
public class SingleLineStatementVisitor extends AbstractJavaSyntaxVisitor {
19+
// Minimal line number of visited statements
1920
protected int minLineNumber;
21+
// Maximal line number of visited statements
2022
protected int maxLineNumber;
23+
// Estimated number of statements if line numbers are unknown
24+
protected int statementCount;
2125

2226
public void init() {
2327
minLineNumber = -2;
2428
maxLineNumber = -1;
29+
statementCount = 0;
2530
}
2631

2732
public boolean isSingleLineStatement() {
28-
return minLineNumber == maxLineNumber;
33+
if (minLineNumber <= 0) {
34+
// Line numbers are unknown
35+
return statementCount <= 1;
36+
} else {
37+
return minLineNumber == maxLineNumber;
38+
}
2939
}
3040

41+
// -- Statement -- //
3142
@Override
3243
public void visit(AssertStatement statement) {
3344
statement.getCondition().accept(this);
3445
safeAccept(statement.getMessage());
3546
minLineNumber = statement.getCondition().getLineNumber();
47+
statementCount = 1;
3648
}
3749

3850
@Override
3951
public void visit(DoWhileStatement statement) {
4052
minLineNumber = statement.getCondition().getLineNumber();
4153
safeAccept(statement.getStatements());
4254
statement.getCondition().accept(this);
55+
statementCount = 2;
4356
}
4457

4558
@Override
4659
public void visit(ExpressionStatement statement) {
4760
statement.getExpression().accept(this);
4861
minLineNumber = statement.getExpression().getLineNumber();
62+
statementCount = 1;
4963
}
5064

5165
@Override
5266
public void visit(ForEachStatement statement) {
5367
statement.getExpression().accept(this);
5468
safeAccept(statement.getStatements());
5569
minLineNumber = statement.getExpression().getLineNumber();
70+
statementCount = 2;
5671
}
5772

5873
@Override
@@ -66,7 +81,7 @@ public void visit(ForStatement statement) {
6681
} else if (statement.getInit() != null) {
6782
statement.getInit().accept(this);
6883
} else {
69-
maxLineNumber = Integer.MAX_VALUE;
84+
maxLineNumber = 0;
7085
}
7186

7287
if (statement.getCondition() != null) {
@@ -76,62 +91,73 @@ public void visit(ForStatement statement) {
7691
} else {
7792
minLineNumber = maxLineNumber;
7893
}
94+
95+
statementCount = 2;
7996
}
8097

8198
@Override
8299
public void visit(IfStatement statement) {
83100
statement.getCondition().accept(this);
84101
safeAccept(statement.getStatements());
85102
minLineNumber = statement.getCondition().getLineNumber();
103+
statementCount = 2;
86104
}
87105

88106
@Override
89107
public void visit(IfElseStatement statement) {
90108
statement.getCondition().accept(this);
91109
statement.getElseStatements().accept(this);
92110
minLineNumber = statement.getCondition().getLineNumber();
111+
statementCount = 2;
93112
}
94113

95114
@Override
96115
public void visit(LabelStatement statement) {
97-
minLineNumber = maxLineNumber = Integer.MAX_VALUE;
116+
minLineNumber = maxLineNumber = 0;
98117
safeAccept(statement.getStatement());
118+
statementCount = 1;
99119
}
100120

101121
@Override
102122
public void visit(LambdaExpressionStatement statement) {
103123
statement.getExpression().accept(this);
104124
minLineNumber = statement.getExpression().getLineNumber();
125+
statementCount = 1;
105126
}
106127

107128
@Override
108129
public void visit(LocalVariableDeclarationStatement statement) {
109130
visit((LocalVariableDeclaration) statement);
131+
statementCount = 1;
110132
}
111133

112134
@Override public void visit(ReturnExpressionStatement statement) {
113135
statement.getExpression().accept(this);
114136
minLineNumber = statement.getExpression().getLineNumber();
137+
statementCount = 1;
115138
}
116139

117140
@Override
118141
public void visit(SwitchStatement statement) {
119142
statement.getCondition().accept(this);
120143
acceptListStatement(statement.getBlocks());
121144
minLineNumber = statement.getCondition().getLineNumber();
145+
statementCount = 2;
122146
}
123147

124148
@Override
125149
public void visit(SynchronizedStatement statement) {
126150
statement.getMonitor().accept(this);
127151
safeAccept(statement.getStatements());
128152
minLineNumber = statement.getMonitor().getLineNumber();
153+
statementCount = 2;
129154
}
130155

131156
@Override
132157
public void visit(ThrowStatement statement) {
133158
statement.getExpression().accept(this);
134159
minLineNumber = statement.getExpression().getLineNumber();
160+
statementCount = 1;
135161
}
136162

137163
@Override
@@ -143,6 +169,7 @@ public void visit(TryStatement statement) {
143169
safeAcceptListStatement(statement.getCatchClauses());
144170
safeAccept(statement.getFinallyStatements());
145171
minLineNumber = min;
172+
statementCount = 2;
146173
}
147174

148175
@Override
@@ -152,22 +179,24 @@ public void visit(TryStatement.CatchClause statement) {
152179

153180
@Override
154181
public void visit(TypeDeclarationStatement statement) {
155-
minLineNumber = maxLineNumber = Integer.MAX_VALUE;
182+
minLineNumber = maxLineNumber = 0;
183+
statementCount = 1;
156184
}
157185

158186
@Override
159187
public void visit(WhileStatement statement) {
160188
statement.getCondition().accept(this);
161189
safeAccept(statement.getStatements());
162190
minLineNumber = statement.getCondition().getLineNumber();
191+
statementCount = 2;
163192
}
164193

165194
protected void acceptListStatement(List<? extends Statement> list) {
166195
int size = list.size();
167196

168197
switch (size) {
169198
case 0:
170-
minLineNumber = maxLineNumber = Integer.MAX_VALUE;
199+
minLineNumber = maxLineNumber = 0;
171200
break;
172201
case 1:
173202
list.get(0).accept(this);
@@ -180,18 +209,20 @@ protected void acceptListStatement(List<? extends Statement> list) {
180209
list.get(size - 1).accept(this);
181210

182211
minLineNumber = min;
212+
statementCount = size;
183213
break;
184214
}
185215
}
186216

187217
protected void safeAcceptListStatement(List<? extends Statement> list) {
188218
if (list == null) {
189-
minLineNumber = maxLineNumber = Integer.MAX_VALUE;
219+
minLineNumber = maxLineNumber = 0;
190220
} else {
191221
acceptListStatement(list);
192222
}
193223
}
194224

225+
// -- Expression -- //
195226
@Override
196227
public void visit(ConstructorInvocationExpression expression) {
197228
BaseExpression parameters = expression.getParameters();
@@ -249,7 +280,7 @@ public void visit(NewExpression expression) {
249280
parameters.accept(this);
250281
}
251282
} else {
252-
maxLineNumber = Integer.MAX_VALUE;
283+
maxLineNumber = expression.getLineNumber() + 1;
253284
}
254285
}
255286

@@ -262,7 +293,7 @@ protected void acceptListExpression(List<? extends Expression> list) {
262293
int size = list.size();
263294

264295
if (size == 0) {
265-
maxLineNumber = Integer.MAX_VALUE;
296+
maxLineNumber = 0;
266297
} else {
267298
list.get(size - 1).accept(this);
268299
}

0 commit comments

Comments
 (0)