An annotated type tpe @ annot
A marker trait for types that bind other types that refer to them.
A marker trait for types that bind other types that refer to them. Instances are: PolyType, MethodType, RefinedType.
Instances of this class are cached and are not proxies.
Instances of this class are cached and are proxies.
A marker trait for cached types
Roughly: the info of a class during a period.
Roughly: the info of a class during a period.
The prefix on which parents, decls, and selfType need to be rebased.
The class symbol.
The parent types of this class. These are all normalized to be TypeRefs by moving any refinements to be member definitions of the class itself.
The symbols defined directly in this class.
The type of this
in this class, if explicitly given,
NoType otherwise. If class is compiled from source, can also
be a reference to the self symbol containing the type.
A constant type with single value
.
A type map that maps also parents and self type of a ClassInfo
A by-name parameter type of the form => T
, or the type of a method with no parameter list.
A higher kinded type application C[T_1, ..., T_n]
The type of an import clause tree
The type of an erased array
The parameter of a type lambda
A trait that mixes in functionality for signature caching
A name filter selects or discards a member name of a type pre
.
A name filter selects or discards a member name of a type pre
.
To enable efficient caching, name filters have to satisfy the
following invariant: If keep
is a name filter, and pre
has
class C
as a base class, then
keep(pre, name) implies keep(C.this, name)
A NamedType of the form Prefix # name
Implementations of this trait cache the results of narrow
.
TODO Some docs would be nice here!
A type lambda of the form [v_0 X_0, ..., v_n X_n] => T
A trait for proto-types, used as expected types in typer
a self-reference to an enclosing recursive type.
A refined type parent { refinement }
A refined type parent { refinement }
The name of the refinement declaration
A marker trait for types that are guaranteed to contain only a single non-null value (they might contain null in addition).
A skolem type reference with underlying type binder
.
The type of a super reference cls.super where
thistpe
is cls.this and supertpe
is the type of the value referenced
by super
.
A class for temporary class infos where parents
are not yet known.
A marker trait for types that apply only to term symbols or that represent higher-kinded types.
The type cls.this
The type cls.this
A type ref which indicates the class cls
.
Note: we do not pass a class symbol directly, because symbols
do not survive runs whereas typerefs do.
The class of types.
The class of types. The principal subclasses and sub-objects are as follows:
Type -+- ProxyType --+- NamedType ----+--- TypeRef | | \ | +- SingletonType-+-+- TermRef | | | | | +--- ThisType | | +--- SuperType | | +--- ConstantType | | +--- MethodParam | | +----RecThis | | +--- SkolemType | +- PolyParam | +- RefinedOrRecType -+-- RefinedType | | -+-- RecType | +- HKApply | +- TypeBounds | +- ExprType | +- AnnotatedType | +- TypeVar | +- PolyType | +- GroundType -+- AndType +- OrType +- MethodType -----+- ImplicitMethodType | +- JavaMethodType +- ClassInfo | +- NoType +- NoPrefix +- ErrorType +- WildcardType
Note: please keep in sync with copy in docs/docs/internals/type-system.md
.
Type bounds >: lo <: hi
A marker trait for type proxies.
A marker trait for type proxies.
Each implementation is expected to redefine the underlying
method.
A marker trait for types that apply only to type symbols
In a TypeApply tree, a TypeVar is created for each argument type to be inferred.
In a TypeApply tree, a TypeVar is created for each argument type to be inferred. Every type variable is referred to by exactly one inferred type parameter of some TypeApply tree.
A type variable is essentially a switch that models some part of a substitution.
It is first linked to origin
, a poly param that's in the current constraint set.
It can then be (once) instantiated to some other type. The instantiation is
recorded in the type variable itself, or else, if the current type state
is different from the variable's creation state (meaning unrolls are possible)
in the current typer state.
Instances of this class are uncached and are not proxies.
Instances of this class are uncached and are proxies.
A marker trait for types that can be types of values or that are higher-kinded
A marker trait for types that can be types of values or prototypes of value types
Wildcard type, possibly with bounds
Missing prefix
Missing prefix
Sentinel for "missing type"
Sentinel for "missing type"
An extractor for single abstract method types.
An extractor for single abstract method types. A type is a SAM type if it is a reference to a class or trait, which
The pattern SAMType(denot)
matches a SAM type, where denot
is the
denotation of the single abstract method as a member of the type.
A filter for names of deferred term definitions of a given type
A filter for names of abstract types of a given type
A filter for names of abstract types of a given type