diff options
author | Martin Odersky <odersky@gmail.com> | 2007-11-05 19:33:44 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2007-11-05 19:33:44 +0000 |
commit | db75a1c922d0806ed067c7fa139f806f4424efc7 (patch) | |
tree | 2b70e466a48e453e37afef6a96eecaa5c0d84ac9 /src/compiler/scala/tools/nsc/typechecker/Typers.scala | |
parent | ff082b58c65467ffa90651aaae87a2f552cb48ec (diff) | |
download | scala-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.scala | 11 |
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 } |