W3cubDocs

/Scala 2.12 Reflection

Trait scala.reflect.api.Types.ClassInfoTypeApi

trait ClassInfoTypeApi extends Universe.TypeApi

The API that all class info types support. The main source of information about types is the scala.reflect.api.Types page.

Self Type
Universe.ClassInfoType
Source
Types.scala
Linear Supertypes
Known Subclasses

Abstract Value Members

abstract def <:<(that: Universe.Type): Boolean

Does this type conform to given type argument that?

Definition Classes
TypeApi

abstract def =:=(that: Universe.Type): Boolean

Is this type equivalent to given type argument that?

Definition Classes
TypeApi

abstract def asSeenFrom(pre: Universe.Type, clazz: Universe.Symbol): Universe.Type

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:

scala> import scala.reflect.runtime.universe._
import scala.reflect.runtime.universe._

scala> class D[T] { def m: T = ??? }
defined class D

scala> class C extends D[Int]
defined class C

scala> val D = typeOf[D[_]].typeSymbol.asClass
D: reflect.runtime.universe.ClassSymbol = class D

scala> val C = typeOf[C].typeSymbol.asClass
C: reflect.runtime.universe.ClassSymbol = class C

scala> val T = D.typeParams(0).asType.toType
T: reflect.runtime.universe.Type = T

scala> T.asSeenFrom(ThisType(C), D)
res0: reflect.runtime.universe.Type = scala.Int
Definition Classes
TypeApi

abstract def baseClasses: List[Universe.Symbol]

The list of all base classes of this type (including its own typeSymbol) in linearization order, starting with the class itself and ending in class Any.

Definition Classes
TypeApi

abstract def baseType(clazz: Universe.Symbol): Universe.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]
Definition Classes
TypeApi

abstract def companion: Universe.Type

Type signature of the companion of the underlying class symbol. NoType if the underlying symbol is not a class symbol, or if it doesn't have a companion.

Definition Classes
TypeApi

abstract def contains(sym: Universe.Symbol): Boolean

Does this type contain a reference to given symbol?

Definition Classes
TypeApi

abstract def dealias: Universe.Type

Expands type aliases arising from type members. Note that type aliases can hide beneath singleton types and singleton types can hide inside type aliases. Moreover, aliases might lurk in the upper bounds of abstract types. Therefore careful thought has to be applied to identify and carry out unwrapping logic specific to your use case.

Definition Classes
TypeApi

abstract def decl(name: Universe.Name): Universe.Symbol

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.

Definition Classes
TypeApi

abstract def decls: Universe.MemberScope

The scope that holds the definitions comprising the class type.

Definition Classes
ClassInfoTypeApiTypeApi

abstract def erasure: Universe.Type

The erased type corresponding to this type after all transformations from Scala to Java have been performed.

Definition Classes
TypeApi

abstract def etaExpand: Universe.Type

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

Definition Classes
TypeApi

abstract def exists(p: (Universe.Type) ⇒ Boolean): Boolean

Is there part of this type which satisfies predicate p?

Definition Classes
TypeApi

abstract def finalResultType: Universe.Type

For a curried/nullary method or poly type its non-method result type, the type itself for all other types.

scala> class C {
     | def foo[T](x: T)(y: T) = ???
     | def bar: Int = ???
     | }
defined class C

scala> typeOf[C].member(TermName("foo")).asMethod
res0: reflect.runtime.universe.MethodSymbol = method foo

scala> res0.info // PolyType wrapping a MethodType
res1: reflect.runtime.universe.Type = [T](x: T)(y: T)scala.Nothing

scala> res1.resultType // MethodType wrapping a MethodType
res2: reflect.runtime.universe.Type = (x: T)(y: T)scala.Nothing

scala> res1.resultType.resultType // vanilla MethodType
res3: reflect.runtime.universe.Type = (y: T)scala.Nothing

scala> res1.resultType.resultType.resultType
res4: reflect.runtime.universe.Type = scala.Nothing

scala> res1.finalResultType
res5: reflect.runtime.universe.Type = scala.Nothing

scala> typeOf[C].member(TermName("bar")).asMethod
res6: reflect.runtime.universe.MethodSymbol = method bar

scala> res6.info
res7: reflect.runtime.universe.Type = => scala.Int

scala> res6.info.resultType
res8: reflect.runtime.universe.Type = scala.Int

scala> res6.info.finalResultType
res9: reflect.runtime.universe.Type = scala.Int
Definition Classes
TypeApi
See also

resultType

abstract def find(p: (Universe.Type) ⇒ Boolean): Option[Universe.Type]

Returns optionally first type (in a preorder traversal) which satisfies predicate p, or None if none exists.

Definition Classes
TypeApi

abstract def foreach(f: (Universe.Type) ⇒ Unit): Unit

