diff options
author | Martin Odersky <odersky@gmail.com> | 2006-09-04 17:48:47 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-09-04 17:48:47 +0000 |
commit | b0399bd45b473e19af1aac3308a83d6160fd11fa (patch) | |
tree | f1b0865f61c936ec33d58a92f261b18f87b9fe06 | |
parent | cd2cfe19995eae25719fe775dd57b5e8e7802f1c (diff) | |
download | scala-b0399bd45b473e19af1aac3308a83d6160fd11fa.tar.gz scala-b0399bd45b473e19af1aac3308a83d6160fd11fa.tar.bz2 scala-b0399bd45b473e19af1aac3308a83d6160fd11fa.zip |
fixed bug715
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala | 2 | ||||
-rw-r--r-- | test/files/neg/bug715.check | 4 | ||||
-rw-r--r-- | test/files/neg/bug715.scala | 15 |
3 files changed, 20 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala b/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala index 3015fc31f3..f0eafea67e 100644 --- a/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala +++ b/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala @@ -80,7 +80,7 @@ abstract class SuperAccessors extends transform.Transform { val member = sym.overridingSymbol(clazz); if (mix != nme.EMPTY.toTypeName || member == NoSymbol || !((member hasFlag ABSOVERRIDE) && member.isIncompleteIn(clazz))) - unit.error(tree.pos, ""+member+member.locationString+" is accessed from super. It may not be abstract "+ + unit.error(tree.pos, ""+sym+sym.locationString+" is accessed from super. It may not be abstract "+ "unless it is overridden by a member declared `abstract' and `override'"); } if (tree.isTerm && mix == nme.EMPTY.toTypeName && diff --git a/test/files/neg/bug715.check b/test/files/neg/bug715.check new file mode 100644 index 0000000000..68b9709c05 --- /dev/null +++ b/test/files/neg/bug715.check @@ -0,0 +1,4 @@ +bug715.scala:12 error: method chilren in trait NodeImpl is accessed from super. It may not be abstract unless it is overridden by a member declared `abstract' and `override' + override def children = super.chilren; + ^ +one error found diff --git a/test/files/neg/bug715.scala b/test/files/neg/bug715.scala new file mode 100644 index 0000000000..87b2525a63 --- /dev/null +++ b/test/files/neg/bug715.scala @@ -0,0 +1,15 @@ +package test; +trait B { + type Node <: NodeImpl; + trait NodeImpl { + def self : Node; + def chilren : List[Node]; + } +} +trait C extends B { + type Node <: NodeImpl; + trait NodeImpl extends super.NodeImpl { + override def children = super.chilren; + children; + } +} |