diff options
author | Martin Odersky <odersky@gmail.com> | 2006-11-29 15:49:34 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-11-29 15:49:34 +0000 |
commit | cddb243ff68a18ce6c4d9a0cd3c9230574b2e0ae (patch) | |
tree | f19f864e419dc1ea84216915708b52d836d2bd6c /src/compiler/scala/tools/nsc/transform/Erasure.scala | |
parent | f9da023c4e7d57e38ba0041e0ee31b9ee46ec4a9 (diff) | |
download | scala-cddb243ff68a18ce6c4d9a0cd3c9230574b2e0ae.tar.gz scala-cddb243ff68a18ce6c4d9a0cd3c9230574b2e0ae.tar.bz2 scala-cddb243ff68a18ce6c4d9a0cd3c9230574b2e0ae.zip |
fixed problems with refinements.
added missing decode in error diagnostic
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform/Erasure.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/Erasure.scala | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Erasure.scala b/src/compiler/scala/tools/nsc/transform/Erasure.scala index 8bffb80b2b..9df54f371a 100644 --- a/src/compiler/scala/tools/nsc/transform/Erasure.scala +++ b/src/compiler/scala/tools/nsc/transform/Erasure.scala @@ -779,6 +779,20 @@ abstract class Erasure extends AddInterfaces with typechecker.Analyzer { } else tree + case Select(qual, _) => + if (tree.symbol.owner.isRefinementClass) { + var sym: Symbol = NoSymbol + var bcs = tree.symbol.owner.info.baseClasses.tail + //Console.println("resetting "+tree.symbol+tree.symbol.locationString+bcs)//DEBUG + while (!bcs.isEmpty && sym == NoSymbol) { + sym = tree.symbol.overriddenSymbol(bcs.head) + bcs = bcs.tail + } + assert(sym != NoSymbol, tree.symbol) + tree.symbol = sym + } + tree + case Template(parents, body) => assert(!currentOwner.isImplClass) //Console.println("checking no dble defs " + tree)//DEBUG |