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
Methods inherited from class java.lang.Object |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
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)
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