View Javadoc

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