summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-07-30 04:03:00 +0000
committerPaul Phillips <paulp@improving.org>2011-07-30 04:03:00 +0000
commit9c7e267082180f8ca55f52dbd80413801524647a (patch)
treeaa9d028d52e4ecc1286b990acd9e84e851b9b684
parent613f30f1cd0170012fedf6608140a585f544db58 (diff)
downloadscala-9c7e267082180f8ca55f52dbd80413801524647a.tar.gz
scala-9c7e267082180f8ca55f52dbd80413801524647a.tar.bz2
scala-9c7e267082180f8ca55f52dbd80413801524647a.zip
One last build fix for our poor java5 build ser...
One last build fix for our poor java5 build servers with their String.isEmpty confusion, no review.
-rw-r--r--src/compiler/scala/tools/nsc/transform/LiftCode.scala43
1 files changed, 25 insertions, 18 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/LiftCode.scala b/src/compiler/scala/tools/nsc/transform/LiftCode.scala
index 36ba0ee88d..9c4ed0d25d 100644
--- a/src/compiler/scala/tools/nsc/transform/LiftCode.scala
+++ b/src/compiler/scala/tools/nsc/transform/LiftCode.scala
@@ -136,35 +136,42 @@ abstract class LiftCode extends Transform with TypingTransformers {
def reify1(value: Any): Tree = {
def treatProduct(c: Product): Tree = {
val name = objectName(c)
- if (!name.isEmpty)
+ if (name != "")
mkTerm(name)
else {
val name = className(c)
- if (name.isEmpty) abort("don't know how to inject " + value + " of class "+ value.getClass)
+ if (name == "")
+ abort("don't know how to inject " + value + " of class "+ value.getClass)
+
val injectedArgs = new ListBuffer[Tree]
for (i <- 0 until c.productArity)
injectedArgs += reify(c.productElement(i))
New(mkType(name), List(injectedArgs.toList))
+
+ // Note to self: do some profiling and find out how the speed
+ // of the above compares to:
+ //
+ // New(mkType(name), List(c.productIterator map reify toList))
}
}
value match {
- case () => Literal(Constant(()))
- case x: String => Literal(Constant(x))
- case x: Boolean => Literal(Constant(x))
- case x: Byte => Literal(Constant(x))
- case x: Short => Literal(Constant(x))
- case x: Char => Literal(Constant(x))
- case x: Int => Literal(Constant(x))
- case x: Long => Literal(Constant(x))
- case x: Float => Literal(Constant(x))
- case x: Double => Literal(Constant(x))
- case x: Map[_,_] => Apply(mkTerm("scala.collection.immutable.Map.apply"), Nil)//!!! Maps come from Modifiers, should not be part of case class
- case x: TermName => Apply(mkTerm("scala.reflect.runtime.Mirror.newTermName"), List(Literal(Constant(x.toString))))
- case x: TypeName => Apply(mkTerm("scala.reflect.runtime.Mirror.newTypeName"), List(Literal(Constant(x.toString))))
- case c: Product => treatProduct(c)
- case _ =>
- abort("don't know how to inject " + value+" of class "+ value.getClass)
+ case () => Literal(Constant(()))
+ case x: String => Literal(Constant(x))
+ case x: Boolean => Literal(Constant(x))
+ case x: Byte => Literal(Constant(x))
+ case x: Short => Literal(Constant(x))
+ case x: Char => Literal(Constant(x))
+ case x: Int => Literal(Constant(x))
+ case x: Long => Literal(Constant(x))
+ case x: Float => Literal(Constant(x))
+ case x: Double => Literal(Constant(x))
+ //!!! Maps come from Modifiers, should not be part of case class
+ case x: Map[_,_] => Apply(mkTerm("scala.collection.immutable.Map.apply"), Nil)
+ case x: TermName => Apply(mkTerm("scala.reflect.runtime.Mirror.newTermName"), List(Literal(Constant(x.toString))))
+ case x: TypeName => Apply(mkTerm("scala.reflect.runtime.Mirror.newTypeName"), List(Literal(Constant(x.toString))))
+ case c: Product => treatProduct(c)
+ case _ => abort("don't know how to inject " + value + " of class " + value.getClass)
}
}
}