A type representing the semi-erasure of a derived value class, see SIP-15 where it's called "C$unboxed" for a class C.
A type representing the semi-erasure of a derived value class, see SIP-15 where it's called "C$unboxed" for a class C. Derived value classes are erased to this type during Erasure (when semiEraseVCs = true) and subsequently erased to their underlying type during ElimErasedValueType. This type is outside the normal Scala class hierarchy: it is a subtype of no other type and is a supertype only of Nothing. This is because this type is only useful for type adaptation (see Erasure.Boxing#adaptToType).
A TypeRef referring to the value class symbol
The erased type of the single field of the value class
The erased greatest lower bound picks one of the two argument types.
The erased greatest lower bound picks one of the two argument types. It prefers, in this order:
The erased least upper bound is computed as follows
The erased least upper bound is computed as follows
tp1
there are no minimal common superclasses or traits that
come after S.
(the reason to pick last is that we prefer classes over traits that way).
The erasure of a top-level reference.
The erasure of a top-level reference. Differs from normal erasure in that TermRefs are kept instead of being widened away.
The standard erasure of a Scala type.
The standard erasure of a Scala type. Value classes are erased as normal classes.
The type to erase.
Does the (possibly generic) type tp
have the same erasure in all its
possible instantiations?
A predicate that tests whether a type is a legal erased type.
A predicate that tests whether a type is a legal erased type. Only asInstanceOf and isInstanceOf may have types that do not satisfy the predicate. ErasedValueType is considered an erased type because it is valid after Erasure (it is eliminated by ElimErasedValueType).
Is tp
an abstract type or polymorphic type parameter that has Any
, AnyVal
,
or a universal trait as upper bound and that is not Java defined? Arrays of such types are
erased to Object
instead of Object[]
.
The symbol's erased info.
The symbol's erased info. This is the type's erasure, except for the following symbols:
The value class erasure of a Scala type, where value classes are semi-erased to ErasedValueType (they will be fully erased in ElimErasedValueType).
The value class erasure of a Scala type, where value classes are semi-erased to ErasedValueType (they will be fully erased in ElimErasedValueType).
The type to erase.
Erased types are:
ErasedValueType TypeRef(prefix is ignored, denot is ClassDenotation) TermRef(prefix is ignored, denot is SymDenotation) JavaArrayType AnnotatedType MethodType ThisType SuperType ClassInfo (NoPrefix, ...) NoType NoPrefix WildcardType ErrorType
only for isInstanceOf, asInstanceOf: PolyType, PolyParam, TypeBounds