diff options
author | Martin Odersky <odersky@gmail.com> | 2005-10-06 14:29:46 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2005-10-06 14:29:46 +0000 |
commit | 8a666daa5c7fc2ffe28803ca52f366ec6a644147 (patch) | |
tree | 8a57f1ab26f0cdbce8c45f3b5729b8bac9ee7026 | |
parent | 8c7d8bd610fbe29cb6ff57de7694648d502ea7f4 (diff) | |
download | scala-8a666daa5c7fc2ffe28803ca52f366ec6a644147.tar.gz scala-8a666daa5c7fc2ffe28803ca52f366ec6a644147.tar.bz2 scala-8a666daa5c7fc2ffe28803ca52f366ec6a644147.zip |
*** empty log message ***
-rwxr-xr-x | sources/scala/tools/nsc/transform/Erasure.scala | 30 |
1 files changed, 8 insertions, 22 deletions
diff --git a/sources/scala/tools/nsc/transform/Erasure.scala b/sources/scala/tools/nsc/transform/Erasure.scala index 860cc27b45..ac2413c678 100755 --- a/sources/scala/tools/nsc/transform/Erasure.scala +++ b/sources/scala/tools/nsc/transform/Erasure.scala @@ -235,27 +235,11 @@ abstract class Erasure extends AddInterfaces with typechecker.Analyzer { */ private def adaptMember(tree: Tree): Tree = { tree match { - case Apply(sel @ Select(qual, name), args) => - if (sel.symbol == Any_==) - atPos(tree.pos) { - Apply(Select(qual, Object_==), args) - } - else if (sel.symbol == Any_!=) - atPos(tree.pos) { - Apply(Select(qual, Object_!=), args) - } - else qual match { - case New(tpt) => - assert(tpt.isInstanceOf[TypeTree]); - if (tpt.tpe.symbol == BoxedArrayClass) { - assert(name == nme.CONSTRUCTOR); - atPos(tree.pos) { - Typed(Apply(Select(New(TypeTree(BoxedAnyArrayClass.tpe)), name), args), tpt) - } - } else tree - case _ => - tree - } + case Apply(Select(New(tpt), name), args) if (tpt.tpe.symbol == BoxedArrayClass) => + assert(name == nme.CONSTRUCTOR); + atPos(tree.pos) { + Typed(Apply(Select(New(TypeTree(BoxedAnyArrayClass.tpe)), name), args), tpt) + } case Select(qual, name) if (name != nme.CONSTRUCTOR) => if (tree.symbol == Any_asInstanceOf || tree.symbol == Any_asInstanceOfErased) adaptMember(atPos(tree.pos)(Select(qual, Object_asInstanceOf))) @@ -269,7 +253,9 @@ abstract class Erasure extends AddInterfaces with typechecker.Analyzer { (qual1.tpe.symbol == ArrayClass && !isUnboxedArrayMember(tree.symbol))) { qual1 = box(qual1); } else if (!isValueClass(qual1.tpe.symbol) && - tree.symbol != NoSymbol && isValueClass(tree.symbol.owner)) { + tree.symbol != NoSymbol && + isValueClass(tree.symbol.owner) && + !isBoxedValueMember(tree.symbol)) { qual1 = unbox(qual1, tree.symbol.owner.tpe) } if (tree.symbol != NoSymbol) |