@@ -776,15 +776,6 @@ object Trees {
776776 def genericEmptyValDef [T >: Untyped ]: ValDef [T ] = theEmptyValDef.asInstanceOf [ValDef [T ]]
777777 def genericEmptyTree [T >: Untyped ]: Thicket [T ] = theEmptyTree.asInstanceOf [Thicket [T ]]
778778
779- /** A tree that can be shared without its position
780- * polluting containing trees. Accumulators and tranformers
781- * memoize results of shared subtrees
782- */
783- case class SharedTree [- T >: Untyped ](shared : Tree [T ]) extends ProxyTree [T ] {
784- type ThisTree [- T >: Untyped ] = SharedTree [T ]
785- def forwardTo : Tree [T ] = shared
786- }
787-
788779 def flatten [T >: Untyped ](trees : List [Tree [T ]]): List [Tree [T ]] = {
789780 var buf : ListBuffer [Tree [T ]] = null
790781 var xs = trees
@@ -871,7 +862,6 @@ object Trees {
871862 type Import = Trees .Import [T ]
872863 type PackageDef = Trees .PackageDef [T ]
873864 type Annotated = Trees .Annotated [T ]
874- type SharedTree = Trees .SharedTree [T ]
875865 type Thicket = Trees .Thicket [T ]
876866
877867 val EmptyTree : Thicket = genericEmptyTree
@@ -1081,18 +1071,13 @@ object Trees {
10811071 case tree : Annotated if (annot eq tree.annot) && (arg eq tree.arg) => tree
10821072 case _ => finalize(tree, untpd.Annotated (annot, arg))
10831073 }
1084- def SharedTree (tree : Tree , shared : Tree ): SharedTree = tree match {
1085- case tree : SharedTree if (shared eq tree.shared) => tree
1086- case _ => finalize(tree, untpd.SharedTree (shared))
1087- }
10881074 def Thicket (tree : Tree , trees : List [Tree ]): Thicket = tree match {
10891075 case tree : Thicket if (trees eq tree.trees) => tree
10901076 case _ => finalize(tree, untpd.Thicket (trees))
10911077 }
10921078 }
10931079
10941080 abstract class TreeTransformer (val cpy : TreeCopier = inst.cpy) {
1095- var sharedMemo : Map [SharedTree , SharedTree ] = Map ()
10961081
10971082 def transform (tree : Tree )(implicit ctx : Context ): Tree = tree match {
10981083 case Ident (name) =>
@@ -1178,14 +1163,6 @@ object Trees {
11781163 case Thicket (trees) =>
11791164 val trees1 = transform(trees)
11801165 if (trees1 eq trees) tree else Thicket (trees1)
1181- case tree @ SharedTree (shared) =>
1182- sharedMemo get tree match {
1183- case Some (tree1) => tree1
1184- case None =>
1185- val tree1 = cpy.SharedTree (tree, transform(shared))
1186- sharedMemo = sharedMemo.updated(tree, tree1)
1187- tree1
1188- }
11891166 }
11901167 def transformStats (trees : List [Tree ])(implicit ctx : Context ): List [Tree ] =
11911168 transform(trees)
@@ -1198,7 +1175,6 @@ object Trees {
11981175 }
11991176
12001177 abstract class TreeAccumulator [X ] extends ((X , Tree ) => X ) {
1201- var sharedMemo : Map [SharedTree , X ] = Map ()
12021178 def apply (x : X , tree : Tree ): X
12031179 def apply (x : X , trees : Traversable [Tree ]): X = (x /: trees)(apply)
12041180 def foldOver (x : X , tree : Tree ): X = tree match {
@@ -1284,14 +1260,6 @@ object Trees {
12841260 this (this (x, annot), arg)
12851261 case Thicket (ts) =>
12861262 this (x, ts)
1287- case tree @ SharedTree (shared) =>
1288- sharedMemo get tree match {
1289- case Some (x1) => x1
1290- case None =>
1291- val x1 = this (x, shared)
1292- sharedMemo = sharedMemo.updated(tree, x1)
1293- x1
1294- }
12951263 }
12961264 }
12971265
0 commit comments