TypeReprMethods
Extension methods of TypeRepr
Extension methods of TypeRepr
Extensions
Extensions
Is self
type the same as that
type?
This is the case iff self <:< that
and that <:< self
.
Is self
type the same as that
type?
This is the case iff self <:< that
and that <:< self
.
The current type applied to given type arguments: this[targ]
The current type applied to given type arguments: this[targ]
The current type applied to given type arguments: this[targ0, ..., targN]
The current type applied to given type arguments: this[targ0, ..., targN]
Convert this TypeRepr
to an Type[?]
Convert this TypeRepr
to an Type[?]
Usage:
typeRepr.asType match
case '[$t] =>
'{ val x: t = ... }
The base classes of this type with the class itself as first element.
The base classes of this type with the class itself as first element.
The least type instance of given class which is a super-type of this type.
The least type instance of given class which is a super-type of this type. Example:
class D[T]
class C extends p.D[Int]
ThisType(C).baseType(D) = p.D[Int]
Follow aliases, annotated types until type is no longer alias type, annotated type.
Follow aliases, annotated types until type is no longer alias type, annotated type.
Is this type an instance of a non-bottom subclass of the given class cls
?
Is this type an instance of a non-bottom subclass of the given class cls
?
Is this type an context function type?
Is this type an context function type?
- See also
isFunctionType
Is this type a dependent function type?
Is this type a dependent function type?
- See also
isFunctionType
Is this type a function type?
Is this type a function type?
- Returns
true if the dealiased type of
self
without refinement isFunctionN[T1, T2, ..., Tn]
- Note
The function
returns true for
given Int => Int
anderased Int => Int
returns false for
List[Int]
, despite thatList[Int] <:< Int => Int
.
A simplified version of this type which is equivalent wrt =:= to this type.
A simplified version of this type which is equivalent wrt =:= to this type. Reduces typerefs, applied match types, and and or types.
Widen from singleton type to its underlying non-singleton
base type by applying one or more underlying
dereferences,
Also go from => T to T.
Widen from singleton type to its underlying non-singleton
base type by applying one or more underlying
dereferences,
Also go from => T to T.
Identity for all other types. Example:
class Outer { class C ; val x: C }
def o: Outer