diff options
author | Martin Odersky <odersky@gmail.com> | 2003-05-28 10:12:07 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2003-05-28 10:12:07 +0000 |
commit | 336e1acd4fb751420bbf0bc51dfc63ddaf9d73f6 (patch) | |
tree | 2462737de99d8bb51c710656bdf26cd38ba688e5 | |
parent | 3fb5e2ade57adb5d6a342a8da94c009819b27174 (diff) | |
download | scala-336e1acd4fb751420bbf0bc51dfc63ddaf9d73f6.tar.gz scala-336e1acd4fb751420bbf0bc51dfc63ddaf9d73f6.tar.bz2 scala-336e1acd4fb751420bbf0bc51dfc63ddaf9d73f6.zip |
*** empty log message ***
-rw-r--r-- | sources/scalac/transformer/Erasure.java | 17 |
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); |