summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Namers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2009-11-02 16:48:56 +0000
committerMartin Odersky <odersky@gmail.com>2009-11-02 16:48:56 +0000
commit3d115bd2a4191c28e6d8a9c2633740288479cec7 (patch)
tree8d203f6b94069a1094195fc48ea5a98ba9dfbbe5 /src/compiler/scala/tools/nsc/typechecker/Namers.scala
parentc9c04a59072d4a640f92fa477f247697d51c241b (diff)
downloadscala-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.scala14
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) =>