summaryrefslogtreecommitdiff
path: root/sources/scala/tools/nsc/typechecker/Namers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2005-12-13 19:24:04 +0000
committerMartin Odersky <odersky@gmail.com>2005-12-13 19:24:04 +0000
commit4e8414de05bc4c3e7591df861bc3dea25738074e (patch)
tree34ae6d13222abb84440a0514afeb0e31d804b134 /sources/scala/tools/nsc/typechecker/Namers.scala
parente7f8ed8b62275dc7e7786a842588f6ca9cec3192 (diff)
downloadscala-4e8414de05bc4c3e7591df861bc3dea25738074e.tar.gz
scala-4e8414de05bc4c3e7591df861bc3dea25738074e.tar.bz2
scala-4e8414de05bc4c3e7591df861bc3dea25738074e.zip
*** empty log message ***
Diffstat (limited to 'sources/scala/tools/nsc/typechecker/Namers.scala')
-rwxr-xr-xsources/scala/tools/nsc/typechecker/Namers.scala12
1 files changed, 7 insertions, 5 deletions
diff --git a/sources/scala/tools/nsc/typechecker/Namers.scala b/sources/scala/tools/nsc/typechecker/Namers.scala
index 39b2f3b20c..20e65934e4 100755
--- a/sources/scala/tools/nsc/typechecker/Namers.scala
+++ b/sources/scala/tools/nsc/typechecker/Namers.scala
@@ -84,11 +84,14 @@ trait Namers: Analyzer {
}
private def enterPackageSymbol(pos: int, name: Name): Symbol = {
- val p: Symbol = context.scope.lookup(name);
- if (p.isPackage && context.scope == p.owner.info.decls) {
+ val cscope = if (context.owner == EmptyPackageClass) RootClass.info.decls
+ else context.scope;
+ val p: Symbol = cscope.lookup(name);
+ if (p.isPackage && cscope == p.owner.info.decls) {
p
} else {
- val pkg = context.owner.newPackage(pos, name);
+ val cowner = if (context.owner == EmptyPackageClass) RootClass else context.owner;
+ val pkg = cowner.newPackage(pos, name);
pkg.moduleClass.setInfo(new PackageClassInfoType(new Scope(), pkg.moduleClass));
pkg.setInfo(pkg.moduleClass.tpe);
enterInScope(pkg)
@@ -189,8 +192,7 @@ trait Namers: Analyzer {
tree.pos, mods & AccessFlags | METHOD | CASE, name.toTermName)
.setInfo(innerNamer.caseFactoryCompleter(tree))
}
- val mods1: int = if (impl.body forall treeInfo.isInterfaceMember) mods | INTERFACE else mods;
- tree.symbol = enterClassSymbol(tree.pos, mods1, name);
+ tree.symbol = enterClassSymbol(tree.pos, mods, name);
finishWith(tparams);
case ModuleDef(mods, name, _) =>
tree.symbol = enterModuleSymbol(tree.pos, mods | MODULE | FINAL, name);