Skip to content

Commit b22ebb2

Browse files
committed
Consolidate SymbolSolver creation in TypeExtractor
1 parent 31b2717 commit b22ebb2

File tree

1 file changed

+11
-7
lines changed
  • javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel

1 file changed

+11
-7
lines changed

javaparser-symbol-solver-core/src/main/java/com/github/javaparser/symbolsolver/javaparsermodel/TypeExtractor.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,17 +71,17 @@
7171
public class TypeExtractor extends DefaultVisitorAdapter {
7272

7373
private static final String JAVA_LANG_STRING = String.class.getCanonicalName();
74-
74+
private final ReferenceTypeImpl stringReferenceType;
75+
7576
private TypeSolver typeSolver;
7677
private JavaParserFacade facade;
7778

78-
private ReferenceTypeImpl StringReferenceType;
7979

8080
public TypeExtractor(TypeSolver typeSolver, JavaParserFacade facade) {
8181
this.typeSolver = typeSolver;
8282
this.facade = facade;
8383
//pre-calculate the String reference (optimization)
84-
StringReferenceType = new ReferenceTypeImpl(new ReflectionTypeSolver().solveType(JAVA_LANG_STRING), typeSolver);
84+
stringReferenceType = new ReferenceTypeImpl(new ReflectionTypeSolver().solveType(JAVA_LANG_STRING), typeSolver);
8585
}
8686

8787
@Override
@@ -264,7 +264,7 @@ public ResolvedType visit(FieldAccessExpr node, Boolean solveLambdas) {
264264
}
265265
Optional<Value> value = Optional.empty();
266266
try {
267-
value = new SymbolSolver(typeSolver).solveSymbolAsValue(node.getName().getId(), node);
267+
value = createSolver().solveSymbolAsValue(node.getName().getId(), node);
268268
} catch (UnsolvedSymbolException use) {
269269
// This node may have a package name as part of its fully qualified name.
270270
// We should solve for the type declaration inside this package.
@@ -286,7 +286,7 @@ public ResolvedType visit(InstanceOfExpr node, Boolean solveLambdas) {
286286

287287
@Override
288288
public ResolvedType visit(StringLiteralExpr node, Boolean solveLambdas) {
289-
return StringReferenceType;
289+
return stringReferenceType;
290290
}
291291

292292
@Override
@@ -336,7 +336,7 @@ public ResolvedType visit(MethodCallExpr node, Boolean solveLambdas) {
336336
@Override
337337
public ResolvedType visit(NameExpr node, Boolean solveLambdas) {
338338
Log.trace("getType on name expr %s", ()-> node);
339-
Optional<Value> value = new SymbolSolver(typeSolver).solveSymbolAsValue(node.getName().getId(), node);
339+
Optional<Value> value = createSolver().solveSymbolAsValue(node.getName().getId(), node);
340340
if (!value.isPresent()) {
341341
throw new UnsolvedSymbolException("Solving " + node, node.getName().getId());
342342
} else {
@@ -363,7 +363,7 @@ public ResolvedType visit(TypeExpr node, Boolean solveLambdas) {
363363
}
364364

365365
// JLS 15.13 - ExpressionName :: [TypeArguments] Identifier
366-
Optional<Value> value = new SymbolSolver(typeSolver).solveSymbolAsValue(nameWithScope, node);
366+
Optional<Value> value = createSolver().solveSymbolAsValue(nameWithScope, node);
367367
if (value.isPresent()) {
368368
return value.get().getType();
369369
}
@@ -648,4 +648,8 @@ public ResolvedType visit(FieldDeclaration node, Boolean solveLambdas) {
648648
}
649649
throw new IllegalArgumentException("Cannot resolve the type of a field with multiple variable declarations. Pick one");
650650
}
651+
652+
protected SymbolSolver createSolver() {
653+
return new SymbolSolver(typeSolver);
654+
}
651655
}

0 commit comments

Comments
 (0)