1 package net.sourceforge.pmd.lang.java.symboltable;
2
3 import net.sourceforge.pmd.lang.java.ast.ASTPrimaryExpression;
4 import net.sourceforge.pmd.lang.java.ast.JavaParserVisitorAdapter;
5
6 import java.util.List;
7
8 public class OccurrenceFinder extends JavaParserVisitorAdapter {
9
10 public Object visit(ASTPrimaryExpression node, Object data) {
11 NameFinder nameFinder = new NameFinder(node);
12
13
14
15 NameDeclaration decl = null;
16
17 List<NameOccurrence> names = nameFinder.getNames();
18 for (NameOccurrence occ: names) {
19 Search search = new Search(occ);
20 if (decl == null) {
21
22 search.execute();
23 decl = search.getResult();
24 if (decl == null) {
25
26
27
28 break;
29 }
30 } else {
31
32 search.execute(decl.getScope());
33 decl = search.getResult();
34
35 if (decl == null) {
36
37
38
39
40
41
42
43
44
45 break;
46 }
47 }
48 }
49 return super.visit(node, data);
50 }
51
52 }