summaryrefslogtreecommitdiff
path: root/sources/scala/tools/nsc/typechecker/Namers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2005-05-11 13:26:06 +0000
committerMartin Odersky <odersky@gmail.com>2005-05-11 13:26:06 +0000
commit88a54be387762d1fdf96a8a128c84e95e613873c (patch)
treebfa66bd637aa0d44e40631403a4b879ccb6e98d4 /sources/scala/tools/nsc/typechecker/Namers.scala
parentcb6e13ecc4c8f011709d971519ac8aec57b7497a (diff)
downloadscala-88a54be387762d1fdf96a8a128c84e95e613873c.tar.gz
scala-88a54be387762d1fdf96a8a128c84e95e613873c.tar.bz2
scala-88a54be387762d1fdf96a8a128c84e95e613873c.zip
*** empty log message ***
Diffstat (limited to 'sources/scala/tools/nsc/typechecker/Namers.scala')
-rwxr-xr-xsources/scala/tools/nsc/typechecker/Namers.scala13
1 files changed, 11 insertions, 2 deletions
diff --git a/sources/scala/tools/nsc/typechecker/Namers.scala b/sources/scala/tools/nsc/typechecker/Namers.scala
index 12341ee961..34cf558385 100755
--- a/sources/scala/tools/nsc/typechecker/Namers.scala
+++ b/sources/scala/tools/nsc/typechecker/Namers.scala
@@ -21,7 +21,16 @@ trait Namers: Analyzer {
class Namer(context: Context) {
- val typer = new Typer(context);
+ val typer = {
+ def isTemplateContext(context: Context): boolean = context.tree match {
+ case Template(_, _) => true
+ case Import(_, _) => isTemplateContext(context.outer)
+ case _ => false
+ }
+ new Typer(
+ if (isTemplateContext(context)) context.make(context.tree, context.owner, new Scope())
+ else context)
+ }
private def doubleDefError(pos: int, sym: Symbol): unit =
context.error(pos,
@@ -144,7 +153,7 @@ trait Namers: Analyzer {
tree.symbol =
if ((mods & DEFERRED) == 0)
owner.newValue(tree.pos, name)
- .setFlag(mods | PRIVATE | LOCAL).setInfo(typer.typeCompleter(tree))
+ .setFlag(mods & FieldFlags | PRIVATE | LOCAL).setInfo(typer.typeCompleter(tree))
else getter;
} else {
tree.symbol =