jif.extension
Class JifFormalExt

java.lang.Object
  extended by polyglot.ast.Ext_c
      extended by jif.ast.Jif_c
          extended by jif.extension.JifFormalExt
All Implemented Interfaces:
java.lang.Cloneable, Jif, polyglot.ast.Ext, polyglot.util.Copy

public class JifFormalExt
extends Jif_c

The Jif extension of the Formal node.

See Also:
Formal

Nested Class Summary
protected static class JifFormalExt.FormalVarianceLabelChecker
          Checker to ensure that labels do not use covariant labels in the wrong places
protected static class JifFormalExt.FormalVarianceLabelSubstr
          Visitor to ensure that labels do not use covariant labels in the wrong places
 
Field Summary
 
Fields inherited from class jif.ast.Jif_c
toJava, X
 
Fields inherited from class polyglot.ast.Ext_c
ext, node
 
Constructor Summary
JifFormalExt(ToJavaExt toJava)
           
 
Method Summary
protected  void checkVariance(LabelChecker lc, polyglot.ast.Formal f)
          Ensure that covariant labels do not occur in the type of the formal for methods.
 polyglot.ast.Node labelCheck(LabelChecker lc)
          Label check the node to which this extension is attached.
 
Methods inherited from class jif.ast.Jif_c
checkAndRemoveThrowType, checkThrowTypes, copy, getPathMap, init, integerBoundsCalculated, toJava, toJava, updatePathMap, X, X
 
Methods inherited from class polyglot.ast.Ext_c
dump, ext, ext, node, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface polyglot.ast.Ext
dump, ext, ext, node
 

Constructor Detail

JifFormalExt

public JifFormalExt(ToJavaExt toJava)
Method Detail

labelCheck

public polyglot.ast.Node labelCheck(LabelChecker lc)
                             throws polyglot.types.SemanticException
Description copied from interface: Jif
Label check the node to which this extension is attached.

Specified by:
labelCheck in interface Jif
Overrides:
labelCheck in class Jif_c
Throws:
polyglot.types.SemanticException

checkVariance

protected void checkVariance(LabelChecker lc,
                             polyglot.ast.Formal f)
                      throws polyglot.types.SemanticException
Ensure that covariant labels do not occur in the type of the formal for methods. Constructors do not require this check.

Parameters:
lc -
f -
Throws:
polyglot.types.SemanticException