1 |
| package net.sourceforge.pmd.symboltable; |
2 |
| |
3 |
| import net.sourceforge.pmd.ast.ASTPrimaryExpression; |
4 |
| import net.sourceforge.pmd.ast.JavaParserVisitorAdapter; |
5 |
| |
6 |
| import java.util.Iterator; |
7 |
| import java.util.List; |
8 |
| |
9 |
| public class OccurrenceFinder extends JavaParserVisitorAdapter { |
10 |
| |
11 |
1685
| public Object visit(ASTPrimaryExpression node, Object data) {
|
12 |
1685
| NameFinder nameFinder = new NameFinder(node);
|
13 |
| |
14 |
| |
15 |
| |
16 |
1685
| NameDeclaration decl = null;
|
17 |
| |
18 |
1685
| List names = nameFinder.getNames();
|
19 |
1685
| for (Iterator i = names.iterator(); i.hasNext();) {
|
20 |
998
| NameOccurrence occ = (NameOccurrence) i.next();
|
21 |
998
| Search search = new Search(occ);
|
22 |
998
| if (decl == null) {
|
23 |
| |
24 |
874
| search.execute();
|
25 |
874
| decl = search.getResult();
|
26 |
874
| if (decl == null) {
|
27 |
| |
28 |
| |
29 |
| |
30 |
301
| break;
|
31 |
| } |
32 |
| } else { |
33 |
| |
34 |
124
| search.execute(decl.getScope());
|
35 |
124
| decl = search.getResult();
|
36 |
| } |
37 |
| } |
38 |
1685
| return super.visit(node, data);
|
39 |
| } |
40 |
| |
41 |
| } |