summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala2
-rw-r--r--test/files/neg/bug715.check4
-rw-r--r--test/files/neg/bug715.scala15
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;
+ }
+}