diff options
author | Martin Odersky <odersky@gmail.com> | 2011-11-28 13:55:31 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2011-11-28 13:55:31 +0000 |
commit | f69d3e34dd165eb0f3242fcba3e6bbdc3d61e5d1 (patch) | |
tree | 3bd46bb86b0227420d7074553dae68ab16b080f2 /src/compiler/scala/tools/nsc/typechecker/Namers.scala | |
parent | 4e987a3cf032eb176c20bf3fd5ac847a73b19c00 (diff) | |
download | scala-f69d3e34dd165eb0f3242fcba3e6bbdc3d61e5d1.tar.gz scala-f69d3e34dd165eb0f3242fcba3e6bbdc3d61e5d1.tar.bz2 scala-f69d3e34dd165eb0f3242fcba3e6bbdc3d61e5d1.zip |
Revised macro defs, added a test case.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Namers.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Namers.scala | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala index 4c85830311..0f57285480 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala @@ -783,8 +783,11 @@ trait Namers extends MethodSynthesis { val typedBody = defnTyper.computeType(tree.rhs, pt) val sym = if (owner.isMethod) owner else tree.symbol val typedDefn = widenIfNecessary(sym, typedBody, pt) + assignTypeToTree(tree, typedDefn) + } - tree.tpt defineType typedDefn setPos tree.pos.focus + private def assignTypeToTree(tree: ValOrDefDef, tpe: Type): Type = { + tree.tpt defineType tpe setPos tree.pos.focus tree.tpt.tpe } @@ -1003,7 +1006,7 @@ trait Namers extends MethodSynthesis { if (!tpt.isEmpty) { typer.typedType(tpt).tpe } else if (meth.isMacro) { - AnyClass.tpe + assignTypeToTree(ddef, AnyClass.tpe) } else { // replace deSkolemized symbols with skolemized ones // (for resultPt computed by looking at overridden symbol, right?) |