MatchType

tastyquery.Types$.MatchType
final class MatchType(val bound: Type, val scrutinee: Type, val cases: List[MatchTypeCase | TypeLambda]) extends TypeProxy with ValueType

selector match { cases }

Attributes

Graph
Supertypes
trait ValueType
trait TermType
class TypeProxy
class Type
class Prefix
class Object
trait Matchable
class Any

Members list

Concise view

Type members

Inherited types

Attributes

Inherited from:
Type

Value members

Concrete methods

override def toString(): String

Returns a string representation of the object.

Returns a string representation of the object.

The default representation is platform dependent.

Attributes

Returns:

a string representation of the object.

Definition Classes
Any
def underlying(using Context): Type

The type to which this proxy forwards operations.

The type to which this proxy forwards operations.

Attributes

Inherited methods

final def &(that: Type)(using Context): Type

Attributes

Inherited from:
Type
final def appliedTo(tpe: Type)(using Context): Type

Attributes

Inherited from:
Type
final def appliedTo(args: List[Type])(using Context): Type

The type representing

The type representing

T[U1, ..., Un]

where

Attributes

args

= U1,...,Un

this

= T

Inherited from:
Type
final def asSeenFrom(pre: Prefix, cls: Symbol)(using Context): Type

Attributes

Inherited from:
Type
final def baseType(base: ClassSymbol)(using Context): Option[Type]

The basetype of this type with given class symbol.

The basetype of this type with given class symbol.

Returns NoType if this type does not have base in any of its base types.

Attributes

Inherited from:
Type
final def dealias(using Context): Type

Attributes

Inherited from:
Type
final def isExactlyNothing(using Context): Boolean

Is this type exactly Nothing (no vars, aliases, refinements etc allowed)?

Is this type exactly Nothing (no vars, aliases, refinements etc allowed)?

Attributes

Inherited from:
Type
final def isOfClass(sym: Symbol)(using Context): Boolean

Attributes

Inherited from:
Type
final def isRef(sym: Symbol)(using Context): Boolean

Attributes

Inherited from:
Type
final def isSameType(that: Type)(using Context): Boolean

Attributes

Inherited from:
Type
final def isSubtype(that: Type)(using Context): Boolean

Attributes

Inherited from:
Type
final def matches(that: Type)(using Context): Boolean

Is this type close enough to that type so that members with the two types would override each other?

Is this type close enough to that type so that members with the two types would override each other?

This means:

  • Either both types are polytypes with the same number of type parameters and their result types match after renaming corresponding type parameters
  • Or both types are method types with =:=-equivalent(*) parameter types and matching result types after renaming corresponding parameter types if the method types are dependent.
  • Or both types are =:=-equivalent
  • Or neither type takes term or type parameters.

(*) when matching with a Java method, we also regard Any and Object as equivalent parameter types. (TODO)

This function will always use unsafe-nulls semamtics to check the types. This is because we are using a relaxed rule (ignoring Null types) to check overriding Java methods.

Attributes

Inherited from:
Type
final def matchesLoosely(that: Type)(using Context): Boolean

This is the same as matches except that it also matches => T with T and vice versa.

This is the same as matches except that it also matches => T with T and vice versa.

Attributes

Inherited from:
Type
final def member(name: Name)(using Context): Symbol

The member with the given name.

The member with the given name.

Attributes

Inherited from:
Type
final def memberType(member: TermSymbol)(using Context): Type

Attributes

Inherited from:
Prefix

Attributes

Inherited from:
Prefix

Attributes

Inherited from:
Prefix
final def normalizedPrefix(using Context): Option[Prefix]

The normalized prefix of this type is:

The normalized prefix of this type is:

  • For a type alias, the normalized prefix of its alias.
  • For all other named type and class infos: the prefix.
  • Inherited by all other type proxies.
  • None for all other types.

Attributes

Inherited from:
Type
final def select(name: TypeName)(using Context): TypeRef

Attributes

Inherited from:
Prefix
final def select(name: TermName)(using Context): TermRef

Attributes

Inherited from:
Prefix
final def select(name: Name)(using Context): NamedType

Attributes

Inherited from:
Prefix
final def select(sym: TermOrTypeSymbol)(using Context): NamedType

Attributes

Inherited from:
Prefix
def superType(using Context): Type

The closest supertype of this type.

The closest supertype of this type.

This is the same as underlying, except that

  • instead of a TypeBounds type it returns its upper bound, and
  • for applied types it returns the upper bound of the constructor re-applied to the arguments.

Attributes

Inherited from:
TypeProxy

Same as superType, except for two differences:

Same as superType, except for two differences:

  • opaque types are treated as transparent aliases
  • applied type are matchtype-reduced if possible

Note: the reason to reduce match type aliases here and not in superType is that superType is context-independent and cached, whereas matchtype reduction depends on context and should not be cached (at least not without the very specific cache invalidation condition for matchtypes).

Attributes

Inherited from:
TypeProxy
final def widen(using Context): Type

Widen singleton types, ExprTypes, AnnotatedTypes and RefinedTypes.

Widen singleton types, ExprTypes, AnnotatedTypes and RefinedTypes.

Attributes

Inherited from:
Type
final def widenExpr: Type

Widen from ExprType type to its result type.

Widen from ExprType type to its result type.

For all other types, return this.

Attributes

Inherited from:
Type
final def |(that: Type)(using Context): Type

Attributes

Inherited from:
Type

Concrete fields

val bound: Type