summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Typers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2007-11-05 19:33:44 +0000
committerMartin Odersky <odersky@gmail.com>2007-11-05 19:33:44 +0000
commitdb75a1c922d0806ed067c7fa139f806f4424efc7 (patch)
tree2b70e466a48e453e37afef6a96eecaa5c0d84ac9 /src/compiler/scala/tools/nsc/typechecker/Typers.scala
parentff082b58c65467ffa90651aaae87a2f552cb48ec (diff)
downloadscala-db75a1c922d0806ed067c7fa139f806f4424efc7.tar.gz
scala-db75a1c922d0806ed067c7fa139f806f4424efc7.tar.bz2
scala-db75a1c922d0806ed067c7fa139f806f4424efc7.zip
fix^2 t0117
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Typers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index e7493a999e..8cd65792cc 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -2418,15 +2418,16 @@ trait Typers { self: Analyzer =>
if (ps.isEmpty) {
if (settings.debug.value)
Console.println(site.parents map (_.typeSymbol.name))//debug
- error(tree.pos, mix+" does not name a parent class of "+clazz)
+ if (phase.erasedTypes && context.enclClass.owner.isImplClass) {
+ // the reference to super class got lost during erasure
+ unit.error(tree.pos, "implementation restriction: traits may not select fields or methods from to super[C] where C is a class")
+ } else {
+ error(tree.pos, mix+" does not name a parent class of "+clazz)
+ }
ErrorType
} else if (!ps.tail.isEmpty) {
error(tree.pos, "ambiguous parent class qualifier")
ErrorType
- } else if (ps.head.typeSymbol.isClass && !ps.head.typeSymbol.isTrait &&
- context.enclClass.owner.isTrait) {
- error(tree.pos, "traits may not refer to super[C] where C is a class")
- ErrorType
} else {
ps.head
}