Apply f to each part of this type, for side effects only

Definition Classes
TypeApi

abstract def map(f: (Universe.Type) ⇒ Universe.Type): Universe.Type

Apply f to each part of this type, returning a new type. children get mapped before their parents

Definition Classes
TypeApi

abstract def member(name: Universe.Name): Universe.Symbol

The member with given name, either directly declared or inherited, an OverloadedSymbol if several exist, NoSymbol if none exist.

Definition Classes
TypeApi

abstract def members: Universe.MemberScope

A Scope containing all members of this type (directly declared or inherited). Unlike declarations this method also returns inherited members.

Members in the returned scope might appear in arbitrary order. Use declarations.sorted to get an ordered list of members.

Definition Classes
TypeApi

abstract def orElse(alt: ⇒ Universe.Type): Universe.Type

Provides an alternate if type is NoType.

Definition Classes
TypeApi

abstract def paramLists: List[List[Universe.Symbol]]

For a method or poly type, a list of its value parameter sections, the empty list of lists for all other types.

Definition Classes
TypeApi

abstract def parents: List[Universe.Type]

abstract def resultType: Universe.Type

For a (nullary) method or poly type, its direct result type (can be a MethodType if the method has multiple argument lists), the type itself for all other types.

scala> class C { def foo[T](x: T)(y: T) = ??? }
defined class C

scala> typeOf[C].member(TermName("foo")).asMethod
res0: reflect.runtime.universe.MethodSymbol = method foo

scala> res0.info // PolyType wrapping a MethodType
res1: reflect.runtime.universe.Type = [T](x: T)(y: T)scala.Nothing

scala> res1.resultType // MethodType wrapping a MethodType
res2: reflect.runtime.universe.Type = (x: T)(y: T)scala.Nothing

scala> res1.resultType.resultType // vanilla MethodType
res3: reflect.runtime.universe.Type = (y: T)scala.Nothing

scala> res1.resultType.resultType.resultType
res4: reflect.runtime.universe.Type = scala.Nothing

scala> res1.finalResultType
res5: reflect.runtime.universe.Type = scala.Nothing
Definition Classes
TypeApi
See also

finalResultType

abstract def substituteSymbols(from: List[Universe.Symbol], to: List[Universe.Symbol]): Universe.Type

Substitute symbols in to for corresponding occurrences of references to symbols from in this type.

Definition Classes
TypeApi

abstract def substituteTypes(from: List[Universe.Symbol], to: List[Universe.Type]): Universe.Type

Substitute types in to for corresponding occurrences of references to symbols from in this type.

Definition Classes
TypeApi

abstract def takesTypeArgs: Boolean

Is this type a type constructor that is missing its type arguments?

Definition Classes
TypeApi

abstract def termSymbol: Universe.Symbol

The term symbol associated with the type, or NoSymbol for types that do not refer to a term symbol.

Definition Classes
TypeApi

abstract def typeArgs: List[Universe.Type]

List of type arguments ingrained in this type reference. Depending on your use case you might or might not want to call dealias first.

scala> type T = List[Int]
defined type alias T

scala> typeOf[T].typeArgs
res0: List[reflect.runtime.universe.Type] = List()

scala> typeOf[T].dealias.typeArgs
res1: List[reflect.runtime.universe.Type] = List(scala.Int)
Definition Classes
TypeApi

abstract def typeConstructor: Universe.Type

Returns the corresponding type constructor (e.g. List for List[T] or List[String])

Definition Classes
TypeApi

abstract def typeParams: List[Universe.Symbol]

For a poly type, its type parameters, the empty list for all other types.

Definition Classes
TypeApi

abstract def typeSymbol: Universe.Symbol

The symbol underlying the class type.

Definition Classes
ClassInfoTypeApiTypeApi

abstract def weak_<:<(that: Universe.Type): Boolean

Does this type weakly conform to given type argument that, i.e., either conforms in terms of <:< or both are primitive number types that conform according to Section "Weak Conformance" in the spec. For example, Int weak_<:< Long.

Definition Classes
TypeApi

abstract def widen: Universe.Type

If this is a singleton type, widen it to its nearest underlying non-singleton base type by applying one or more underlying dereferences. If this is not a singleton type, returns this type itself.

Example:

class Outer { class C ; val x: C } val o: Outer <o.x.type>.widen = o.C

Note that type aliases can hide beneath singleton types and singleton types can hide inside type aliases. Moreover, aliases might lurk in the upper bounds of abstract types. Therefore careful thought has to be applied to identify and carry out unwrapping logic specific to your use case.

Definition Classes
TypeApi

abstract def declaration(name: Universe.Name): Universe.Symbol

Definition Classes
TypeApi
Annotations
@deprecated
Deprecated

(Since version 2.11.0) use decl instead

See also

decl

