polyglot.visit
Class LocalClassRemover

java.lang.Object
  extended by polyglot.visit.NodeVisitor
      extended by polyglot.visit.HaltingVisitor
          extended by polyglot.visit.ErrorHandlingVisitor
              extended by polyglot.visit.ContextVisitor
                  extended by polyglot.visit.LocalClassRemover
All Implemented Interfaces:
java.lang.Cloneable, Copy

public class LocalClassRemover
extends ContextVisitor


Nested Class Summary
protected  class LocalClassRemover.ConstructorCallRewriter
           
 
Field Summary
 
Fields inherited from class polyglot.visit.ContextVisitor
context, outer, prune, rethrowMissingDependencies
 
Fields inherited from class polyglot.visit.ErrorHandlingVisitor
error, job, nf, ts
 
Fields inherited from class polyglot.visit.HaltingVisitor
bypass, bypassParent
 
Constructor Summary
LocalClassRemover(Job job, TypeSystem ts, NodeFactory nf)
           
 
Method Summary
protected  TypeNode defaultSuperType(Position pos)
          The type to be extended when translating an anonymous class that implements an interface.
protected  NodeVisitor enterCall(Node parent, Node n)
          Replaces the functionality of the enter() method; all sub-classes should over-ride this method instead of enter() if there is any chance of exceptions being generated.
static void hashAdd(java.util.Map map, java.lang.Object k, java.lang.Object v)
           
static java.lang.Object hashGet(java.util.Map map, java.lang.Object k, java.lang.Object v)
           
protected  boolean isLocal(Context c, java.lang.String name)
           
protected  Node leaveCall(Node old, Node n, NodeVisitor v)
           
protected  Receiver makeMissingFieldTarget(FieldInstance fi, Position pos)
           
 Node override(Node parent, Node n)
          Given a tree rooted at n, the visitor has the option of overriding all traversal of the children of n.
 
Methods inherited from class polyglot.visit.ContextVisitor
addDecls, begin, context, context, enter, enter, enterScope, leave, rethrowMissingDependencies, superEnter
 
Methods inherited from class polyglot.visit.ErrorHandlingVisitor
catchErrors, enterCall, enterError, errorQueue, hasErrors, job, leaveCall, leaveCall, nodeFactory, typeSystem
 
Methods inherited from class polyglot.visit.HaltingVisitor
bypass, bypass, bypassChildren, visitChildren
 
Methods inherited from class polyglot.visit.NodeVisitor
copy, finish, finish, leave, override, toString, visitEdge, visitEdgeNoOverride
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LocalClassRemover

public LocalClassRemover(Job job,
                         TypeSystem ts,
                         NodeFactory nf)
Method Detail

override

public Node override(Node parent,
                     Node n)
Description copied from class: NodeVisitor
Given a tree rooted at n, the visitor has the option of overriding all traversal of the children of n. If no changes were made to n and the visitor wishes to prevent further traversal of the tree, then it should return n. If changes were made to the subtree, then the visitor should return a copy of n with appropriate changes. Finally, if the visitor does not wish to override traversal of the subtree rooted at n, then it should return null.

The default implementation of this method is to call override(n), as most subclasses do not need to know the parent of the node n.

Overrides:
override in class HaltingVisitor
Parameters:
parent - The parent of n, null if n has no parent.
n - The root of the subtree to be traversed.
Returns:
A node if normal traversal is to stop, null if it is to continue.

enterCall

protected NodeVisitor enterCall(Node parent,
                                Node n)
                         throws SemanticException
Description copied from class: ErrorHandlingVisitor
Replaces the functionality of the enter() method; all sub-classes should over-ride this method instead of enter() if there is any chance of exceptions being generated. This method is the replacement for the enter() method, so that all of its subclasses gain the error handling capabilities of this visitor without having to rewrite it for the enter() for each sub-class. This method allows for a SemanticException to be thrown in the body, while enter() does not.

Overrides:
enterCall in class ErrorHandlingVisitor
n - The root of the subtree to be traversed.
Returns:
The ErrorHandlingVisitor which should be used to visit the children of n.
Throws:
SemanticException
See Also:
NodeVisitor.enter(Node, Node)

isLocal

protected boolean isLocal(Context c,
                          java.lang.String name)

leaveCall

protected Node leaveCall(Node old,
                         Node n,
                         NodeVisitor v)
                  throws SemanticException
Overrides:
leaveCall in class ErrorHandlingVisitor
Throws:
SemanticException

defaultSuperType

protected TypeNode defaultSuperType(Position pos)
The type to be extended when translating an anonymous class that implements an interface.


makeMissingFieldTarget

protected Receiver makeMissingFieldTarget(FieldInstance fi,
                                          Position pos)

hashGet

public static java.lang.Object hashGet(java.util.Map map,
                                       java.lang.Object k,
                                       java.lang.Object v)

hashAdd

public static void hashAdd(java.util.Map map,
                           java.lang.Object k,
                           java.lang.Object v)