package polyglot.ast;
import polyglot.util.Enum;
/**
* A <code>Special</code> is an immutable representation of a
* reference to <code>this</code> or <code>super</code in Java. This
* reference can be optionally qualified with a type such as
* <code>Foo.this</code>.
*/
public interface Special extends Expr
{
/** Special expression kind: either "super" or "this". */
public static class Kind extends Enum {
public Kind(String name) { super(name); }
}
public static final Kind SUPER = new Kind("super");
public static final Kind THIS = new Kind("this");
/** Get the kind of expression: SUPER or THIS. */
Kind kind();
/** Set the kind of expression: SUPER or THIS. */
Special kind(Kind kind);
/** Get the outer class qualifier of the expression. */
TypeNode qualifier();
/** Set the outer class qualifier of the expression. */
Special qualifier(TypeNode qualifier);
}