Skip to content

Commit

Permalink
Merge pull request #2947 from jlerbsc/master
Browse files Browse the repository at this point in the history
Fix issue 2740 issue related to a method call in an anonymous class on a field with a private visibity
  • Loading branch information
jlerbsc committed Nov 26, 2020
2 parents aa27658 + 9b0c4ce commit 8758c34
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@

package com.github.javaparser.symbolsolver.javaparsermodel.contexts;

import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

import com.github.javaparser.ast.NodeList;
import com.github.javaparser.ast.expr.ObjectCreationExpr;
import com.github.javaparser.ast.nodeTypes.NodeWithTypeArguments;
Expand All @@ -41,10 +45,6 @@
import com.github.javaparser.symbolsolver.resolution.MethodResolutionLogic;
import com.google.common.base.Preconditions;

import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

/**
* A symbol resolution context for an object creation node.
*/
Expand Down Expand Up @@ -203,8 +203,8 @@ public SymbolReference<ResolvedTypeDeclaration> solveType(String name) {
public SymbolReference<? extends ResolvedValueDeclaration> solveSymbol(String name) {
Preconditions.checkArgument(typeSolver != null);

if (myDeclaration.hasVisibleField(name)) {
return SymbolReference.solved(myDeclaration.getVisibleField(name));
if (myDeclaration.hasField(name)) {
return SymbolReference.solved(myDeclaration.getField(name));
}

return getParent()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package com.github.javaparser.symbolsolver;

import java.util.List;

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.MethodCallExpr;
import com.github.javaparser.resolution.declarations.ResolvedMethodDeclaration;
import com.github.javaparser.symbolsolver.resolution.AbstractResolutionTest;
import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver;

public class Issue2740Test extends AbstractResolutionTest {

@Test()
void test() {
String code =
"import java.util.function.Consumer;\n" +
"import java.util.ArrayList;\n" +
"\n" +
"public class A {\n" +
" \n" +
" void m() {\n" +
" new Consumer<String>() {\n" +
" private ArrayList<Integer> t = new ArrayList<>();\n" +
" @Override\n" +
" public void accept(String s) {\n" +
" t.add(s);\n" +
" }\n" +
" \n" +
" };" +
" }\n" +
"\n" +
"}";


ParserConfiguration config = new ParserConfiguration();
config.setSymbolResolver(new JavaSymbolSolver(new ReflectionTypeSolver(false)));
StaticJavaParser.setConfiguration(config);

CompilationUnit cu = StaticJavaParser.parse(code);
List<MethodCallExpr> methodCallExpr = cu.findAll(MethodCallExpr.class);
for (MethodCallExpr expr : methodCallExpr) {
System.out.println("trying to solde " + expr.toString());
ResolvedMethodDeclaration rd = expr.resolve();
System.out.println(String.format("%s solved to %s", expr.toString(), rd.getQualifiedSignature()));
}
}

}

0 comments on commit 8758c34

Please sign in to comment.