abstract def declarations: Universe.MemberScope

Definition Classes
TypeApi
Annotations
@deprecated
Deprecated

(Since version 2.11.0) use decls instead

See also

decls

abstract def normalize: Universe.Type

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

Definition Classes
TypeApi
Annotations
@deprecated
Deprecated

(Since version 2.11.0) use dealias or etaExpand instead

abstract def paramss: List[List[Universe.Symbol]]

Definition Classes
TypeApi
Annotations
@deprecated
Deprecated

(Since version 2.11.0) use paramLists instead

See also

paramLists

Concrete Value Members

final def !=(arg0: Any): Boolean

Definition Classes
AnyRef → Any

final def ##(): Int

Definition Classes
AnyRef → Any

def +(other: String): String

Implicit
This member is added by an implicit conversion from Universe.ClassInfoTypeApi to any2stringadd[Universe.ClassInfoTypeApi] performed by method any2stringadd in scala.Predef.
Definition Classes
any2stringadd

def ->[B](y: B): (Universe.ClassInfoTypeApi, B)

Implicit
This member is added by an implicit conversion from Universe.ClassInfoTypeApi to ArrowAssoc[Universe.ClassInfoTypeApi] performed by method ArrowAssoc in scala.Predef.
Definition Classes
ArrowAssoc
Annotations
@inline()

final def ==(arg0: Any): Boolean

Definition Classes
AnyRef → Any

final def asInstanceOf[T0]: T0

Definition Classes
Any

def clone(): AnyRef

Attributes
protected[lang]
Definition Classes
AnyRef
Annotations
@throws( ... ) @native()

def ensuring(cond: (Universe.ClassInfoTypeApi) ⇒ Boolean, msg: ⇒ Any): Universe.ClassInfoTypeApi

Implicit
This member is added by an implicit conversion from Universe.ClassInfoTypeApi to Ensuring[Universe.ClassInfoTypeApi] performed by method Ensuring in scala.Predef.
Definition Classes
Ensuring

def ensuring(cond: (Universe.ClassInfoTypeApi) ⇒ Boolean): Universe.ClassInfoTypeApi

Implicit
This member is added by an implicit conversion from Universe.ClassInfoTypeApi to Ensuring[Universe.ClassInfoTypeApi] performed by method Ensuring in scala.Predef.
Definition Classes
Ensuring

def ensuring(cond: Boolean, msg: ⇒ Any): Universe.ClassInfoTypeApi

Implicit
This member is added by an implicit conversion from Universe.ClassInfoTypeApi to Ensuring[Universe.ClassInfoTypeApi] performed by method Ensuring in scala.Predef.
Definition Classes
Ensuring

def ensuring(cond: Boolean): Universe.ClassInfoTypeApi

Implicit
This member is added by an implicit conversion from Universe.ClassInfoTypeApi to Ensuring[Universe.ClassInfoTypeApi] performed by method Ensuring in scala.Predef.
Definition Classes
Ensuring

final def eq(arg0: AnyRef): Boolean

Definition Classes
AnyRef

def equals(arg0: Any): Boolean

Definition Classes
AnyRef → Any

def finalize(): Unit

Attributes
protected[lang]
Definition Classes
AnyRef
Annotations
@throws( classOf[java.lang.Throwable] )

def formatted(fmtstr: String): String

Implicit
This member is added by an implicit conversion from Universe.ClassInfoTypeApi to StringFormat[Universe.ClassInfoTypeApi] performed by method StringFormat in scala.Predef.
Definition Classes
StringFormat
Annotations
@inline()

final def getClass(): Class[_]

Definition Classes
AnyRef → Any
Annotations
@native()

def hashCode(): Int

Definition Classes
AnyRef → Any
Annotations
@native()

final def isInstanceOf[T0]: Boolean

Definition Classes
Any

final def ne(arg0: AnyRef): Boolean

Definition Classes
AnyRef

final def notify(): Unit

Definition Classes
AnyRef
Annotations
@native()

final def notifyAll(): Unit

Definition Classes
AnyRef
Annotations
@native()

final def synchronized[T0](arg0: ⇒ T0): T0

Definition Classes
AnyRef

def toString(): String

Definition Classes
AnyRef → Any

final def wait(): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )

final def wait(arg0: Long, arg1: Int): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )

final def wait(arg0: Long): Unit

Definition Classes
AnyRef
Annotations
@throws( ... ) @native()

def [B](y: B): (Universe.ClassInfoTypeApi, B)

Implicit
This member is added by an implicit conversion from Universe.ClassInfoTypeApi to ArrowAssoc[Universe.ClassInfoTypeApi] performed by method ArrowAssoc in scala.Predef.
Definition Classes
ArrowAssoc

© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.12.9/scala-reflect/scala/reflect/api/Types$ClassInfoTypeApi.html