summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Namers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2011-11-28 13:55:31 +0000
committerMartin Odersky <odersky@gmail.com>2011-11-28 13:55:31 +0000
commitf69d3e34dd165eb0f3242fcba3e6bbdc3d61e5d1 (patch)
tree3bd46bb86b0227420d7074553dae68ab16b080f2 /src/compiler/scala/tools/nsc/typechecker/Namers.scala
parent4e987a3cf032eb176c20bf3fd5ac847a73b19c00 (diff)
downloadscala-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.scala7
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?)