aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/ast/Trees.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/dotty/tools/dotc/ast/Trees.scala')
-rw-r--r--src/dotty/tools/dotc/ast/Trees.scala32
1 files changed, 0 insertions, 32 deletions
diff --git a/src/dotty/tools/dotc/ast/Trees.scala b/src/dotty/tools/dotc/ast/Trees.scala
index c1cb474a3..17e2c3817 100644
--- a/src/dotty/tools/dotc/ast/Trees.scala
+++ b/src/dotty/tools/dotc/ast/Trees.scala
@@ -776,15 +776,6 @@ object Trees {
def genericEmptyValDef[T >: Untyped]: ValDef[T] = theEmptyValDef.asInstanceOf[ValDef[T]]
def genericEmptyTree[T >: Untyped]: Thicket[T] = theEmptyTree.asInstanceOf[Thicket[T]]
- /** A tree that can be shared without its position
- * polluting containing trees. Accumulators and tranformers
- * memoize results of shared subtrees
- */
- case class SharedTree[-T >: Untyped](shared: Tree[T]) extends ProxyTree[T] {
- type ThisTree[-T >: Untyped] = SharedTree[T]
- def forwardTo: Tree[T] = shared
- }
-
def flatten[T >: Untyped](trees: List[Tree[T]]): List[Tree[T]] = {
var buf: ListBuffer[Tree[T]] = null
var xs = trees
@@ -871,7 +862,6 @@ object Trees {
type Import = Trees.Import[T]
type PackageDef = Trees.PackageDef[T]
type Annotated = Trees.Annotated[T]
- type SharedTree = Trees.SharedTree[T]
type Thicket = Trees.Thicket[T]
val EmptyTree: Thicket = genericEmptyTree
@@ -1081,10 +1071,6 @@ object Trees {
case tree: Annotated if (annot eq tree.annot) && (arg eq tree.arg) => tree
case _ => finalize(tree, untpd.Annotated(annot, arg))
}
- def SharedTree(tree: Tree, shared: Tree): SharedTree = tree match {
- case tree: SharedTree if (shared eq tree.shared) => tree
- case _ => finalize(tree, untpd.SharedTree(shared))
- }
def Thicket(tree: Tree, trees: List[Tree]): Thicket = tree match {
case tree: Thicket if (trees eq tree.trees) => tree
case _ => finalize(tree, untpd.Thicket(trees))
@@ -1092,7 +1078,6 @@ object Trees {
}
abstract class TreeTransformer(val cpy: TreeCopier = inst.cpy) {
- var sharedMemo: Map[SharedTree, SharedTree] = Map()
def transform(tree: Tree)(implicit ctx: Context): Tree = tree match {
case Ident(name) =>
@@ -1178,14 +1163,6 @@ object Trees {
case Thicket(trees) =>
val trees1 = transform(trees)
if (trees1 eq trees) tree else Thicket(trees1)
- case tree @ SharedTree(shared) =>
- sharedMemo get tree match {
- case Some(tree1) => tree1
- case None =>
- val tree1 = cpy.SharedTree(tree, transform(shared))
- sharedMemo = sharedMemo.updated(tree, tree1)
- tree1
- }
}
def transformStats(trees: List[Tree])(implicit ctx: Context): List[Tree] =
transform(trees)
@@ -1198,7 +1175,6 @@ object Trees {
}
abstract class TreeAccumulator[X] extends ((X, Tree) => X) {
- var sharedMemo: Map[SharedTree, X] = Map()
def apply(x: X, tree: Tree): X
def apply(x: X, trees: Traversable[Tree]): X = (x /: trees)(apply)
def foldOver(x: X, tree: Tree): X = tree match {
@@ -1284,14 +1260,6 @@ object Trees {
this(this(x, annot), arg)
case Thicket(ts) =>
this(x, ts)
- case tree @ SharedTree(shared) =>
- sharedMemo get tree match {
- case Some(x1) => x1
- case None =>
- val x1 = this(x, shared)
- sharedMemo = sharedMemo.updated(tree, x1)
- x1
- }
}
}