final object Types

Constructors

Members

trait AndOrType
abstract case class AndType
final object AndType
case class AnnotatedType

An annotated type tpe @ annot

An annotated type tpe @ annot

final object AnnotatedType
[+] abstract class ApproximatingTypeMap

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

trait BindingType

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.

abstract class BoundType
final class CachedAndType
class CachedClassInfo
final class CachedConstantType
final class CachedExprType
abstract class CachedGroundType

Instances of this class are cached and are not proxies.

Instances of this class are cached and are not proxies.

final class CachedHKApply
final class CachedJavaArrayType
final class CachedMethodType
final class CachedOrType
abstract class CachedProxyType

Instances of this class are cached and are proxies.

Instances of this class are cached and are proxies.

class CachedRefinedType
final class CachedSkolemType
final class CachedSuperType
final class CachedTermRef
final class CachedThisType
trait CachedType

A marker trait for cached types

A marker trait for cached types

class CachedTypeAlias
final class CachedTypeRef
final class CachedWildcardType
abstract case class ClassInfo

Roughly: the info of a class during a period.

Roughly: the info of a class during a period.

final object ClassInfo
abstract case class ConstantType

A constant type with single value.

A constant type with single value.

final object ConstantType
class CyclicReference
final object CyclicReference
abstract class DeepTypeMap

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

private final object DepStatus
class ErrorType
class ExistsAccumulator
final object ExistsAccumulator
abstract case class ExprType

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.

final object ExprType
abstract class FlexType

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.

class ForeachAccumulator
abstract case class HKApply

A higher kinded type application C[T_1, ..., T_n]

A higher kinded type application C[T_1, ..., T_n]

final object HKApply
abstract class HKLambda
[+] class HKTypeLambda

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.

final object HKTypeLambda
@sharable final object IdentityTypeMap
final class ImplicitMethodType
final object ImplicitMethodType
case class ImportType

The type of an import clause tree

The type of an import clause tree

final object ImportType

The type of an import clause tree

The type of an import clause tree

abstract case class JavaArrayType

The type of an erased array

The type of an erased array

final object JavaArrayType
final class JavaMethodType
final object JavaMethodType
case class LambdaParam

The parameter of a type lambda

The parameter of a type lambda

final object LambdaParam

The parameter of a type lambda

The parameter of a type lambda

[+] trait LambdaType

The lambda type square:

LambdaType | TermLambda | TypeLambda -------------+-------------------+------------------ HKLambda | HKTermLambd...

The lambda type square:

LambdaType | TermLambda | TypeLambda -------------+-------------------+------------------ HKLambda | HKTermLambda | HKTypeLambda MethodOrPoly | MethodType | PolyType

abstract class LambdaTypeCompanion
case class LazyRef
final object LazyRef
class MalformedType
class MergeError
abstract class MethodOrPoly
final object MethodTpe

A ternary extractor for MethodType

A ternary extractor for MethodType

abstract case class MethodType
final object MethodType
abstract class MethodTypeCompanion
trait MethodicType

A trait that mixes in functionality for signature caching

A trait that mixes in functionality for signature caching

class MissingType
[+] abstract class NameFilter

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)

final object NamedPartsAccumulator
abstract class NamedType

A NamedType of the form Prefix # name

A NamedType of the form Prefix # name

final object NamedType
trait NarrowCached

Implementations of this trait cache the results of narrow.

Implementations of this trait cache the results of narrow.

@sharable final object NoPrefix

Missing prefix

Missing prefix

@sharable final object NoType

Sentinel for "missing type"

Sentinel for "missing type"

abstract case class OrType
final object OrType
abstract class ParamRef
class PolyType

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.

final object PolyType
trait ProtoType

A trait for proto-types, used as expected types in typer

A trait for proto-types, used as expected types in typer

class RealTypeBounds
case class RecThis

a self-reference to an enclosing recursive type.

a self-reference to an enclosing recursive type.

final object RecThis

a self-reference to an enclosing recursive type.

a self-reference to an enclosing recursive type.

class RecType
final object RecType
abstract class RefinedOrRecType
abstract case class RefinedType

A refined type parent { refinement }

A refined type parent { refinement }

final object RefinedType
[+] final object SAMType

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.

trait SingletonType

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).

abstract case class SkolemType

A skolem type reference with underlying type binder.

A skolem type reference with underlying type binder.

final object SkolemType
abstract case class SuperType

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.

final object SuperType
final class TempClassInfo
trait TermLambda
abstract class TermLambdaCompanion
case class TermParamRef
final object TermParamRef
abstract case class TermRef
final object TermRef
final class TermRefWithSignature
trait TermType

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.

abstract case class ThisType

The type cls.this

The type cls.this

final object ThisType
final object TryDynamicCallType
[+] abstract class Type

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.

abstract class TypeAccumulator
abstract class TypeAlias
final object TypeAlias
abstract case class TypeBounds

Type bounds >: lo <: hi

Type bounds >: lo <: hi

final object TypeBounds
class TypeError
trait TypeLambda
abstract class TypeLambdaCompanion
abstract class TypeMap
case class TypeParamRef
final object TypeParamRef
abstract class TypeProxy

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.

abstract case class TypeRef
final object TypeRef
abstract class TypeTraverser
trait TypeType

A marker trait for types that apply only to type symbols

A marker trait for types that apply only to type symbols

[+] final class TypeVar

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.

abstract class UncachedGroundType

Instances of this class are uncached and are not proxies.

Instances of this class are uncached and are not proxies.

abstract class UncachedProxyType

Instances of this class are uncached and are proxies.

Instances of this class are uncached and are proxies.

final object UnspecifiedErrorType
trait ValueType

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

trait ValueTypeOrProto

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

abstract case class WildcardType

Wildcard type, possibly with bounds

Wildcard type, possibly with bounds

@sharable final object WildcardType
trait WithFixedSym
final object abstractTermNameFilter

A filter for names of deferred term definitions of a given type

A filter for names of deferred term definitions of a given type

final object abstractTypeNameFilter

A filter for names of abstract types of a given type

A filter for names of abstract types of a given type

final object fieldFilter
final object implicitFilter
final object nonClassTypeNameFilter

A filter for names of abstract types of a given type

A filter for names of abstract types of a given type

final object takeAllFilter
final object typeNameFilter
@sharable var debugTrace : Boolean
@sharable private var nextId : Int
val watchList : List [ TypeName ]
private def assertUnerased ( ) ( implicit ctx: Context ) : Unit

Assert current phase does not have erasure semantics

Assert current phase does not have erasure semantics

@sharable def debugTrace_= ( x$1: Boolean ) : Unit
implicit def decorateTypeApplications ( tpe: Type ) : TypeApplications
implicit def eqType : Eq [ Type, Type ]
def isWatched ( tp: Type ) : Boolean
@sharable private def nextId_= ( x$1: Int ) : Unit
private def otherReason ( pre: Type ) ( implicit ctx: Context ) : String