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  java.lang.String name
           
protected  ParamInstance pi
           
 
Fields inherited from class polyglot.ast.Node_c
del, error, ext, position
 
Constructor Summary
AmbParam_c(polyglot.util.Position pos, java.lang.String 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.
 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
 
Methods inherited from class polyglot.ast.Node_c
addDecls, buildTypes, buildTypesEnter, checkConstants, childExpectedType, 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, visitChildren, 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, disambiguateEnter, disambiguateOverride, dump, dump, enterChildScope, enterScope, exceptionCheck, exceptionCheckEnter, prettyPrint, prettyPrint, prettyPrint, throwTypes, translate, typeCheck, typeCheckEnter, typeCheckOverride, visitChildren
 
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, disambiguateEnter, disambiguateOverride, dump, dump, enterChildScope, enterScope, exceptionCheck, exceptionCheckEnter, prettyPrint, prettyPrint, prettyPrint, throwTypes, translate, typeCheck, typeCheckEnter, typeCheckOverride, visitChildren
 

Field Detail

name

protected java.lang.String name

pi

protected ParamInstance pi
Constructor Detail

AmbParam_c

public AmbParam_c(polyglot.util.Position pos,
                  java.lang.String 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

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