summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-07-24 19:07:12 +0000
committerMartin Odersky <odersky@gmail.com>2006-07-24 19:07:12 +0000
commit1f7c3208a5f3c4a8bc29b199099fc0a322edd37a (patch)
tree60b30f98fd8ba62d66fa765304262583a45df1a6
parentadebb89dfa342f5626468a314d450e454d5714b4 (diff)
downloadscala-1f7c3208a5f3c4a8bc29b199099fc0a322edd37a.tar.gz
scala-1f7c3208a5f3c4a8bc29b199099fc0a322edd37a.tar.bz2
scala-1f7c3208a5f3c4a8bc29b199099fc0a322edd37a.zip
-rw-r--r--src/compiler/scala/tools/nsc/symtab/Symbols.scala2
-rw-r--r--src/compiler/scala/tools/nsc/transform/Mixin.scala1
-rwxr-xr-xtest/files/pos/bug664.scala7
-rw-r--r--test/files/pos/bug668.scala1
-rw-r--r--test/files/pos/bug675.scala19
5 files changed, 29 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/Symbols.scala b/src/compiler/scala/tools/nsc/symtab/Symbols.scala
index 9ab2d8aa39..bb8c000f99 100644
--- a/src/compiler/scala/tools/nsc/symtab/Symbols.scala
+++ b/src/compiler/scala/tools/nsc/symtab/Symbols.scala
@@ -210,7 +210,7 @@ trait Symbols requires SymbolTable {
final def isImplOnly: boolean = (
hasFlag(PRIVATE) ||
(owner.isImplClass || owner.isTrait) &&
- (hasFlag(notPRIVATE | LIFTED) && !hasFlag(ACCESSOR | SUPERACCESSOR) || isConstructor)
+ (hasFlag(notPRIVATE | LIFTED) && !hasFlag(ACCESSOR | SUPERACCESSOR | MODULE) || isConstructor)
)
/** Is this symbol a module variable ? */
diff --git a/src/compiler/scala/tools/nsc/transform/Mixin.scala b/src/compiler/scala/tools/nsc/transform/Mixin.scala
index 82b111ace6..4879f59250 100644
--- a/src/compiler/scala/tools/nsc/transform/Mixin.scala
+++ b/src/compiler/scala/tools/nsc/transform/Mixin.scala
@@ -413,6 +413,7 @@ abstract class Mixin extends InfoTransform {
case Select(Super(_, _), name) =>
tree
case Select(qual, name) if sym.owner.isImplClass && !isStatic(sym) =>
+ if (sym.isMethod) Console.println("####"+sym+sym.isImplOnly+" "+flagsToString(sym.flags))
assert(!sym.isMethod, sym)
val getter = sym.getter(enclInterface)
assert(getter != NoSymbol)
diff --git a/test/files/pos/bug664.scala b/test/files/pos/bug664.scala
new file mode 100755
index 0000000000..f3b8d06053
--- /dev/null
+++ b/test/files/pos/bug664.scala
@@ -0,0 +1,7 @@
+package test;
+abstract class Test;
+trait Test2 extends Test {
+ trait Foo extends super.Foo {
+ trait Bar extends super.Bar;
+ }
+}
diff --git a/test/files/pos/bug668.scala b/test/files/pos/bug668.scala
new file mode 100644
index 0000000000..3256037b1e
--- /dev/null
+++ b/test/files/pos/bug668.scala
@@ -0,0 +1 @@
+class Test extends Iterable
diff --git a/test/files/pos/bug675.scala b/test/files/pos/bug675.scala
new file mode 100644
index 0000000000..51f56920b5
--- /dev/null
+++ b/test/files/pos/bug675.scala
@@ -0,0 +1,19 @@
+package test;
+
+trait T {
+ abstract class Foo;
+ private object FOO_0 extends Foo {
+ Console.println("FOO_0 initialized")
+ }
+ trait X {
+ def foo : Foo = FOO_0;
+ }
+}
+
+object Test extends Application {
+ val t = new T{}
+ val x = new t.X{}
+ Console.println(x.foo)
+}
+
+