Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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

    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

Constructor Summary
`AccessPathUninterpreted(polyglot.ast.Expr expr, polyglot.util.Position pos)`

Method Summary
`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
`labelcheck, root`

Methods inherited from class jif.types.label.AccessPath
`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)

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)

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

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

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD