|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object orc.type.Type
public abstract class Type
Abstract superclass of all types for the Orc typechecker. This typechecker is based on the local type inference algorithms described by Benjamin Pierce and David Turner in their paper entitled "Local Type Inference". It extends that inference strategy with tuples, library-defined type constructors, user-defined datatypes, variance annotations, and other small changes.
Field Summary | |
---|---|
static Type |
BOOLEAN
|
static Type |
BOT
|
static Type |
INTEGER
|
static Type |
LET
|
static Type |
NUMBER
|
static Type |
SIGNAL
|
static Type |
STRING
|
static Type |
TOP
|
Constructor Summary | |
---|---|
Type()
|
Method Summary | |
---|---|
void |
addConstraints(Env<java.lang.Boolean> VX,
Type T,
Constraint[] C)
|
static java.util.Set<java.lang.Integer> |
allFreeVars(java.util.Collection<Type> collection)
|
void |
assertSubtype(Type that)
|
Tycon |
asTycon()
|
Type |
call(java.util.List<Type> args)
|
Type |
call(TypingContext ctx,
java.util.List<Argument> args,
java.util.List<Type> typeActuals)
|
boolean |
closed()
|
Type |
demote(Env<java.lang.Boolean> V)
|
boolean |
equal(Type that)
|
Variance |
findVariance(java.lang.Integer var)
|
java.util.Set<java.lang.Integer> |
freeVars()
|
static Type |
fromJavaClass(java.lang.Class cls)
Convert a Java class to an Orc type. |
static Type |
fromJavaMethod(java.lang.reflect.Method mth,
java.util.Map<java.lang.reflect.TypeVariable,Type> javaCtx)
|
static Type |
fromJavaMethods(java.util.List<java.lang.reflect.Method> matchingMethods,
java.util.Map<java.lang.reflect.TypeVariable,Type> javaCtx)
From a list of Java Methods, which are assumed to be the declarations of an overloaded method, create an Orc type, either an ArrowType for a singleton method or a MultiType for multiple methods, to typecheck the possible invocations of that method. |
static Type |
fromJavaType(java.lang.reflect.Type genericType)
|
static Type |
fromJavaType(java.lang.reflect.Type genericType,
java.util.Map<java.lang.reflect.TypeVariable,Type> javaCtx)
From a Java type, possibly a generic type, create an Orc type. |
boolean |
isBot()
|
boolean |
isTop()
|
java.lang.Class |
javaCounterpart()
Determine whether this type has a counterpart as a non-generic class in the Java class hierarchy. |
Type |
join(Type that)
|
static java.util.Map<java.lang.reflect.TypeVariable,Type> |
makeJavaCtx()
|
static java.util.Map<java.lang.reflect.TypeVariable,Type> |
makeJavaCtx(java.lang.Class cls,
java.util.List<Type> typeActuals)
From a class with Java type formals and a list of actual Orc type parameters, create a mapping from those Java variables to their appropriate Orc type bindings. |
Type |
marshal()
Convert to a syntactic type. |
Type |
meet(Type that)
|
Type |
promote(Env<java.lang.Boolean> V)
|
Type |
resolveSites(Config config)
|
static java.util.Set<java.lang.Integer> |
shiftFreeVars(java.util.Set<java.lang.Integer> vars,
java.lang.Integer distance)
|
Type |
subst(Env<Type> ctx)
|
static java.util.List<Type> |
substAll(java.util.List<Type> ts,
Env<Type> ctx)
|
boolean |
subtype(Type that)
|
boolean |
supertype(Type that)
|
java.lang.String |
toString()
|
Type |
unwrapAs(Type T)
|
java.util.List<Variance> |
variances()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final Type TOP
public static final Type BOT
public static final Type NUMBER
public static final Type STRING
public static final Type BOOLEAN
public static final Type INTEGER
public static final Type LET
public static final Type SIGNAL
Constructor Detail |
---|
public Type()
Method Detail |
---|
public boolean isTop()
public boolean isBot()
public boolean subtype(Type that) throws TypeException
TypeException
public void assertSubtype(Type that) throws TypeException
TypeException
public boolean supertype(Type that) throws TypeException
TypeException
public boolean equal(Type that) throws TypeException
TypeException
public Type join(Type that) throws TypeException
TypeException
public Type meet(Type that) throws TypeException
TypeException
public Type call(TypingContext ctx, java.util.List<Argument> args, java.util.List<Type> typeActuals) throws TypeException
TypeException
public Type call(java.util.List<Type> args) throws TypeException
TypeException
public java.lang.String toString()
toString
in class java.lang.Object
public Type subst(Env<Type> ctx) throws TypeException
TypeException
public static java.util.List<Type> substAll(java.util.List<Type> ts, Env<Type> ctx) throws TypeException
TypeException
public java.util.List<Variance> variances()
public Type unwrapAs(Type T) throws TypeException
TypeException
public Tycon asTycon() throws TypeException
TypeException
public java.util.Set<java.lang.Integer> freeVars()
public static java.util.Set<java.lang.Integer> allFreeVars(java.util.Collection<Type> collection)
public static java.util.Set<java.lang.Integer> shiftFreeVars(java.util.Set<java.lang.Integer> vars, java.lang.Integer distance)
public boolean closed()
public Variance findVariance(java.lang.Integer var)
public Type promote(Env<java.lang.Boolean> V) throws TypeException
TypeException
public Type demote(Env<java.lang.Boolean> V) throws TypeException
TypeException
public void addConstraints(Env<java.lang.Boolean> VX, Type T, Constraint[] C) throws TypeException
TypeException
public static Type fromJavaMethods(java.util.List<java.lang.reflect.Method> matchingMethods, java.util.Map<java.lang.reflect.TypeVariable,Type> javaCtx) throws TypeException
matchingMethods
- javaCtx
-
TypeException
public static Type fromJavaMethod(java.lang.reflect.Method mth, java.util.Map<java.lang.reflect.TypeVariable,Type> javaCtx) throws TypeException
TypeException
public static Type fromJavaType(java.lang.reflect.Type genericType, java.util.Map<java.lang.reflect.TypeVariable,Type> javaCtx) throws TypeException
genericType
- javaCtx
-
TypeException
public static Type fromJavaType(java.lang.reflect.Type genericType) throws TypeException
TypeException
public static Type fromJavaClass(java.lang.Class cls) throws TypeException
cls
- Java class to be converted.
TypeException
public static java.util.Map<java.lang.reflect.TypeVariable,Type> makeJavaCtx(java.lang.Class cls, java.util.List<Type> typeActuals) throws TypeArityException
cls
- typeActuals
-
TypeArityException
public static java.util.Map<java.lang.reflect.TypeVariable,Type> makeJavaCtx()
public java.lang.Class javaCounterpart()
public Type resolveSites(Config config) throws MissingTypeException
MissingTypeException
public Type marshal() throws UnrepresentableTypeException
UnrepresentableTypeException
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |