summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-01-30 21:40:39 +0000
committerMartin Odersky <odersky@gmail.com>2006-01-30 21:40:39 +0000
commita3ec956b661349f50356874ad0a3e609d4461a86 (patch)
tree5ae4aaee3cde063a84d793b1a869835afab67e51
parent430648004416a3a04104fd49798d99db30e1fb4f (diff)
downloadscala-a3ec956b661349f50356874ad0a3e609d4461a86.tar.gz
scala-a3ec956b661349f50356874ad0a3e609d4461a86.tar.bz2
scala-a3ec956b661349f50356874ad0a3e609d4461a86.zip
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Namers.scala8
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala2
-rw-r--r--test/files/pos/homonym.scala3
3 files changed, 10 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
index 94997532f2..dddd9b9821 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
@@ -237,7 +237,7 @@ trait Namers requires Analyzer {
tree.symbol = enterModuleSymbol(tree.pos, mods.flags | MODULE | FINAL, name);
setPrivateWithin(tree.symbol, mods);
setPrivateWithin(tree.symbol.moduleClass, mods);
- tree.symbol.moduleClass.setInfo(innerNamer.typeCompleter(tree));
+ tree.symbol.moduleClass.setInfo(innerNamer.moduleClassTypeCompleter(tree));
finish
case ValDef(mods, name, tp, rhs) =>
if (context.owner.isClass & (mods.flags & LOCAL) == 0) {
@@ -313,6 +313,12 @@ trait Namers requires Analyzer {
}
}
+ def moduleClassTypeCompleter(tree: Tree) = new TypeCompleter(tree) {
+ override def complete(sym: Symbol): unit = {
+ tree.symbol.info // sets moduleClass info as a side effect.
+ }
+ }
+
def getterTypeCompleter(tree: Tree) = new TypeCompleter(tree) {
override def complete(sym: Symbol): unit = {
if (settings.debug.value) log("defining " + sym);
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index 2a1502aa66..c3abb76e64 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -1323,7 +1323,7 @@ mixin class Typers requires Analyzer {
if (stableApplication) fun1 = stabilizeFun(fun1, mode, pt)
// if function is overloaded, filter all alternatives that match
// number of arguments and expected result type.
- // if (settings.debug.value) log("trans app "+fun1+":"+fun1.symbol+":"+fun1.tpe+" "+args);//DEBUG
+ if (settings.debug.value) log("trans app "+fun1+":"+fun1.symbol+":"+fun1.tpe+" "+args);//DEBUG
if (fun1.hasSymbol && fun1.symbol.hasFlag(OVERLOADED)) {
val argtypes = args map (arg => AllClass.tpe)
val pre = fun1.symbol.tpe.prefix
diff --git a/test/files/pos/homonym.scala b/test/files/pos/homonym.scala
index 6b8a310f1f..0836f7d6fc 100644
--- a/test/files/pos/homonym.scala
+++ b/test/files/pos/homonym.scala
@@ -2,4 +2,5 @@
class Foo(x: Int) {
def this() = this(0);
}
-object Foo;
+object Foo {
+}