Constructors
Members
An annotated type tpe @ annot
An annotated type tpe @ annot
A type map that approximates NoTypes by upper or lower known bounds depending on variance.
if variance > 0 : approximate by upper bound variance < 0 : ap...
A type map that approximates NoTypes by upper or lower known bounds depending on variance.
if variance > 0 : approximate by upper bound variance < 0 : approximate by lower bound variance = 0 : propagate NoType to next outer level
A marker trait for types that bind other types that refer to them. Instances are: LambdaType, RecType.
A marker trait for types that bind other types that refer to them. Instances are: LambdaType, RecType.
Instances of this class are cached and are not proxies.
Instances of this class are cached and are not proxies.
Instances of this class are cached and are proxies.
Instances of this class are cached and are proxies.
A marker trait for cached types
A marker trait for cached types
Roughly: the info of a class during a period.
Roughly: the info of a class during a period.
A constant type with single value
.
A constant type with single value
.
A type map that maps also parents and self type of a ClassInfo
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 by-name parameter type of the form => T
, or the type of a method with no parameter list.
A common superclass of ErrorType
and TryDynamicCallSite
. Instances of this
class are at the same time subtypes and supertypes of every other type.
A common superclass of ErrorType
and TryDynamicCallSite
. Instances of this
class are at the same time subtypes and supertypes of every other type.
A higher kinded type application C[T_1, ..., T_n]
A higher kinded type application C[T_1, ..., T_n]
A type lambda of the form [X_0 B_0, ..., X_n B_n] => T
Variances are encoded in parameter names. A name starting with +
designates a covariant parameter...
A type lambda of the form [X_0 B_0, ..., X_n B_n] => T
Variances are encoded in parameter names. A name starting with +
designates a covariant parameter, a name starting with -
designates
a contravariant parameter, and every other name designates a non-variant parameter.
The type of an import clause tree
The type of an import clause tree
The type of an import clause tree
The type of an import clause tree
The type of an erased array
The type of an erased array
The parameter of a type lambda
The parameter of a type lambda
The parameter of a type lambda
The parameter of a type lambda
The lambda type square:
LambdaType | TermLambda | TypeLambda -------------+-------------------+------------------ HKLambda | HKTermLambd...
The lambda type square:
LambdaType | TermLambda | TypeLambda -------------+-------------------+------------------ HKLambda | HKTermLambda | HKTypeLambda MethodOrPoly | MethodType | PolyType
A ternary extractor for MethodType
A ternary extractor for MethodType
A trait that mixes in functionality for signature caching
A trait that mixes in functionality for signature caching
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 kee...
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
A NamedType of the form Prefix # name
Implementations of this trait cache the results of narrow
.
Implementations of this trait cache the results of narrow
.
Missing prefix
Missing prefix
Sentinel for "missing type"
Sentinel for "missing type"
The type of a polymorphic method. It has the same form as HKTypeLambda, except it applies to terms and parameters do not have variances.
The type of a polymorphic method. It has the same form as HKTypeLambda, except it applies to terms and parameters do not have variances.
A trait for proto-types, used as expected types in typer
A trait for proto-types, used as expected types in typer
a self-reference to an enclosing recursive type.
a self-reference to an enclosing recursive type.
a self-reference to an enclosing recursive type.
a self-reference to an enclosing recursive type.
A refined type parent { refinement }
A refined type parent { refinement }
An extractor for single abstract method types. A type is a SAM type if it is a reference to a class or trait, which
- has a single abstract method with a method type (ExprType and PolyType not allowed!)
- can be instantiated without arguments or with just () as argument.
The pattern SAMType(denot)
matches...
An extractor for single abstract method types. A type is a SAM type if it is a reference to a class or trait, which
- has a single abstract method with a method type (ExprType and PolyType not allowed!)
- can be instantiated without arguments or with just () as argument.
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 marker trait for types that are guaranteed to contain only a single non-null value (they might contain null in addition).
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
.
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
.
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 marker trait for types that apply only to term symbols or that represent higher-kinded types.
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
Main class representing types.
The principal subclasses and sub-objects are as follows:
Main class representing types.
The principal subclasses and sub-objects are as follows:
Type -+- ProxyType --+- NamedType ----+--- TypeRef
| | \
| +- SingletonType-+-+- TermRef
| | |
| | +--- ThisType
| | +--- SuperType
| | +--- ConstantType
| | +--- TermParamRef
| | +----RecThis
| | +--- SkolemType
| +- TypeParamRef
| +- RefinedOrRecType -+-- RefinedType
| | -+-- RecType
| +- HKApply
| +- TypeBounds
| +- ExprType
| +- AnnotatedType
| +- TypeVar
| +- HKTypeLambda
|
+- GroundType -+- AndType
+- OrType
+- MethodOrPoly ---+-- PolyType
+-- 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
Type bounds >: lo <: hi
A marker trait for type proxies.
Each implementation is expected to redefine the underlying
method.
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
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. Every type variable is referred to by exactly one inferred type parame...
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 not proxies.
Instances of this class are uncached and are 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 that are higher-kinded
A marker trait for types that can be types of values or prototypes of value types
A marker trait for types that can be types of values or prototypes of value types
Wildcard type, possibly with bounds
Wildcard type, possibly with bounds
A filter for names of deferred term definitions of a given 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
A filter for names of abstract types of a given type
A filter for names of abstract types of a given type
Assert current phase does not have erasure semantics
Assert current phase does not have erasure semantics