net.sourceforge.pmd.lang.symboltable
Interface Scope

All Known Implementing Classes:
AbstractScope

public interface Scope

A scope is a region within variables and other declarations are visible. Scopes can be nested and form a tree. This is expressed through "parent scopes". Each scope manages its own declarations.

See Also:
AbstractScope as a base class, Java Language Specification, 6.3: Scope of a Declaration

Method Summary
 void addDeclaration(NameDeclaration declaration)
          Adds a new declaration to this scope.
 NameDeclaration addNameOccurrence(NameOccurrence occurrence)
          Adds a NameOccurrence to this scope - only call this after getting a true back from contains(NameOccurrence).
 boolean contains(NameOccurrence occ)
          Tests whether or not a NameOccurrence is directly contained in the scope.
 Map<NameDeclaration,List<NameOccurrence>> getDeclarations()
          Gets all the declaration with the occurrences in this scope.
<T extends NameDeclaration>
Map<T,List<NameOccurrence>>
getDeclarations(Class<T> clazz)
          Helper method to get only a specific type of name declarations.
<T extends Scope>
T
getEnclosingScope(Class<T> clazz)
          Helper method that goes up the parent scopes to find a scope of the specified type
 Scope getParent()
          Retrieves this scope's parent
 void setParent(Scope parent)
          Points this scope to its parent
 

Method Detail

getParent

Scope getParent()
Retrieves this scope's parent


setParent

void setParent(Scope parent)
Points this scope to its parent


getEnclosingScope

<T extends Scope> T getEnclosingScope(Class<T> clazz)
Helper method that goes up the parent scopes to find a scope of the specified type

Parameters:
clazz - the type of the Scope to search for
Returns:
the found scope of the specified type or null if no such scope was found.

getDeclarations

Map<NameDeclaration,List<NameOccurrence>> getDeclarations()
Gets all the declaration with the occurrences in this scope.

Returns:
map of declarations with occurrences.

getDeclarations

<T extends NameDeclaration> Map<T,List<NameOccurrence>> getDeclarations(Class<T> clazz)
Helper method to get only a specific type of name declarations. The return map elemens have already been casted to the correct type. This method usually returns a subset of getDeclarations().

Parameters:
clazz - the type of name declarations to use
Returns:
map of declarations with occurrences.

contains

boolean contains(NameOccurrence occ)
Tests whether or not a NameOccurrence is directly contained in the scope. This means, whether the given NameOccurrence references a declaration, that has been declared within this scope. Note that this search is just for this scope - it doesn't go diving into any parent scopes.


addDeclaration

void addDeclaration(NameDeclaration declaration)
Adds a new declaration to this scope. Only after the declaration has been added, contains(NameOccurrence) and addNameOccurrence(NameOccurrence) can be used correctly.

Parameters:
declaration - the declaration to add

addNameOccurrence

NameDeclaration addNameOccurrence(NameOccurrence occurrence)
Adds a NameOccurrence to this scope - only call this after getting a true back from contains(NameOccurrence).

Returns:
the NameDeclaration that is references by the given NameOccurrence, if the NameOccurrence could be added. Otherwise null is returned.


Copyright © 2002-2015 InfoEther. All Rights Reserved.