jif.visit

## Class JifLabelSubst

- java.lang.Object
- - polyglot.visit.NodeVisitor
  - - polyglot.visit.HaltingVisitor
    - - polyglot.visit.ErrorHandlingVisitor
      - - polyglot.visit.ContextVisitor
        - - jif.visit.JifLabelSubst

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

      public class JifLabelSubst
      extends polyglot.visit.ContextVisitor

  This visitor substitutes labels for each variable in the path maps of each JifExt object. By subclassing ContextVisitor, type objects are rebuilt automatically.

- - ### 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 VarMap` | `bounds`
    `protected polyglot.util.ErrorQueue` | `eq`
    `protected Solver` | `solver`
    `protected JifTypeSystem` | `ts`

    - ### Fields inherited from class polyglot.visit.ContextVisitor

      `context, outer, prune, rethrowMissingDependencies`

    - ### Fields inherited from class polyglot.visit.ErrorHandlingVisitor

      `error, job, nf`

    - ### Fields inherited from class polyglot.visit.HaltingVisitor

      `bypass, bypassParent`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `JifLabelSubst(polyglot.frontend.Job job, JifTypeSystem ts, polyglot.ast.NodeFactory nf, Solver solver)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `polyglot.ast.Node` | `leaveCall(polyglot.ast.Node old, polyglot.ast.Node n, polyglot.visit.NodeVisitor v)`
    `protected void` | `solve()`
    `protected polyglot.ast.Node` | `updateNode(polyglot.ast.Node n)`

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

      `addDecls, addDecls, begin, context, context, enter, enter, enterScope, leave, rethrowMissingDependencies, superEnter`

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

      `catchErrors, enterCall, enterCall, enterError, errorQueue, hasErrors, job, leaveCall, leaveCall, nodeFactory, typeSystem`

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

      `bypass, bypass, bypassChildren, override, visitChildren`

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

      `copy, 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

    - #### ts

          protected JifTypeSystem ts

    - #### solver

          protected final Solver solver

    - #### eq

          protected polyglot.util.ErrorQueue eq

    - #### bounds

          protected VarMap bounds

  - ### Constructor Detail

    - #### JifLabelSubst

          public JifLabelSubst(polyglot.frontend.Job job,
                               JifTypeSystem ts,
                               polyglot.ast.NodeFactory nf,
                               Solver solver)

  - ### Method Detail

    - #### leaveCall

          public polyglot.ast.Node leaveCall(polyglot.ast.Node old,
                                             polyglot.ast.Node n,
                                             polyglot.visit.NodeVisitor v)
                                      throws polyglot.types.SemanticException

      Overrides:
        `leaveCall` in class `polyglot.visit.ErrorHandlingVisitor`
      Throws:
        `polyglot.types.SemanticException`

    - #### solve

          protected void solve()
                        throws polyglot.types.SemanticException

      Throws:
        `polyglot.types.SemanticException`

    - #### updateNode

          protected polyglot.ast.Node updateNode(polyglot.ast.Node n)
                                          throws polyglot.types.SemanticException

      Throws:
        `polyglot.types.SemanticException`