summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-12-12 16:05:24 -0800
committerPaul Phillips <paulp@improving.org>2012-12-19 11:51:54 -0800
commit9e88ddf82e2d8aa779aab46aec284d5566deac14 (patch)
tree34bd76cde8ab906d36970a69ac73310d412193b8 /src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala
parent7c23d525ccb413d8ff3e4cc6b442e7e864608609 (diff)
downloadscala-9e88ddf82e2d8aa779aab46aec284d5566deac14.tar.gz
scala-9e88ddf82e2d8aa779aab46aec284d5566deac14.tar.bz2
scala-9e88ddf82e2d8aa779aab46aec284d5566deac14.zip
Eliminating var-like setter tpe_= on Tree.
Deprecated tpe_= on Tree, which is redundant with and less useful than setType. To provide a small layer of insulation from the direct nulling out of mutable fields used to signal the typer, added def clearType() which is merely tree.tpe = null but is shamefaced about the null and var-settings parts like a respectable method should be.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala9
1 files changed, 3 insertions, 6 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala b/src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala
index fb95c952d2..260bd87fdf 100644
--- a/src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala
@@ -192,11 +192,8 @@ abstract class TreeCheckers extends Analyzer {
override def typed(tree: Tree, mode: Int, pt: Type): Tree = returning(tree) {
case EmptyTree | TypeTree() => ()
case _ if tree.tpe != null =>
- tpeOfTree.getOrElseUpdate(tree, {
- val saved = tree.tpe
- tree.tpe = null
- saved
- })
+ tpeOfTree.getOrElseUpdate(tree, try tree.tpe finally tree.clearType())
+
wrap(tree)(super.typed(tree, mode, pt) match {
case _: Literal => ()
case x if x ne tree => treesDiffer(tree, x)
@@ -288,7 +285,7 @@ abstract class TreeCheckers extends Analyzer {
if (oldtpe =:= tree.tpe) ()
else typesDiffer(tree, oldtpe, tree.tpe)
- tree.tpe = oldtpe
+ tree setType oldtpe
super.traverse(tree)
}
}