jif.extension

## Class JifFieldDeclExt_c

- java.lang.Object
- - polyglot.ast.Ext_c
  - - jif.ast.JifExt_c
    - - jif.extension.JifFieldDeclExt_c

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

      public class JifFieldDeclExt_c
      extends JifExt_c
      implements JifFieldDeclExt

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

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `protected static class` | `JifFieldDeclExt_c.InvarianceLabelChecker` Checker to ensure that labels do not use covariant labels in the wrong places
    `protected static class` | `JifFieldDeclExt_c.InvarianceLabelSubstr` Visitor to ensure that labels do not use covariant labels in the wrong places
    `protected static class` | `JifFieldDeclExt_c.StaticFieldLabelChecker` Checker to ensure that labels of static fields do not use the This label, or any parameters

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

      `polyglot.util.Copy.Util`

  - ### Field Summary

    - ### 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
    `JifFieldDeclExt_c(ToJavaExt toJava)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `polyglot.ast.Node` | `labelCheck(LabelChecker lc)` Label check field initializers.
    `void` | `labelCheckField(LabelChecker lc, JifClassType ct)` Extracts the declared label of this field.

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

    - #### JifFieldDeclExt_c

          public JifFieldDeclExt_c(ToJavaExt toJava)

  - ### Method Detail

    - #### labelCheckField

          public void labelCheckField(LabelChecker lc,
                                      JifClassType ct)
                               throws polyglot.types.SemanticException

      Extracts the declared label of this field.
      Specified by:
        `labelCheckField` in interface `JifFieldDeclExt`
      Throws:
        `polyglot.types.SemanticException`

    - #### labelCheck

          public polyglot.ast.Node labelCheck(LabelChecker lc)
                                       throws polyglot.types.SemanticException

      Label check field initializers. the PC of field initializer is the bottom label, because the initializer is always executed after invoking super constructor and before invoking the constructor of this class. (like the single path rule)
      Specified by:
        `labelCheck` in interface `JifExt`
      Overrides:
        `labelCheck` in class `JifExt_c`
      Throws:
        `polyglot.types.SemanticException`