package x10.types.constraints.xnative; import x10.constraint.XLit; import x10.constraint.XTerm; import x10.constraint.XVar; import x10.constraint.xnative.XNativeLit; import x10.types.constraints.XTypeLit; import x10.types.matcher.Subst; import polyglot.types.SemanticException; import polyglot.types.Type; import polyglot.types.Types; /** * A subclass of XLit that represents a Type literal. * @author vijay * */ public class XNativeTypeLit extends XNativeLit implements XTypeLit { private static final long serialVersionUID = -1222245257474719757L; public XNativeTypeLit(Type l) { super(l); } @Override public Type type() { return (Type) val; } @Override public boolean hasVar(XVar v) { return Types.hasVar(type(), v); } @Override public XNativeTypeLit subst(XTerm y, XVar x, boolean propagate) { XNativeTypeLit n = (XNativeTypeLit) super.subst(y, x, propagate); Type newVal = n.type(); try { newVal = Subst.subst(type(), y, x); } catch (SemanticException e) { } if (newVal == n.type()) return n; return new XNativeTypeLit(newVal); } }