jif.extension
Class JifMethodDeclExt

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

public class JifMethodDeclExt
extends JifProcedureDeclExt_c

The Jif extension of the JifMethodDecl node.

See Also:
JifMethodDecl

Nested Class Summary
protected static class JifMethodDeclExt.CovariantLabelChecker
          Checker to ensure that no covariant label occurs in the label
 
Nested classes/interfaces inherited from class jif.extension.JifProcedureDeclExt_c
JifProcedureDeclExt_c.ConstraintVarianceLabelChecker
 
Field Summary
 
Fields inherited from class jif.ast.Jif_c
toJava, X
 
Fields inherited from class polyglot.ast.Ext_c
ext, node
 
Constructor Summary
JifMethodDeclExt(ToJavaExt toJava)
           
 
Method Summary
protected  void checkCovariance(JifMethodInstance mi, LabelChecker lc)
          This method checks that covariant labels are not used in contravariant positions.
 polyglot.ast.Node labelCheck(LabelChecker lc)
          Label check the node to which this extension is attached.
protected  void overrideMethodLabelCheck(LabelChecker lc, JifMethodInstance mi)
          Check that this method instance conforms to the signatures of any methods in the superclasses or interfaces that it is overriding.
 
Methods inherited from class jif.extension.JifProcedureDeclExt_c
addCallers, addReturnConstraints, checkActsForAuthority, checkAutoEndorseConstrainPC, checkConstraintVariance, checkEnforceSignature, checkFormals, constrainAuth, constrainLabelEnv
 
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 jif.ast.Jif
integerBoundsCalculated, toJava, toJava, X, X
 
Methods inherited from interface polyglot.ast.Ext
dump, ext, ext, init, node
 
Methods inherited from interface polyglot.util.Copy
copy
 

Constructor Detail

JifMethodDeclExt

public JifMethodDeclExt(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

checkCovariance

protected void checkCovariance(JifMethodInstance mi,
                               LabelChecker lc)
                        throws SemanticDetailedException
This method checks that covariant labels are not used in contravariant positions.

Throws:
SemanticDetailedException

overrideMethodLabelCheck

protected void overrideMethodLabelCheck(LabelChecker lc,
                                        JifMethodInstance mi)
                                 throws polyglot.types.SemanticException
Check that this method instance conforms to the signatures of any methods in the superclasses or interfaces that it is overriding. In particular, argument labels and pc bounds are contravariant, return labels, return value labels and labels on exception types are covariant.

Throws:
polyglot.types.SemanticException