accrue.analysis.ext

## Class AccrueExt_c

- java.lang.Object
- - polyglot.ast.Ext_c
  - - accrue.analysis.ext.AccrueExt_c

- All Implemented Interfaces:
    AccrueExt, java.io.Serializable, java.lang.Cloneable, polyglot.ast.Ext, polyglot.ast.NodeOps, polyglot.util.Copy<polyglot.ast.Ext>
  Direct Known Subclasses:
    ExtTerm

      public class AccrueExt_c
      extends polyglot.ast.Ext_c
      implements AccrueExt

  See Also:
    Serialized Form

- - ### Nested Class Summary

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

      `polyglot.util.Copy.Util`

  - ### Field Summary

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

      `ext, node, pred`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AccrueExt_c()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.Integer` | `enclosingFinallyDepth()` How many enclosing finally blocks is this node nested inside? This information is used during dataflow analysis to help manage syspended execution contexts.
    `static AccrueExt` | `ext(polyglot.ast.Node n)`
    `<T> T` | `getAnalysisResult(java.lang.Object analysisKey)`
    `<T> T` | `getAnalysisResult(java.lang.Object analysisKey, AnalysisContext context)`
    `<T> T` | `getAnalysisResult(java.lang.Object analysisKey, AnalysisContext context, polyglot.visit.FlowGraph.PeerKey peerKey)`
    `polyglot.ast.JLang` | `lang()`
    `int` | `numArgumentsOnResultStack()` During a dataflow analysis, when this term is encountered, how many arguments should there be on the expression result stack? For example, for an addition (e1 + e2) there will be two, one for each operand.
    `<T> void` | `recordAnalysisResult(java.lang.Object analysisKey, AnalysisContext context, polyglot.visit.FlowGraph.PeerKey peerKey, T result)`
    `<T> void` | `recordAnalysisResult(java.lang.Object analysisKey, AnalysisContext context, T result)`
    `<T> void` | `recordAnalysisResult(java.lang.Object analysisKey, T result)`
    `void` | `registerPointerStmts(StmtRegistrar registrar, RegisterPointerStmtsVisitor v)`
    `<T> T` | `removeAnalysisResult(java.lang.Object analysisKey)`
    `<T> T` | `removeAnalysisResult(java.lang.Object analysisKey, AnalysisContext context)`
    `<T> T` | `removeAnalysisResult(java.lang.Object analysisKey, AnalysisContext context, polyglot.visit.FlowGraph.PeerKey peerKey)`
    `void` | `setEnclosingFinallyDepth(int finallyDepth)` Set the number of finally blocks that this node is nested inside.

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

      `addDecls, buildTypes, buildTypesEnter, checkConstants, childExpectedType, copy, copy, copy, disambiguate, disambiguateEnter, disambiguateOverride, dump, dump, dump, dump, dump, enterChildScope, enterScope, exceptionCheck, exceptionCheckEnter, ext, ext, extRewrite, extRewriteEnter, init, initPred, 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 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, prettyPrint, prettyPrint, prettyPrint, prettyPrint, prettyPrint, throwTypes, translate, typeCheck, typeCheckEnter, typeCheckOverride, visitChild, visitChildren, visitList`

    - ### Methods inherited from interface polyglot.util.Copy

      `copy`

- - ### Constructor Detail

    - #### AccrueExt_c

          public AccrueExt_c()

  - ### Method Detail

    - #### ext

          public static AccrueExt ext(polyglot.ast.Node n)

    - #### lang

          public final polyglot.ast.JLang lang()

      Specified by:
        `lang` in interface `polyglot.ast.NodeOps`
      Overrides:
        `lang` in class `polyglot.ast.Ext_c`

    - #### registerPointerStmts

          public void registerPointerStmts(StmtRegistrar registrar,
                                  RegisterPointerStmtsVisitor v)

      Specified by:
        `registerPointerStmts` in interface `AccrueExt`

    - #### numArgumentsOnResultStack

          public int numArgumentsOnResultStack()

      Description copied from interface: `AccrueExt`
      During a dataflow analysis, when this term is encountered, how many arguments should there be on the expression result stack? For example, for an addition (e1 + e2) there will be two, one for each operand. For a field access (o.f) there will be one, the target of the access. In general, this will return a meaningful number only for expressions.
      Specified by:
        `numArgumentsOnResultStack` in interface `AccrueExt`
      Returns:
      See Also:
        `VarContextDataFlow`

    - #### recordAnalysisResult

          public <T> void recordAnalysisResult(java.lang.Object analysisKey,
                                      AnalysisContext context,
                                      polyglot.visit.FlowGraph.PeerKey peerKey,
                                      T result)

      Specified by:
        `recordAnalysisResult` in interface `AccrueExt`

    - #### recordAnalysisResult

          public <T> void recordAnalysisResult(java.lang.Object analysisKey,
                                      AnalysisContext context,
                                      T result)

      Specified by:
        `recordAnalysisResult` in interface `AccrueExt`

    - #### recordAnalysisResult

          public <T> void recordAnalysisResult(java.lang.Object analysisKey,
                                      T result)

      Specified by:
        `recordAnalysisResult` in interface `AccrueExt`

    - #### removeAnalysisResult

          public <T> T removeAnalysisResult(java.lang.Object analysisKey,
                                   AnalysisContext context,
                                   polyglot.visit.FlowGraph.PeerKey peerKey)

      Specified by:
        `removeAnalysisResult` in interface `AccrueExt`

    - #### removeAnalysisResult

          public <T> T removeAnalysisResult(java.lang.Object analysisKey,
                                   AnalysisContext context)

      Specified by:
        `removeAnalysisResult` in interface `AccrueExt`

    - #### removeAnalysisResult

          public <T> T removeAnalysisResult(java.lang.Object analysisKey)

      Specified by:
        `removeAnalysisResult` in interface `AccrueExt`

    - #### getAnalysisResult

          public <T> T getAnalysisResult(java.lang.Object analysisKey,
                                AnalysisContext context,
                                polyglot.visit.FlowGraph.PeerKey peerKey)

      Specified by:
        `getAnalysisResult` in interface `AccrueExt`

    - #### getAnalysisResult

          public <T> T getAnalysisResult(java.lang.Object analysisKey,
                                AnalysisContext context)

      Specified by:
        `getAnalysisResult` in interface `AccrueExt`

    - #### getAnalysisResult

          public <T> T getAnalysisResult(java.lang.Object analysisKey)

      Specified by:
        `getAnalysisResult` in interface `AccrueExt`

    - #### enclosingFinallyDepth

          public java.lang.Integer enclosingFinallyDepth()

      Description copied from interface: `AccrueExt`
      How many enclosing finally blocks is this node nested inside? This information is used during dataflow analysis to help manage syspended execution contexts. Example depths are given here.

           void m() {
             ; // finally depth here is 0
             try {
               ; // finally depth here is 0
             }
             finally {
               ; // finally depth here is 1
               try {
                 ; // finally depth here is 1
               }
               catch (Exception e) {
                 ; // finally depth here is 1
                 ...
               }
               finally {
                 ; // finally depth here is 2
               }
               ; // finally depth here is 1
             }
             ; // finally depth here is 0
           }

      Note that for a finally block node, the number of enclosing finally blocks does not include itself.
      Specified by:
        `enclosingFinallyDepth` in interface `AccrueExt`
      Returns:
        Number of enclosing finally blocks, null if not yet computed.

    - #### setEnclosingFinallyDepth

          public void setEnclosingFinallyDepth(int finallyDepth)

      Description copied from interface: `AccrueExt`
      Set the number of finally blocks that this node is nested inside.
      Specified by:
        `setEnclosingFinallyDepth` in interface `AccrueExt`