trait DestructureType[Node] extends (Global.Type) ⇒ Node
- Alphabetic
- By Inheritance
- DestructureType
- Function1
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- All
Abstract Value Members
- abstract def withLabel(node: Node, label: String): Node
- abstract def withType(node: Node, typeName: String): Node
- abstract def wrapAtom[U](value: U): Node
- abstract def wrapEmpty: Node
- abstract def wrapMono(in: Node, out: Node): Node
- abstract def wrapPoly(in: Node, out: Node): Node
- abstract def wrapProduct(nodes: List[Node]): Node
- abstract def wrapSequence(nodes: List[Node]): Node
Concrete Value Members
-
def
andThen[A](g: (Node) ⇒ A): (Global.Type) ⇒ A
- Definition Classes
- Function1
- Annotations
- @unspecialized()
- def annotatedType(annotations: List[Global.AnnotationInfo], underlying: Global.Type): Node
- def annotation(ann: Global.AnnotationInfo): Node
-
def
apply(tp: Global.Type): Node
- Definition Classes
- DestructureType → Function1
- def apply(label: String, tp: Global.Type): Node
- def atom[U](label: String, value: U): Node
-
def
compose[A](g: (A) ⇒ Global.Type): (A) ⇒ Node
- Definition Classes
- Function1
- Annotations
- @unspecialized()
- def constant(label: String, const: Global.Constant): Node
- def list(nodes: List[Node]): Node
- def monoFunction(params: List[Global.Symbol], restpe: Global.Type): Node
- def node(label: String, node: Node): Node
- def nullaryFunction(restpe: Global.Type): Node
- def parentList(tps: List[Global.Type]): Node
- def polyFunction(tparams: List[Global.Symbol], restpe: Global.Type): Node
- def prefix(pre: Global.Type): Node
- def product(typeName: String, nodes: Node*): Node
- def product(tp: Global.Type, nodes: Node*): Node
- def resultType(restpe: Global.Type): Node
- def scope(decls: Global.Scope): Node
- def symbolType(sym: Global.Symbol): String
-
def
toString(): String
- Definition Classes
- Function1 → AnyRef → Any
- def typeArgs(tps: List[Global.Type]): Node
- def typeBounds(lo0: Global.Type, hi0: Global.Type): Node
- def typeConstraint(constr: Global.TypeConstraint): Node
- def typeParams(tps: List[Global.Symbol]): Node
-
def
typeRef(tp: Global.TypeRef): Node
This imposes additional structure beyond that which is visible in the case class hierarchy.
This imposes additional structure beyond that which is visible in the case class hierarchy. In particular, (too) many different constructs are encoded in TypeRefs; here they are partitioned somewhat before being dispatched.
For example, a typical type parameter is encoded as TypeRef(NoPrefix, sym, Nil) with its upper and lower bounds stored in the info of the symbol. Viewing the TypeRef naively we are treated to both too much information (useless prefix, usually empty args) and too little (bounds hidden behind indirection.) So drop the prefix and promote the bounds.
- def typeRefType(sym: Global.Symbol): String
- def valueParams(params: List[Global.Symbol]): Node
- def wrapSymbolInfo(sym: Global.Symbol): Node
- def wrapTree(tree: Global.Tree): Node
The Scala compiler and reflection APIs.