accrue.analysis.preciseExceptions

## Class PreciseExVisitor

- java.lang.Object
- - polyglot.visit.NodeVisitor
  - - accrue.analysis.preciseExceptions.PreciseExVisitor

- All Implemented Interfaces:
    java.lang.Cloneable, polyglot.util.Copy<polyglot.visit.NodeVisitor>

      public class PreciseExVisitor
      extends polyglot.visit.NodeVisitor

- - ### Nested Class Summary

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

      `polyglot.util.Copy.Util`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected PreciseExAnalysisUtil` | `autil`
    `protected java.util.Set<ThrowableType>` | `throwTypes`
    `protected boolean` | `trackImplicitErrors`
    `protected polyglot.types.TypeSystem` | `ts`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `` | `PreciseExVisitor(PreciseExAnalysisUtil autil)`
    `protected` | `PreciseExVisitor(PreciseExVisitor v)`
    `` | `PreciseExVisitor(polyglot.types.TypeSystem ts)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected boolean` | `canAllTerminateNormally(java.util.List<? extends polyglot.ast.Node> ns)`
    `protected boolean` | `canTerminateNormally(polyglot.ast.Node n)`
    `polyglot.ast.Node` | `leave(polyglot.ast.Node old, polyglot.ast.Node n, polyglot.visit.NodeVisitor v)`
    `polyglot.ast.Node` | `override(polyglot.ast.Node n)`
    `PreciseExAbsVal` | `performVisit(polyglot.ast.CodeNode n)`
    `protected void` | `process(polyglot.ast.Call n)`
    `protected void` | `process(polyglot.ast.ConstructorCall n)`
    `protected void` | `process(polyglot.ast.New n)`
    `protected boolean` | `process(polyglot.ast.Node n)` An extension point, so that subclasses can handle any custom nodes easily.
    `protected void` | `process(Suppress n)`
    `protected void` | `process(polyglot.ast.Try n)`
    `boolean` | `removeThrowableType(ThrowableType tt)`
    `java.util.Set<ThrowableType>` | `throwTypes()`

    - ### Methods inherited from class polyglot.visit.NodeVisitor

      `begin, copy, enter, enter, finish, finish, lang, leave, override, toString, visitEdge, visitEdgeNoOverride`

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

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

- - ### Field Detail

    - #### autil

          protected final PreciseExAnalysisUtil autil

    - #### ts

          protected final polyglot.types.TypeSystem ts

    - #### trackImplicitErrors

          protected boolean trackImplicitErrors

    - #### throwTypes

          protected final java.util.Set<ThrowableType> throwTypes

  - ### Constructor Detail

    - #### PreciseExVisitor

          public PreciseExVisitor(PreciseExAnalysisUtil autil)

    - #### PreciseExVisitor

          public PreciseExVisitor(polyglot.types.TypeSystem ts)

    - #### PreciseExVisitor

          protected PreciseExVisitor(PreciseExVisitor v)

  - ### Method Detail

    - #### removeThrowableType

          public boolean removeThrowableType(ThrowableType tt)

    - #### performVisit

          public PreciseExAbsVal performVisit(polyglot.ast.CodeNode n)
                                       throws polyglot.types.SemanticException

      Throws:
        `polyglot.types.SemanticException`

    - #### override

          public polyglot.ast.Node override(polyglot.ast.Node n)

      Overrides:
        `override` in class `polyglot.visit.NodeVisitor`

    - #### leave

          public polyglot.ast.Node leave(polyglot.ast.Node old,
                                polyglot.ast.Node n,
                                polyglot.visit.NodeVisitor v)

      Overrides:
        `leave` in class `polyglot.visit.NodeVisitor`

    - #### process

          protected boolean process(polyglot.ast.Node n)

      An extension point, so that subclasses can handle any custom nodes easily.
      Parameters:
        `n` -
      Returns:
        true if the node has been processed, false if the node has not been processed.

    - #### process

          protected void process(polyglot.ast.Try n)

    - #### canTerminateNormally

          protected boolean canTerminateNormally(polyglot.ast.Node n)

    - #### canAllTerminateNormally

          protected boolean canAllTerminateNormally(java.util.List<? extends polyglot.ast.Node> ns)

    - #### process

          protected void process(polyglot.ast.Call n)

    - #### process

          protected void process(polyglot.ast.ConstructorCall n)

    - #### process

          protected void process(polyglot.ast.New n)

    - #### process

          protected void process(Suppress n)

    - #### throwTypes

          public java.util.Set<ThrowableType> throwTypes()