accrue.analysis.ext

## Class ExtNew

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

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

      public class ExtNew
      extends ExtExpr
      implements ExtAlloc, ExtProcedureCall

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

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `canTerminateNormally(AnalysisContext context)`
    `<DFItem extends polyglot.visit.DataFlow.Item> java.util.Map<polyglot.visit.FlowGraph.EdgeKey,DFItem>` | `flowDispatch(DataFlowDispatch<DFItem> dataflow, DFItem dfIn, polyglot.visit.FlowGraph<DFItem> graph, polyglot.visit.FlowGraph.Peer<DFItem> peer)` Dispatch function.
    `AllocSiteNode` | `getAllocNode(ConstructorContext constructorContext)` Get the AllocSiteNode representing the allocation of a new object (within the specific constructor context).
    `CallSiteNode` | `getCallSiteNode()`
    `boolean` | `mayBeNull(AnalysisContext context)`
    `void` | `recordPreciseExResults(AnalysisContext context, java.util.Set<ThrowableType> throwTypes, boolean canTerminateNormally)`
    `void` | `registerPointerStmts(StmtRegistrar registrar, RegisterPointerStmtsVisitor v)` This method needs to ensure that: 1.
    `void` | `setAllocNode(AllocSiteNode allocNode, ConstructorContext constructorContext)` Set the AllocSiteNode representing the allocation of a new object (within the specific constructor context).
    `void` | `setCallSiteNode(CallSiteNode callSiteNode)`
    `java.util.Collection<ThrowableType>` | `throwTypes(polyglot.types.TypeSystem ts, AnalysisContext context)` Get the collection of types of exceptions that might be thrown

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

      `getConstructorContexts, getReferenceVariable, mayBeNull, numArgumentsOnResultStack, recordNullAnalysisResult, setNullResultsNoPeerValid, setReferenceVariable`

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

      `flowDispatch`

    - ### 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 accrue.analysis.ext.AccrueExt

      `enclosingFinallyDepth, getAnalysisResult, getAnalysisResult, getAnalysisResult, numArgumentsOnResultStack, recordAnalysisResult, recordAnalysisResult, recordAnalysisResult, removeAnalysisResult, removeAnalysisResult, removeAnalysisResult, setEnclosingFinallyDepth`

    - ### 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, lang, prettyPrint, prettyPrint, prettyPrint, prettyPrint, prettyPrint, throwTypes, translate, typeCheck, typeCheckEnter, typeCheckOverride, visitChild, visitChildren, visitList`

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

      `copy`

- - ### Constructor Detail

    - #### ExtNew

          public ExtNew()

  - ### Method Detail

    - #### setAllocNode

          public void setAllocNode(AllocSiteNode allocNode,
                          ConstructorContext constructorContext)

      Description copied from interface: `ExtAlloc`
      Set the AllocSiteNode representing the allocation of a new object (within the specific constructor context).
      Specified by:
        `setAllocNode` in interface `ExtAlloc`

    - #### getAllocNode

          public AllocSiteNode getAllocNode(ConstructorContext constructorContext)

      Description copied from interface: `ExtAlloc`
      Get the AllocSiteNode representing the allocation of a new object (within the specific constructor context).
      Specified by:
        `getAllocNode` in interface `ExtAlloc`

    - #### registerPointerStmts

          public void registerPointerStmts(StmtRegistrar registrar,
                                  RegisterPointerStmtsVisitor v)

      Description copied from class: `ExtExpr`
      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 `ExtExpr`

    - #### mayBeNull

          public boolean mayBeNull(AnalysisContext context)

      Overrides:
        `mayBeNull` in class `ExtExpr`

    - #### recordPreciseExResults

          public void recordPreciseExResults(AnalysisContext context,
                                    java.util.Set<ThrowableType> throwTypes,
                                    boolean canTerminateNormally)

      Specified by:
        `recordPreciseExResults` in interface `ExtProcedureCall`

    - #### throwTypes

          public java.util.Collection<ThrowableType> throwTypes(polyglot.types.TypeSystem ts,
                                                       AnalysisContext context)

      Description copied from class: `ExtTerm`
      Get the collection of types of exceptions that might be thrown
      Specified by:
        `throwTypes` in interface `ExtProcedureCall`
      Overrides:
        `throwTypes` in class `ExtTerm`
      Parameters:
        `ts` - Polyglot type system
        `context` - Data flow analysis context
      Returns:
        collection of types of exceptions that might be thrown

    - #### canTerminateNormally

          public boolean canTerminateNormally(AnalysisContext context)

      Specified by:
        `canTerminateNormally` in interface `ExtProcedureCall`

    - #### flowDispatch

          public <DFItem extends polyglot.visit.DataFlow.Item> java.util.Map<polyglot.visit.FlowGraph.EdgeKey,DFItem> flowDispatch(DataFlowDispatch<DFItem> dataflow,
                                                                                                                          DFItem dfIn,
                                                                                                                          polyglot.visit.FlowGraph<DFItem> graph,
                                                                                                                          polyglot.visit.FlowGraph.Peer<DFItem> peer)

      Description copied from class: `ExtTerm`
      Dispatch function. Subclasses of ExtTerm should override this method to invoke the appropriate method of `DataFlowDispatch d`. This helps extensions implement and extend data flow analyses.
      Overrides:
        `flowDispatch` in class `ExtTerm`
      Returns:

    - #### setCallSiteNode

          public void setCallSiteNode(CallSiteNode callSiteNode)

      Specified by:
        `setCallSiteNode` in interface `ExtProcedureCall`

    - #### getCallSiteNode

          public CallSiteNode getCallSiteNode()

      Specified by:
        `getCallSiteNode` in interface `ExtProcedureCall`