Dotty Documentation

0.2.0-bin-SNAPSHOT

final class TreeTypeMap
extends TreeMap

A map that applies three functions and a substitution together to a tree and makes sure they are coordinated so that the result is well-typed. The functions are

[-] Constructors

TreeTypeMap ( typeMap: Type => Type , treeMap: Tree => Tree , oldOwners: List [ Symbol ] , newOwners: List [ Symbol ] , substFrom: List [ Symbol ] , substTo: List [ Symbol ] )
TreeTypeMap ( implicit ctx: Context )

[-] Members

[+] private implicit val ctx : Context
[+] private val mapOwnerThis : TypeMap

Replace occurrences of This(oldOwner) in some prefix of a type by the corresponding This(newOwner).

[+] val newOwners : List [ Symbol ]
[+] val oldOwners : List [ Symbol ]
[+] val substFrom : List [ Symbol ]
[+] val substTo : List [ Symbol ]
[+] val treeMap : Tree => Tree
[+] val typeMap : Type => Type
[+] def apply ( tree: ThisTree ) : ThisTree
[+] def apply ( annot: Annotation ) : Annotation
[+] def mapOwner ( sym: Symbol ) : Symbol

If sym is one of oldOwners, replace by corresponding symbol in newOwners

[+] def mapType ( tp: Type ) : Type
[+] override def transform ( tree: Tree ) ( implicit ctx: Context ) : Tree
[+] private def transformDefs ( trees: List [ TT ] ) ( implicit ctx: Context ) : ( TreeTypeMap, List [ TT ] )
[+] override def transformStats ( trees: List [ Tree ] ) ( implicit ctx: Context ) : List [ Tree ]
[+] private def transformVParamss ( vparamss: List [ List [ ValDef ] ] ) : ( TreeTypeMap, List [ List [ ValDef ] ] )
[+] private def updateDecls ( prevStats: List [ Tree ] , newStats: List [ Tree ] ) : Unit
[+] def withMappedSyms ( syms: List [ Symbol ] , mapAlways: Boolean ) : TreeTypeMap

Apply typeMap and ownerMap to given symbols syms and return a treemap that contains the substitution between original and mapped symbols.

[+] def withMappedSyms ( syms: List [ Symbol ] , mapped: List [ Symbol ] ) : TreeTypeMap

The tree map with the substitution between originals syms and mapped symbols mapped. Also goes into mapped classes and substitutes their declarations.

[+] def withSubstitution ( from: List [ Symbol ] , to: List [ Symbol ] ) : TreeTypeMap

The current tree map composed with a substitution [from -> to]