diff options
author | Martin Odersky <odersky@gmail.com> | 2005-05-11 13:26:06 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2005-05-11 13:26:06 +0000 |
commit | 88a54be387762d1fdf96a8a128c84e95e613873c (patch) | |
tree | bfa66bd637aa0d44e40631403a4b879ccb6e98d4 /sources/scala/tools/nsc/typechecker/Namers.scala | |
parent | cb6e13ecc4c8f011709d971519ac8aec57b7497a (diff) | |
download | scala-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-x | sources/scala/tools/nsc/typechecker/Namers.scala | 13 |
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 = |