jif.extension

## Class JifMethodDeclExt

- java.lang.Object
- - polyglot.ast.Ext_c
  - - jif.ast.JifExt_c
    - - jif.extension.JifProcedureDeclExt_c
      - - jif.extension.JifMethodDeclExt

- All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, JifExt, JifProcedureDeclExt, polyglot.ast.Ext, polyglot.ast.NodeOps, polyglot.util.Copy<polyglot.ast.Ext>

      public class JifMethodDeclExt
      extends JifProcedureDeclExt_c

  The Jif extension of the `JifMethodDecl` node.
  See Also:
    `JifMethodDecl`, Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `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`

    - ### Nested classes/interfaces inherited from interface polyglot.util.Copy

      `polyglot.util.Copy.Util`

  - ### Field Summary

    - ### Fields inherited from class jif.extension.JifProcedureDeclExt_c

      `jif_verbose`

    - ### Fields inherited from class jif.ast.JifExt_c

      `toJava, X`

    - ### Fields inherited from class polyglot.ast.Ext_c

      `ext, node, pred`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `JifMethodDeclExt(ToJavaExt toJava)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `checkCovariance(JifMethodInstance mi, LabelChecker lc)` This method checks that covariant labels are not used in contravariant positions.
    `protected void` | `initContextForBody(LabelChecker lc, JifMethodInstance mi)` Set up context for checking the body.
    `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, checkProviderAuthority, constrainAuth, constrainLabelEnv`

    - ### Methods inherited from class jif.ast.JifExt_c

      `checkAndRemoveThrowType, checkThrowTypes, copy, dump, getPathMap, init, integerBoundsCalculated, toJava, toJava, updatePathMap, X, X`

    - ### Methods inherited from class polyglot.ast.Ext_c

      `addDecls, buildTypes, buildTypesEnter, checkConstants, childExpectedType, copy, copy, disambiguate, disambiguateEnter, disambiguateOverride, dump, dump, dump, dump, enterChildScope, enterScope, exceptionCheck, exceptionCheckEnter, ext, ext, extRewrite, extRewriteEnter, extRewriteOverride, initPred, lang, node, pred, prettyPrint, prettyPrint, prettyPrint, prettyPrint, prettyPrint, print, printBlock, printSubStmt, superLang, throwTypes, toString, translate, typeCheck, typeCheckEnter, typeCheckOverride, visitChild, visitChildren, visitList`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface jif.ast.JifExt

      `integerBoundsCalculated, toJava, toJava, X, X`

    - ### Methods inherited from interface polyglot.ast.Ext

      `dump, ext, ext, init, initPred, node, pred`

    - ### Methods inherited from interface polyglot.ast.NodeOps

      `addDecls, buildTypes, buildTypesEnter, checkConstants, childExpectedType, copy, copy, disambiguate, disambiguateEnter, disambiguateOverride, dump, dump, dump, dump, enterChildScope, enterScope, exceptionCheck, exceptionCheckEnter, extRewrite, extRewriteEnter, extRewriteOverride, lang, prettyPrint, prettyPrint, prettyPrint, prettyPrint, prettyPrint, throwTypes, translate, typeCheck, typeCheckEnter, typeCheckOverride, visitChild, visitChildren, visitList`

    - ### 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: `JifExt`
      Label check the node to which this extension is attached.
      Specified by:
        `labelCheck` in interface `JifExt`
      Overrides:
        `labelCheck` in class `JifExt_c`
      Throws:
        `polyglot.types.SemanticException`

    - #### initContextForBody

          protected void initContextForBody(LabelChecker lc,
                                            JifMethodInstance mi)

      Set up context for checking the body. Factored out to allow for overidding in extensions like Fabric.

    - #### 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`