jif.ast
Class AmbParam_c

java.lang.Object
  extended by polyglot.ast.Node_c
      extended by jif.ast.AmbParam_c
All Implemented Interfaces:
java.lang.Cloneable, AmbParam, ParamNode, polyglot.ast.Ambiguous, polyglot.ast.JL, polyglot.ast.Node, polyglot.ast.NodeOps, polyglot.util.Copy

public class AmbParam_c
extends polyglot.ast.Node_c
implements AmbParam

An implementation of the AmbParam interface.


Field Summary
protected static int MAX_DISAMB_CALLS
          The maximum number of times that disambiguate can be called before we allow an error message to be reported.
protected  polyglot.ast.Id name
           
protected  ParamInstance pi
           
 
Fields inherited from class polyglot.ast.Node_c
del, error, ext, position
 
Constructor Summary
AmbParam_c(polyglot.util.Position pos, polyglot.ast.Id name, ParamInstance pi)
           
 
Method Summary
 polyglot.ast.Node disambiguate(polyglot.visit.AmbiguityRemover sc)
          Disambiguates name.
 boolean isDisambiguated()
           
 java.lang.String name()
           
 AmbParam name(java.lang.String name)
           
 Param parameter()
           
protected  polyglot.ast.Node paramToParam(ParamInstance pi, polyglot.visit.AmbiguityRemover sc)
          Turns a PramaInstance object into a label node or a principal node.
protected  polyglot.ast.Node principalToParam(PrincipalInstance vi, polyglot.visit.AmbiguityRemover sc)
          Turns a PrincipalInstance object into a principal node.
protected  AmbParam_c reconstruct(polyglot.ast.Id name)
           
 java.lang.String toString()
           
protected  polyglot.ast.Node varToParam(JifVarInstance vi, polyglot.visit.AmbiguityRemover sc)
          Turns a JifVarInstance object into a label node or a principal node
 polyglot.ast.Node visitChildren(polyglot.visit.NodeVisitor v)
           
 
Methods inherited from class polyglot.ast.Node_c
addDecls, buildTypes, buildTypesEnter, checkConstants, childExpectedType, copy, copy, copy, del, del, disambiguateEnter, disambiguateOverride, dump, dump, dump, enterChildScope, enterScope, error, error, exceptionCheck, exceptionCheckEnter, ext, ext, ext, ext, init, isTypeChecked, node, position, position, prettyPrint, prettyPrint, prettyPrint, print, printBlock, printSubStmt, throwTypes, translate, typeCheck, typeCheckEnter, typeCheckOverride, visit, visitChild, visitEdge, visitList
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface polyglot.ast.Node
childExpectedType, del, del, dump, error, error, ext, ext, ext, ext, isTypeChecked, position, position, visit, visitChild, visitEdge, visitList
 
Methods inherited from interface polyglot.ast.JL
init, node
 
Methods inherited from interface polyglot.ast.NodeOps
addDecls, buildTypes, buildTypesEnter, checkConstants, copy, copy, disambiguateEnter, disambiguateOverride, dump, dump, enterChildScope, enterScope, exceptionCheck, exceptionCheckEnter, prettyPrint, prettyPrint, prettyPrint, throwTypes, translate, typeCheck, typeCheckEnter, typeCheckOverride
 
Methods inherited from interface polyglot.ast.Node
childExpectedType, del, del, dump, error, error, ext, ext, ext, ext, isTypeChecked, position, position, visit, visitChild, visitEdge, visitList
 
Methods inherited from interface polyglot.ast.JL
init, node
 
Methods inherited from interface polyglot.ast.NodeOps
addDecls, buildTypes, buildTypesEnter, checkConstants, copy, copy, disambiguateEnter, disambiguateOverride, dump, dump, enterChildScope, enterScope, exceptionCheck, exceptionCheckEnter, prettyPrint, prettyPrint, prettyPrint, throwTypes, translate, typeCheck, typeCheckEnter, typeCheckOverride
 

Field Detail

name

protected polyglot.ast.Id name

pi

protected ParamInstance pi

MAX_DISAMB_CALLS

protected static final int MAX_DISAMB_CALLS
The maximum number of times that disambiguate can be called before we allow an error message to be reported. Should be less than polyglot.frontend.Scheduler.MAX_RUN_COUNT, but big enough so that the largest cycle of recursive formals can be resolved. e.g., m(int{a1} a0, int{a2} a1, ...., int{a0} ak), MAX_DISAMB_CALLS would need to be bigger than k.

See Also:
Constant Field Values
Constructor Detail

AmbParam_c

public AmbParam_c(polyglot.util.Position pos,
                  polyglot.ast.Id name,
                  ParamInstance pi)
Method Detail

isDisambiguated

public boolean isDisambiguated()
Specified by:
isDisambiguated in interface polyglot.ast.Node
Overrides:
isDisambiguated in class polyglot.ast.Node_c

name

public java.lang.String name()

name

public AmbParam name(java.lang.String name)

parameter

public Param parameter()
Specified by:
parameter in interface ParamNode

toString

public java.lang.String toString()
Overrides:
toString in class polyglot.ast.Node_c

visitChildren

public polyglot.ast.Node visitChildren(polyglot.visit.NodeVisitor v)
Specified by:
visitChildren in interface polyglot.ast.NodeOps
Overrides:
visitChildren in class polyglot.ast.Node_c

reconstruct

protected AmbParam_c reconstruct(polyglot.ast.Id name)

disambiguate

public polyglot.ast.Node disambiguate(polyglot.visit.AmbiguityRemover sc)
                               throws polyglot.types.SemanticException
Disambiguates name. If name is a VarInstance, we get a dynamic label/principal node. If name is a PrincipalInstance, we get the same principal. If name is a ParamInstance, we get a ParamLabel or a ParamPrincipal.

Specified by:
disambiguate in interface polyglot.ast.NodeOps
Overrides:
disambiguate in class polyglot.ast.Node_c
Throws:
polyglot.types.SemanticException

varToParam

protected polyglot.ast.Node varToParam(JifVarInstance vi,
                                       polyglot.visit.AmbiguityRemover sc)
                                throws polyglot.types.SemanticException
Turns a JifVarInstance object into a label node or a principal node

Throws:
polyglot.types.SemanticException

principalToParam

protected polyglot.ast.Node principalToParam(PrincipalInstance vi,
                                             polyglot.visit.AmbiguityRemover sc)
                                      throws polyglot.types.SemanticException
Turns a PrincipalInstance object into a principal node.

Throws:
polyglot.types.SemanticException

paramToParam

protected polyglot.ast.Node paramToParam(ParamInstance pi,
                                         polyglot.visit.AmbiguityRemover sc)
                                  throws polyglot.types.SemanticException
Turns a PramaInstance object into a label node or a principal node.

Throws:
polyglot.types.SemanticException