View Javadoc

    1   package net.sourceforge.pmd.lang.java.symboltable;
    2
    3
    4   import java.util.ArrayList;
    5   import java.util.List;
    6   import java.util.HashMap;
    7   import java.util.Map;
    8
    9   public class SourceFileScope extends AbstractScope {
    10
    11      protected Map<ClassNameDeclaration, List<NameOccurrence>> classNames = new HashMap<ClassNameDeclaration, List<NameOccurrence>>();
    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<NameOccurrence>());
    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<ClassNameDeclaration, List<NameOccurrence>> getClassDeclarations() {
    51          return classNames;
    52      }
    53
    54      public Map<VariableNameDeclaration, List<NameOccurrence>> 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());
    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  }