Skip to content

Commit

Permalink
Merge pull request #3671 from jlerbsc/master
Browse files Browse the repository at this point in the history
 Fix issue #3614 UnsolvedSymbolException when package declaration contains comment
  • Loading branch information
jlerbsc committed Aug 18, 2022
2 parents 790ecc9 + f6e05d1 commit b51475a
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 4 deletions.
Expand Up @@ -23,8 +23,6 @@



import static com.github.javaparser.symbolsolver.javaparsermodel.contexts.AbstractJavaParserContext.isQualifiedName;

import java.util.LinkedList;
import java.util.List;
import java.util.Optional;
Expand Down Expand Up @@ -60,6 +58,8 @@
* @author Federico Tomassetti
*/
public class CompilationUnitContext extends AbstractJavaParserContext<CompilationUnit> {

private static final String DEFAULT_PACKAGE = "java.lang";

///
/// Static methods
Expand Down Expand Up @@ -199,7 +199,7 @@ public SymbolReference<ResolvedTypeDeclaration> solveType(String name) {

// Look in current package
if (this.wrappedNode.getPackageDeclaration().isPresent()) {
String qName = this.wrappedNode.getPackageDeclaration().get().getName().toString() + "." + name;
String qName = this.wrappedNode.getPackageDeclaration().get().getNameAsString() + "." + name;
SymbolReference<ResolvedReferenceTypeDeclaration> ref = typeSolver.tryToSolveType(qName);
if (ref != null && ref.isSolved()) {
return SymbolReference.adapt(ref, ResolvedTypeDeclaration.class);
Expand All @@ -225,7 +225,7 @@ public SymbolReference<ResolvedTypeDeclaration> solveType(String name) {
}

// Look in the java.lang package
SymbolReference<ResolvedReferenceTypeDeclaration> ref = typeSolver.tryToSolveType("java.lang." + name);
SymbolReference<ResolvedReferenceTypeDeclaration> ref = typeSolver.tryToSolveType(DEFAULT_PACKAGE+ "." + name);
if (ref != null && ref.isSolved()) {
return SymbolReference.adapt(ref, ResolvedTypeDeclaration.class);
}
Expand Down
@@ -0,0 +1,36 @@
package com.github.javaparser.symbolsolver;

import static org.junit.jupiter.api.Assertions.assertEquals;

import org.junit.jupiter.api.Test;

import com.github.javaparser.ParserConfiguration;
import com.github.javaparser.StaticJavaParser;
import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.ast.expr.VariableDeclarationExpr;
import com.github.javaparser.symbolsolver.resolution.AbstractResolutionTest;
import com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver;
import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver;

public class Issue3614Test extends AbstractResolutionTest {

@Test
void test() {
String code = "package java./*aaaaa*/util;\n"
+ "class Foo {\n"
+ " public void test() {\n"
+ " ArrayList list = new ArrayList();\n"
+ " }"
+ "}";

ParserConfiguration configuration = new ParserConfiguration()
.setSymbolResolver(new JavaSymbolSolver(new CombinedTypeSolver(new ReflectionTypeSolver())));
StaticJavaParser.setConfiguration(configuration);

CompilationUnit cu = StaticJavaParser.parse(code);

VariableDeclarationExpr vde = cu.findFirst(VariableDeclarationExpr.class).get();
String resolvedType = vde.calculateResolvedType().describe();
assertEquals("java.util.ArrayList", resolvedType);
}
}

0 comments on commit b51475a

Please sign in to comment.