jif.extension
Class JifConstructorDeclExt

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.JifConstructorDeclExt
All Implemented Interfaces:
java.lang.Cloneable, Jif, JifProcedureDeclExt, polyglot.ast.Ext, polyglot.util.Copy

public class JifConstructorDeclExt
extends JifProcedureDeclExt_c

The Jif extension of the JifConstructorDecl node.

See Also:
ConstructorDecl, JifConstructorDecl

Nested Class Summary
 
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
JifConstructorDeclExt(ToJavaExt toJava)
           
 
Method Summary
protected  void checkFinalFieldAssignment(polyglot.ast.Stmt s, java.util.Set uninitFinalVars, JifContext A)
          Check if the stmt is an assignment to a final field.
protected  polyglot.ast.Block checkInitsAndBody(Label Li, JifConstructorInstance ci, polyglot.ast.Block body, LabelChecker lc)
          This method implements the check-inits predicate of the thesis (Figures 4.41-45).
 polyglot.ast.Node labelCheck(LabelChecker lc)
          Label check the node to which this extension is attached.
protected static java.util.Set uninitFinalFields(polyglot.types.ReferenceType type)
          Utility method to get the set of field instances of final fields of the given ReferenceType that do not have an initializer.
 
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

JifConstructorDeclExt

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

uninitFinalFields

protected static java.util.Set uninitFinalFields(polyglot.types.ReferenceType type)
Utility method to get the set of field instances of final fields of the given ReferenceType that do not have an initializer.


checkInitsAndBody

protected polyglot.ast.Block checkInitsAndBody(Label Li,
                                               JifConstructorInstance ci,
                                               polyglot.ast.Block body,
                                               LabelChecker lc)
                                        throws polyglot.types.SemanticException
This method implements the check-inits predicate of the thesis (Figures 4.41-45).

Throws:
polyglot.types.SemanticException

checkFinalFieldAssignment

protected void checkFinalFieldAssignment(polyglot.ast.Stmt s,
                                         java.util.Set uninitFinalVars,
                                         JifContext A)
                                  throws polyglot.types.SemanticException
Check if the stmt is an assignment to a final field. Moreover, if the final field is a label, and it is being initialized from a final label, share the uids of the fields.

Throws:
polyglot.types.SemanticException