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.HashMap;
    7   import java.util.Map;
    8
    9   public class SourceFileScope extends AbstractScope implements Scope {
    10
    11      protected Map classNames = new HashMap();
    12      privateong> 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</strong> 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  }