summaryrefslogtreecommitdiff
path: root/src
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 /src
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.
Diffstat (limited to 'src')
-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)
}
}
}