1 package net.sourceforge.pmd.symboltable; 2 3 import net.sourceforge.pmd.util.Applier; 4 5 import java.util.ArrayList ; 6 import java.util.HashMap ; 7 import java.util.Map ; 8 9 public class SourceFileScope extends AbstractScope implements Scope { 10 11 protected Map classNames = new HashMap (); 12 private String packageImage; 13 14 public SourceFileScope() { 15 this(""); 16 } 17 18 public SourceFileScope(String image) { 19 this.packageImage = image; 20 } 21 22 public ClassScope getEnclosingClassScope() { 23 throw new RuntimeException ("getEnclosingClassScope() called on SourceFileScope"); 24 } 25 26 public MethodScope getEnclosingMethodScope() { 27 throw new RuntimeException ("getEnclosingMethodScope() called on SourceFileScope"); 28 } 29 30 public String getPackageName() { 31 return packageImage; 32 } 33 34 public SourceFileScope getEnclosingSourceFileScope() { 35 return this; 36 } 37 38 public void addDeclaration(ClassNameDeclaration classDecl) { 39 classNames.put(classDecl, new ArrayList ()); 40 } 41 42 public void addDeclaration(MethodNameDeclaration decl) { 43 throw new RuntimeException ("SourceFileScope.addDeclaration(MethodNameDeclaration decl) called"); 44 } 45 46 public void addDeclaration(VariableNameDeclaration decl) { 47 throw new RuntimeException ("SourceFileScope.addDeclaration(VariableNameDeclaration decl) called"); 48 } 49 50 public Map getClassDeclarations() { 51 return classNames; 52 } 53 54 public Map getVariableDeclarations() { 55 throw new RuntimeException ("PackageScope.getVariableDeclarations() called"); 56 } 57 58 public NameDeclaration addVariableNameOccurrence(NameOccurrence occ) { 59 return null; 60 } 61 62 public String toString() { 63 return "SourceFileScope: " + glomNames(classNames.keySet().iterator()); 64 } 65 66 protected NameDeclaration findVariableHere(NameOccurrence occ) { 67 ImageFinderFunction finder = new ImageFinderFunction(occ.getImage()); 68 Applier.apply(finder, classNames.keySet().iterator()); 69 return finder.getDecl(); 70 } 71 72 } 73 | Popular Tags |