summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2005-10-06 14:29:46 +0000
committerMartin Odersky <odersky@gmail.com>2005-10-06 14:29:46 +0000
commit8a666daa5c7fc2ffe28803ca52f366ec6a644147 (patch)
tree8a57f1ab26f0cdbce8c45f3b5729b8bac9ee7026
parent8c7d8bd610fbe29cb6ff57de7694648d502ea7f4 (diff)
downloadscala-8a666daa5c7fc2ffe28803ca52f366ec6a644147.tar.gz
scala-8a666daa5c7fc2ffe28803ca52f366ec6a644147.tar.bz2
scala-8a666daa5c7fc2ffe28803ca52f366ec6a644147.zip
*** empty log message ***
-rwxr-xr-xsources/scala/tools/nsc/transform/Erasure.scala30
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)