diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2012-05-17 18:35:09 +0300 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2012-05-17 18:36:49 +0300 |
commit | 7813d660bea0fd9b987493baef019ea92f876a2f (patch) | |
tree | ee64be0684775d7b33161530296fe0a5816b6e22 /src/compiler/scala/tools/nsc/ast/Trees.scala | |
parent | 8ce86909bf7d7b7ff5c1f65b35288c90c1f8548a (diff) | |
download | scala-7813d660bea0fd9b987493baef019ea92f876a2f.tar.gz scala-7813d660bea0fd9b987493baef019ea92f876a2f.tar.bz2 scala-7813d660bea0fd9b987493baef019ea92f876a2f.zip |
fixes resetAttrs
Diffstat (limited to 'src/compiler/scala/tools/nsc/ast/Trees.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/ast/Trees.scala | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/Trees.scala b/src/compiler/scala/tools/nsc/ast/Trees.scala index 1b8fe9a91a..adc490c8e1 100644 --- a/src/compiler/scala/tools/nsc/ast/Trees.scala +++ b/src/compiler/scala/tools/nsc/ast/Trees.scala @@ -264,9 +264,9 @@ trait Trees extends reflect.internal.Trees { self: Global => // def resetAllAttrs[A<:Tree](x:A): A = { new ResetAttrsTraverser().traverse(x); x } // def resetLocalAttrs[A<:Tree](x:A): A = { new ResetLocalAttrsTraverser().traverse(x); x } - def resetAllAttrs[A <: Tree](x: A, leaveAlone: Tree => Boolean = null): A = new ResetAttrs(false, leaveAlone).transform(x) - def resetLocalAttrs[A <: Tree](x: A, leaveAlone: Tree => Boolean = null): A = new ResetAttrs(true, leaveAlone).transform(x) - def resetLocalAttrsKeepLabels[A<:Tree](x: A, leaveAlone: Tree => Boolean = null): A = new ResetAttrs(true, leaveAlone, true).transform(x) + def resetAllAttrs(x: Tree, leaveAlone: Tree => Boolean = null): Tree = new ResetAttrs(false, leaveAlone).transform(x) + def resetLocalAttrs(x: Tree, leaveAlone: Tree => Boolean = null): Tree = new ResetAttrs(true, leaveAlone).transform(x) + def resetLocalAttrsKeepLabels(x: Tree, leaveAlone: Tree => Boolean = null): Tree = new ResetAttrs(true, leaveAlone, true).transform(x) /** A transformer which resets symbol and tpe fields of all nodes in a given tree, * with special treatment of: @@ -351,7 +351,7 @@ trait Trees extends reflect.internal.Trees { self: Global => } } - def transform[T <: Tree](x: T): T = { + def transform(x: Tree): Tree = { if (localOnly) new MarkLocals().traverse(x) @@ -361,10 +361,7 @@ trait Trees extends reflect.internal.Trees { self: Global => trace("locals (%d total): %n".format(orderedLocals.size))(msg) } - val x1 = new Transformer().transform(x) - // The loose invariant is a temporary workaround for SI-5803 - assert(x.getClass.isInstance(x1) || (x.isInstanceOf[ApplyConstructor] && x1.isInstanceOf[Apply]), (x.getClass, x1.getClass)) - x1.asInstanceOf[T] + new Transformer().transform(x) } } |