accrue.analysis.ext

## Class ExtExpr

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

- 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:
    ExtArrayAccess, ExtArrayAccessAssign, ExtArrayInit, ExtBinary, ExtCall, ExtCast, ExtConditional, ExtField, ExtFieldAssign, ExtInstanceof, ExtLit, ExtLocal, ExtLocalAssign, ExtNew, ExtNewArray, ExtPrimitiveExpr, ExtSpecial, ExtSuppress

      public class ExtExpr
      extends ExtTerm

  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
    `ExtExpr()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.util.Set<ConstructorContext>` | `getConstructorContexts()`
    `ReferenceVariable` | `getReferenceVariable(ConstructorContext constructorContext)`
    `boolean` | `mayBeNull(AnalysisContext context)`
    `boolean` | `mayBeNull(AnalysisContext context, polyglot.visit.FlowGraph.PeerKey peerKey)`
    `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.
    `void` | `recordNullAnalysisResult(AnalysisContext context, polyglot.visit.FlowGraph.PeerKey peerKey, boolean maybeNull)`
    `void` | `registerPointerStmts(StmtRegistrar registrar, RegisterPointerStmtsVisitor v)` This method needs to ensure that: 1.
    `void` | `setNullResultsNoPeerValid()`
    `void` | `setReferenceVariable(ReferenceVariable node, ConstructorContext constructorContext)`

    - ### Methods inherited from class accrue.analysis.ext.ExtTerm

      `flowDispatch, flowDispatch, throwTypes`

    - ### Methods inherited from class accrue.analysis.ext.AccrueExt_c

      `enclosingFinallyDepth, ext, getAnalysisResult, getAnalysisResult, getAnalysisResult, lang, recordAnalysisResult, recordAnalysisResult, recordAnalysisResult, removeAnalysisResult, removeAnalysisResult, removeAnalysisResult, setEnclosingFinallyDepth`

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

    - #### ExtExpr

          public ExtExpr()

  - ### Method Detail

    - #### setReferenceVariable

          public void setReferenceVariable(ReferenceVariable node,
                                  ConstructorContext constructorContext)

    - #### getReferenceVariable

          public ReferenceVariable getReferenceVariable(ConstructorContext constructorContext)

    - #### getConstructorContexts

          public java.util.Set<ConstructorContext> getConstructorContexts()

    - #### registerPointerStmts

          public void registerPointerStmts(StmtRegistrar registrar,
                                  RegisterPointerStmtsVisitor v)

      This method needs to ensure that: 1. For all expressions of reference type, there is a local node 2. That local node has been assigned to appropriately, based on the semantics of the expression 3. Exceptions have been assigned to the appropriate handlers (including exceptions that may be generated by this expression).
      Specified by:
        `registerPointerStmts` in interface `AccrueExt`
      Overrides:
        `registerPointerStmts` in class `AccrueExt_c`

    - #### 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`
      Overrides:
        `numArgumentsOnResultStack` in class `AccrueExt_c`
      Returns:
      See Also:
        `VarContextDataFlow`

    - #### mayBeNull

          public boolean mayBeNull(AnalysisContext context,
                          polyglot.visit.FlowGraph.PeerKey peerKey)

    - #### mayBeNull

          public boolean mayBeNull(AnalysisContext context)

    - #### recordNullAnalysisResult

          public void recordNullAnalysisResult(AnalysisContext context,
                                      polyglot.visit.FlowGraph.PeerKey peerKey,
                                      boolean maybeNull)

    - #### setNullResultsNoPeerValid

          public void setNullResultsNoPeerValid()