diff options
author | Paul Phillips <paulp@improving.org> | 2012-12-12 16:05:24 -0800 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-12-19 11:51:54 -0800 |
commit | 9e88ddf82e2d8aa779aab46aec284d5566deac14 (patch) | |
tree | 34bd76cde8ab906d36970a69ac73310d412193b8 /src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala | |
parent | 7c23d525ccb413d8ff3e4cc6b442e7e864608609 (diff) | |
download | scala-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.scala | 9 |
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) } } |