jif.types.label

## Class AccessPathUninterpreted

- java.lang.Object
- - jif.types.label.AccessPath
  - - jif.types.label.AccessPathRoot
    - - jif.types.label.AccessPathUninterpreted

- All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, polyglot.util.Copy

      public class AccessPathUninterpreted
      extends AccessPathRoot

  Represents an access path that is not final, and thus not interpreted: the type system does not track it precisely. These access paths arise during method instantiation and field label instantiation. For example, given the declaration

            class C {
               final label{} lb;
               int{*this.lb} f;
               ...
            }

  and the field access

            bar().f;

  where bar is a method that returns an object of class C, the type system needs to allow the field access even though access path "bar()" is not final. This is achieved through the use of AccessPathUninterpreted, so that the label of the field access bar().f is "{* <>.lb}", where <>is a AccessPathUninterpreted.
  See Also:
    `AccessPath`, `JifInstantiator`, Serialized Form

- - ### Nested Class Summary

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

      `polyglot.util.Copy.Util`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AccessPathUninterpreted(polyglot.ast.Expr expr, polyglot.util.Position pos)`
    `AccessPathUninterpreted(java.lang.String expr, polyglot.util.Position pos)`
    `AccessPathUninterpreted(java.lang.String expr, polyglot.util.Position pos, boolean allowSubst)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `equals(java.lang.Object o)`
    `int` | `hashCode()`
    `boolean` | `isCanonical()`
    `boolean` | `isNeverNull()`
    `boolean` | `isUninterpreted()`
    `AccessPath` | `subst(AccessPathRoot r, AccessPath e)` Return the result of substituting the root r with the access path e.
    `java.lang.String` | `toString()`
    `polyglot.types.Type` | `type()` The type of the access path (when the access path is regarded as an expression).

    - ### Methods inherited from class jif.types.label.AccessPathRoot

      `equivalentTo, labelcheck, root`

    - ### Methods inherited from class jif.types.label.AccessPath

      `copy, exprString, position, throwTypes, verify`

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

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

- - ### Constructor Detail

    - #### AccessPathUninterpreted

          public AccessPathUninterpreted(polyglot.ast.Expr expr,
                                         polyglot.util.Position pos)

    - #### AccessPathUninterpreted

          public AccessPathUninterpreted(java.lang.String expr,
                                         polyglot.util.Position pos)

    - #### AccessPathUninterpreted

          public AccessPathUninterpreted(java.lang.String expr,
                                         polyglot.util.Position pos,
                                         boolean allowSubst)

  - ### Method Detail

    - #### isCanonical

          public boolean isCanonical()

      Specified by:
        `isCanonical` in class `AccessPath`

    - #### isNeverNull

          public boolean isNeverNull()

      Specified by:
        `isNeverNull` in class `AccessPath`

    - #### isUninterpreted

          public boolean isUninterpreted()

      Overrides:
        `isUninterpreted` in class `AccessPathRoot`

    - #### subst

          public AccessPath subst(AccessPathRoot r,
                                  AccessPath e)

      Description copied from class: `AccessPath`
      Return the result of substituting the root r with the access path e. For example, given a field access path "this.f", substituting the access path root "this" for the access path "o.g" will result in the access path "o.g.f". This method is used to instantiate procedures for calls, and labels of fields.
      Specified by:
        `subst` in class `AccessPath`

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### equals

          public boolean equals(java.lang.Object o)

      Specified by:
        `equals` in class `AccessPath`

    - #### hashCode

          public int hashCode()

      Specified by:
        `hashCode` in class `AccessPath`

    - #### type

          public polyglot.types.Type type()

      Description copied from class: `AccessPath`
      The type of the access path (when the access path is regarded as an expression).
      Specified by:
        `type` in class `AccessPath`