From 3e58057fd1dd2149b5c63ad053986948fe2da691 Mon Sep 17 00:00:00 2001 From: Iulian Dragos Date: Sat, 17 May 2008 15:04:41 +0000 Subject: Fixed classOf problems (issues #841, #876). Updated manifests.check to reflect the new way 'void' is represented. --- src/compiler/scala/tools/nsc/transform/CleanUp.scala | 3 ++- src/compiler/scala/tools/nsc/transform/Erasure.scala | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'src/compiler') diff --git a/src/compiler/scala/tools/nsc/transform/CleanUp.scala b/src/compiler/scala/tools/nsc/transform/CleanUp.scala index 59ba3f4e90..c4a7240144 100644 --- a/src/compiler/scala/tools/nsc/transform/CleanUp.scala +++ b/src/compiler/scala/tools/nsc/transform/CleanUp.scala @@ -528,7 +528,8 @@ abstract class CleanUp extends Transform { val tpe = c.typeValue atPos(tree.pos) { localTyper.typed { - if (isValueClass(tpe.typeSymbol) && !forCLDC) + if ((isValueClass(tpe.typeSymbol) || tpe.typeSymbol == definitions.UnitClass) + && !forCLDC) Select(gen.mkAttributedRef(javaBoxClassModule(tpe.typeSymbol)), "TYPE") else if (settings.target.value != "jvm-1.5" && !forMSIL) Apply( diff --git a/src/compiler/scala/tools/nsc/transform/Erasure.scala b/src/compiler/scala/tools/nsc/transform/Erasure.scala index d58213f18b..3e738873a8 100644 --- a/src/compiler/scala/tools/nsc/transform/Erasure.scala +++ b/src/compiler/scala/tools/nsc/transform/Erasure.scala @@ -875,6 +875,10 @@ abstract class Erasure extends AddInterfaces with typechecker.Analyzer { case Match(selector, cases) => Match(Typed(selector, TypeTree(selector.tpe)), cases) + case Literal(ct) if ct.tag == ClassTag + && ct.typeValue.typeSymbol != definitions.UnitClass => + copy.Literal(tree, Constant(erasure(ct.typeValue))) + case _ => tree } -- cgit v1.2.3