Is this type a subtype of that type?
Is this type equivalent to that type?
Return the annotations on this type.
This type as seen from prefix pre' and class
clazz'.
This type as seen from prefix pre' and class
clazz'. This means:
Replace all thistypes of clazz' or one of its subclasses
by
pre' and instantiate all parameters by arguments of pre'.
Proceed analogously for thistypes referring to outer classes.
Example:
class D[T] { def m: T }
class C extends p.D[Int]
T.asSeenFrom(ThisType(C), D) (where D is owner of m)
= Int
Make sure this type is correct as the info of given owner; clone it if not.
The list of all baseclasses of this type (including its own typeSymbol) in reverse linearization order, starting with the class itself and ending in class Any.
The least type instance of given class which is a supertype of this type.
The least type instance of given class which is a supertype of this type. Example: class D[T] class C extends p.D[Int] ThisType(C).baseType(D) = p.D[Int]
the class symbol
the index of given class symbol in the BaseTypeSeq of this type, or -1 if no base type with given class symbol exists.
The shortest sorted upwards closed array of types that contains this type as first element.
The shortest sorted upwards closed array of types that contains this type as first element.
A list or array of types ts is upwards closed if
for all t in ts: for all typerefs p.s[args] such that t <: p.s[args] there exists a typeref p'.s[args'] in ts such that t <: p'.s['args] <: p.s[args],
and
for all singleton types p.s such that t <: p.s there exists a singleton type p'.s in ts such that t <: p'.s <: p.s
Sorting is with respect to Symbol.isLess() on type symbols.
The maximum depth (@see maxDepth) of each type in the BaseTypeSeq of this type.
For a (potentially wrapped) poly or existential type, its bound symbols, the empty list for all other types
For a TypeBounds type, itself; for a reference denoting an abstract type, its bounds, for all other types, a TypeBounds type all of whose bounds are this type.
If this is a poly- or methodtype, a copy with cloned type / value parameters
owned by owner'. Identity for all other types.
Does this type contain a reference to this symbol?
Does this type contain a reference to this type
Expands type aliases.
The defined or declared members with name name' in this type;
an OverloadedSymbol if several exist, NoSymbol if none exist.
Alternatives of overloaded symbol appear in the order they are declared.
The defined or declared members with name name' in this type;
an OverloadedSymbol if several exist, NoSymbol if none exist.
Alternatives of overloaded symbol appear in the order they are declared.
For a classtype or refined type, its defined or declared members; inherited by subtypes and typerefs.
For a classtype or refined type, its defined or declared members; inherited by subtypes and typerefs. The empty scope for all other types.
Map a constant type or not-null-type to its underlying base type, identity for all other types.
A list of all deferred symbols of this type (defined or inherited)
The existential skolems and existentially quantified variables which are free in this type
Is there part of this type which satisfies predicate p'?
Returns all parts of this type which satisfy predicate p'
For a curried/nullary method or poly type its non-method result type, the type itself for all other types
Returns optionally first type (in a preorder traversal) which satisfies predicate p',
or None if none exists.
Find member(s) in this type.
Find member(s) in this type. If several members matching criteria are found, they are returned in an OverloadedSymbol
The member's name, where nme.ANYNAME means unspecified'
Returned members do not have these flags
Returned members do have these flags
If set, return only members that are types or stable values
Apply f' to each part of this type
Test for the presence of an annotation
A list of all implicit symbols of this type (defined or inherited)
Replace formal type parameter symbols with actual type arguments.
Replace formal type parameter symbols with actual type arguments.
Amounts to substitution except for higher-kinded types. (See overridden method in TypeRef) -- @M
Does this depend on an enclosing method parameter?
Is this type produced as a repair for an error?
Is this type produced as a repair for an error?
Can this type only be subtyped by bottom types? This is assessed to be the case if the class is final, and all type parameters (if any) are invariant.
A test whether a type contains any unification type variables
Is this type higher-kinded, i.
Is this type higher-kinded, i.e., is it a type constructor @M
Does this type depend immediately on an enclosing method parameter? i.
Does this type depend immediately on an enclosing method parameter? i.e., is it a singleton type whose termSymbol refers to an argument of the symbol's owner (which is a method)
Is this type guaranteed not to have null' as a value?
Does this type denote a stable reference (i.
Does this type denote a stable reference (i.e. singleton type)?
Is this type a structural refinement type (it 'refines' members that have not been inherited)
Types for which asSeenFrom always is the identity, no matter what prefix or owner.
Is this type dangerous (i.
Is this type dangerous (i.e. it might contain conflicting type information when empty, so that it can be constructed so that type unsoundness results.) A dangerous type has an underlying type of the form T_1 with T_n { decls }, where one of the T_i (i > 1) is an abstract type.
True for WildcardType or BoundedWildcardType
The kind of this type; used for debugging
If this is a symbol loader type, load and assign a new type to
sym'.
Same as matches, except that non-method types are always assumed to match.
Apply f' to each part of this type; children get mapped before their parents
Is this type close enough to that type so that members with the two type would override each other? This means:
Is this type close enough to that type so that members with the two type would override each other? This means:
Is this type a subtype of that type in a pattern context? Any type arguments on the right hand side are replaced with fresh existentials, except for Arrays.
Is this type a subtype of that type in a pattern context? Any type arguments on the right hand side are replaced with fresh existentials, except for Arrays.
See bug1434.scala for an example of code which would fail if only a <:< test were applied.
The member with given name, an OverloadedSymbol if several exist, NoSymbol if none exist
The info of sym', seen as a member of this type.
Example:
class D[T] { def m: T }
class C extends p.D[Int]
ThisType(C).memberType(m) = Int
The type of sym', seen as a member of this type.
A list of all members of this type (defined or inherited) Members appear in linearization order of their owners.
A list of all members of this type (defined or inherited) Members appear in linearization order of their owners. Members with the same owner appear in reverse order of their declarations.
Map to a singleton type which is a subtype of this type.
Map to a singleton type which is a subtype of this type. The fallback implemented here gives T.narrow = (T {}).this.type Overridden where we know more about where types come from.
todo: change to singleton type of an existentially defined variable
of the right type instead of making this a this
of a refined type.
The non-local member with given name, an OverloadedSymbol if several exist, NoSymbol if none exist
The non-private defined or declared members with name name' in this type;
an OverloadedSymbol if several exist, NoSymbol if none exist.
Alternatives of overloaded symbol appear in the order they are declared.
The non-private member with given name, an OverloadedSymbol if several exist, NoSymbol if none exist.
The non-private member with given name, an OverloadedSymbol if several exist, NoSymbol if none exist. Bridges are excluded from the result
The non-private member with given name, admitting members with given flags admit
an OverloadedSymbol if several exist, NoSymbol if none exist
A list of all non-private members of this type (defined or inherited)
A list of all non-private members of this type (defined or inherited),
admitting members with given flags admit
Reduce to beta eta-long normal form.
Reduce to beta eta-long normal form. Expands type aliases and converts higher-kinded TypeRefs to PolyTypes. Functions on types are also implemented as PolyTypes.
Example: (in the below, <List> is the type constructor of List) TypeRef(pre, <List>, List()) is replaced by PolyType(X, TypeRef(pre, <List>, List(X)))
Mixin a NotNull trait unless type already has one .
Mixin a NotNull trait unless type already has one ...if the option is given, since it is causing typing bugs.
For a method type, the number of its value parameter sections, 0 for all other types
For a method or poly type, the types of its first value parameter section, the empty list for all other types
For a method or poly type, its first value parameter section, the empty list for all other types
For a method or poly type, a list of its value parameter sections, the empty list for all other types
For a class or intersection type, its parents.
For a class or intersection type, its parents. For a TypeBounds type, the parents of its hi bound. inherited by typerefs, singleton types, and refinement types, The empty list for all other types
For a typeref or single-type, the prefix of the normalized type (@see normalize).
For a typeref or single-type, the prefix of the normalized type (@see normalize). NoType for all other types.
A chain of all typeref or singletype prefixes of this type, longest first.
A chain of all typeref or singletype prefixes of this type, longest first. (Only used from safeToString.)
The string representation of this type used as a prefix
If this is a TypeRef clazz
[T
], return the argument T
otherwise return this type
Only used for dependent method types.
For a (nullary) method or poly type, its direct result type, the type itself for all other types.
The selfsym of an annotated type, or NoSymbol of anything else
A simple version of skolemizeExistential for situations where owner or unpack location do not matter (typically used in subtype tests)
If this type is an existential, turn all existentially bound variables to type skolems.
If this type is an existential, turn all existentially bound variables to type skolems.
The owner of the created type skolems
The tree whose type was an existential for which the skolem was created.
Does this type implement symbol sym' with same or stronger type?
Remove any annotations from this type and from any types embedded in this type.
Substitute types to' for occurrences of references to
symbols
from' in this type.
Substitute symbols to' for occurrences of symbols
from' in this type.
Substitute symbols to' for occurrences of symbols
from' in this type.
!!! NOTE !!!: If you need to do a substThis and a substSym, the substThis has to come
first, as otherwise symbols will immediately get rebound in typeRef to the old
symbol.
Substitute all occurrences of ThisType(from)' in this type
by
to'.
Substitute all occurrences of ThisType(from)' in this type
by
to'.
!!! NOTE !!!: If you need to do a substThis and a substSym, the substThis has to come
first, as otherwise symbols will immediately get rebound in typeRef to the old
symbol.
The term symbol associated with the type Note that the symbol of the normalized type is returned (@see normalize)
The term symbol *directly* associated with the type
The string representation of this type, with singletypes explained
For a typeref, its arguments.
For a typeref, its arguments. The empty list for all other types
This type, without its type arguments @M
The type of this' of a class type or reference type
For a (potentially wrapped) poly type, its type parameters, the empty list for all other types
The type symbol associated with the type Note that the symbol of the normalized type is returned (@see normalize)
The type symbol associated with the type Note that the symbol of the normalized type is returned (@see normalize)
The type symbol *directly* associated with the type
The base type underlying a type proxy, identity on all other types
Is this type a weak subtype of that type? True also for numeric types, i.
Is this type a weak subtype of that type? True also for numeric types, i.e. Int weak_<:< Long.
Widen from singleton type to its underlying non-singleton
base type by applying one or more underlying' dereferences,
identity for all other types.
class Outer { class C ; val x: C }
val o: Outer
<o.x.type>.widen = o.C
Add an annotation to this type
Add a number of annotations to this type
Set the self symbol of an annotated type, or do nothing otherwise.
Remove any annotations from this type
The base class for all types