diff options
author | Martin Odersky <odersky@gmail.com> | 2005-12-13 19:24:04 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2005-12-13 19:24:04 +0000 |
commit | 4e8414de05bc4c3e7591df861bc3dea25738074e (patch) | |
tree | 34ae6d13222abb84440a0514afeb0e31d804b134 /sources/scala/tools/nsc/typechecker/Namers.scala | |
parent | e7f8ed8b62275dc7e7786a842588f6ca9cec3192 (diff) | |
download | scala-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-x | sources/scala/tools/nsc/typechecker/Namers.scala | 12 |
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); |