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 |
2940
| public Object visit(ASTPrimaryExpression node, Object data) {
|
12 |
2940
| NameFinder nameFinder = new NameFinder(node);
|
13 |
| |
14 |
| |
15 |
| |
16 |
2940
| NameDeclaration decl = null;
|
17 |
| |
18 |
2940
| List names = nameFinder.getNames();
|
19 |
2940
| for (Iterator i = names.iterator(); i.hasNext();) {
|
20 |
1915
| NameOccurrence occ = (NameOccurrence) i.next();
|
21 |
1915
| Search search = new Search(occ);
|
22 |
1915
| if (decl == null) {
|
23 |
| |
24 |
1483
| search.execute();
|
25 |
1483
| decl = search.getResult();
|
26 |
1483
| if (decl == null) {
|
27 |
| |
28 |
| |
29 |
| |
30 |
441
| break;
|
31 |
| } |
32 |
| } else { |
33 |
| |
34 |
432
| search.execute(decl.getScope());
|
35 |
432
| decl = search.getResult();
|
36 |
| } |
37 |
| } |
38 |
2940
| return super.visit(node, data);
|
39 |
| } |
40 |
| |
41 |
| } |