diff options
author | Martin Odersky <odersky@gmail.com> | 2009-11-02 16:48:56 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2009-11-02 16:48:56 +0000 |
commit | 3d115bd2a4191c28e6d8a9c2633740288479cec7 (patch) | |
tree | 8d203f6b94069a1094195fc48ea5a98ba9dfbbe5 /src/compiler/scala/tools/nsc/typechecker/Namers.scala | |
parent | c9c04a59072d4a640f92fa477f247697d51c241b (diff) | |
download | scala-3d115bd2a4191c28e6d8a9c2633740288479cec7.tar.gz scala-3d115bd2a4191c28e6d8a9c2633740288479cec7.tar.bz2 scala-3d115bd2a4191c28e6d8a9c2633740288479cec7.zip |
Fixed #2545.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Namers.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Namers.scala | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala index 7360a9e07f..d4a7b9e1e7 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala @@ -359,9 +359,6 @@ trait Namers { self: Analyzer => tree.symbol = enterModuleSymbol(tree) tree.symbol.moduleClass.setInfo(namerOf(tree.symbol).moduleClassTypeCompleter((tree))) finish - if (tree.symbol.name == nme.PACKAGEkw && tree.symbol.owner != ScalaPackageClass) { - loaders.openPackageModule(tree.symbol) - } case vd @ ValDef(mods, name, tp, rhs) => if ((!context.owner.isClass || @@ -392,7 +389,7 @@ trait Namers { self: Analyzer => if (mods.isDeferred) { getter setPos tree.pos // unfocus getter position, because there won't be a separate value } else { - var vsym = + val vsym = if (!context.owner.isClass) { assert(mods.isLazy) // if not a field, it has to be a lazy val owner.newValue(tree.pos, name + "$lzy" ).setFlag(mods.flags | MUTABLE) @@ -1132,14 +1129,13 @@ trait Namers { self: Analyzer => newNamer(context.makeNewScope(tree, sym)).classSig(tparams, impl) case ModuleDef(_, _, impl) => - /** no, does not work here. - if (tree.symbol.name == nme.PACKAGEkw) { - loaders.openPackageModule(tree.symbol) - } - */ val clazz = sym.moduleClass clazz.setInfo(newNamer(context.makeNewScope(tree, clazz)).templateSig(impl)) //clazz.typeOfThis = singleType(sym.owner.thisType, sym); + tree.symbol.setInfo(clazz.tpe) // initialize module to avoid cycles + if (tree.symbol.name == nme.PACKAGEkw) { + loaders.openPackageModule(tree.symbol) + } clazz.tpe case DefDef(mods, _, tparams, vparamss, tpt, rhs) => |