summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/transform/Erasure.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-11-29 15:49:34 +0000
committerMartin Odersky <odersky@gmail.com>2006-11-29 15:49:34 +0000
commitcddb243ff68a18ce6c4d9a0cd3c9230574b2e0ae (patch)
treef19f864e419dc1ea84216915708b52d836d2bd6c /src/compiler/scala/tools/nsc/transform/Erasure.scala
parentf9da023c4e7d57e38ba0041e0ee31b9ee46ec4a9 (diff)
downloadscala-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.scala14
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