TypeReprMethods

Extension methods of TypeRepr

Extensions

Extensions

extension (self: TypeRepr)
def <:<(that: TypeRepr): Boolean

Is this type a subtype of that type?

def =:=(that: TypeRepr): Boolean

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[targ0, ..., targN]

def asType: Type[_ <: AnyKind]

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

Is this type an instance of a non-bottom subclass of the given class cls?

Is this type an context function type?

See also

isFunctionType

Is this type a dependent function type?

See also

isFunctionType

Is this type an erased function type?

See also

isFunctionType

Is this type a function type?

Returns

true if the dealised type of self without refinement is FunctionN[T1, T2, ..., Tn]

Note

The function

  • returns true for given Int => Int and erased Int => Int

  • returns false for List[Int], despite that List[Int] <:< Int => Int.

def memberType(member: Symbol): TypeRepr
def select(sym: Symbol): TypeRepr

The type sym>, reduced if possible

def show(using Printer[TypeRepr]): String

Shows the type as a String

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. Identity for all other types. Example:

class Outer { class C ; val x: C } def o: Outer .widen = o.C

Widen from ByName type to its result type.

Widen from TermRef to its underlying non-termref base type, while also skipping ByName types.