diff options
author | Martin Odersky <odersky@gmail.com> | 2006-07-24 19:07:12 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-07-24 19:07:12 +0000 |
commit | 1f7c3208a5f3c4a8bc29b199099fc0a322edd37a (patch) | |
tree | 60b30f98fd8ba62d66fa765304262583a45df1a6 | |
parent | adebb89dfa342f5626468a314d450e454d5714b4 (diff) | |
download | scala-1f7c3208a5f3c4a8bc29b199099fc0a322edd37a.tar.gz scala-1f7c3208a5f3c4a8bc29b199099fc0a322edd37a.tar.bz2 scala-1f7c3208a5f3c4a8bc29b199099fc0a322edd37a.zip |
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/Symbols.scala | 2 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/Mixin.scala | 1 | ||||
-rwxr-xr-x | test/files/pos/bug664.scala | 7 | ||||
-rw-r--r-- | test/files/pos/bug668.scala | 1 | ||||
-rw-r--r-- | test/files/pos/bug675.scala | 19 |
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) +} + + |