summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2003-05-28 10:12:07 +0000
committerMartin Odersky <odersky@gmail.com>2003-05-28 10:12:07 +0000
commit336e1acd4fb751420bbf0bc51dfc63ddaf9d73f6 (patch)
tree2462737de99d8bb51c710656bdf26cd38ba688e5
parent3fb5e2ade57adb5d6a342a8da94c009819b27174 (diff)
downloadscala-336e1acd4fb751420bbf0bc51dfc63ddaf9d73f6.tar.gz
scala-336e1acd4fb751420bbf0bc51dfc63ddaf9d73f6.tar.bz2
scala-336e1acd4fb751420bbf0bc51dfc63ddaf9d73f6.zip
*** empty log message ***
-rw-r--r--sources/scalac/transformer/Erasure.java17
1 files changed, 16 insertions, 1 deletions
diff --git a/sources/scalac/transformer/Erasure.java b/sources/scalac/transformer/Erasure.java
index 1167a40521..c97df51aa8 100644
--- a/sources/scalac/transformer/Erasure.java
+++ b/sources/scalac/transformer/Erasure.java
@@ -417,7 +417,22 @@ public class Erasure extends Transformer implements Modifiers {
? primitives.getUnboxValueSymbol(tp)
: primitives.getInstanceTestSymbol(tp);
qual1 = coerce(qual1, primSym.owner().type());
- return gen.Select(qual1, primSym);
+ Tree t = gen.Select(qual1, primSym);
+ if (sym == definitions.AS) {
+ return t;
+ } else {
+ Tree test =
+ gen.TypeApply(
+ tree.pos,
+ transform(fun),
+ new Tree[]{
+ gen.mkType(tree.pos, primSym.owner().type())
+ });
+ return
+ gen.Apply(
+ gen.Select(test, definitions.AMPAMP()),
+ new Tree[]{t});
+ }
} else
return copy.TypeApply(tree, transform(fun), transform(args))
.setType(owntype);