summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBurak Emir <emir@epfl.ch>2007-08-20 05:20:39 +0000
committerBurak Emir <emir@epfl.ch>2007-08-20 05:20:39 +0000
commite8844dd9190bc1817be6210fca467d386df40f70 (patch)
treeeef13eb479792f687b54271b432ab126c9272a9d
parent60718f6da04ff19571cc7e276acf455c99d090b1 (diff)
downloadscala-e8844dd9190bc1817be6210fca467d386df40f70.tar.gz
scala-e8844dd9190bc1817be6210fca467d386df40f70.tar.bz2
scala-e8844dd9190bc1817be6210fca467d386df40f70.zip
split object resetAttrs into a function and a c...
split object resetAttrs into a function and a class, shielding its mutable state
-rw-r--r--src/compiler/scala/tools/nsc/ast/Trees.scala11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/Trees.scala b/src/compiler/scala/tools/nsc/ast/Trees.scala
index 3681307413..42a0eceaaf 100644
--- a/src/compiler/scala/tools/nsc/ast/Trees.scala
+++ b/src/compiler/scala/tools/nsc/ast/Trees.scala
@@ -1568,12 +1568,19 @@ trait Trees {
}
}
+
+ /** resets symbol and tpe fields in a tree, @see ResetAttrsTraverse
+ */
+ def resetAttrs[A<:Tree](x:A):A = {new ResetAttrsTraverser().traverse(x); x}
+
/** A traverser which resets symbol and tpe fields of all nodes in a given tree
* except for (1) TypeTree nodes, whose <code>.tpe</code> field is kept and
- * (2) is a <code>.symbol</code> field refers to a symbol which is defined
+ * (2) if a <code>.symbol</code> field refers to a symbol which is defined
* outside the tree, it is also kept.
+ *
+ * (bq:) This traverser has mutable state and should be discarded after use
*/
- object resetAttrs extends Traverser {
+ class ResetAttrsTraverser extends Traverser {
private val erasedSyms = new HashSet[Symbol](8)
override def traverse(tree: Tree): Unit = tree match {
case EmptyTree | TypeTree() =>