summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/internal/BuildUtils.scala
diff options
context:
space:
mode:
authorDen Shabalin <den.shabalin@gmail.com>2013-10-30 13:24:05 +0100
committerDen Shabalin <den.shabalin@gmail.com>2013-11-12 14:04:41 +0100
commit80ddc958a2f7487b03d5334ac7bacf209fe98dd5 (patch)
tree2a540a15eb8e74dd2ad42e16db5a7d800e61a6c9 /src/reflect/scala/reflect/internal/BuildUtils.scala
parentd2cee3a5e1d26ba27fd7912d48b1e7af0beb844a (diff)
downloadscala-80ddc958a2f7487b03d5334ac7bacf209fe98dd5.tar.gz
scala-80ddc958a2f7487b03d5334ac7bacf209fe98dd5.tar.bz2
scala-80ddc958a2f7487b03d5334ac7bacf209fe98dd5.zip
deduplicate tuple tree creation code
Previously tuple tree generation code has been implemented in three place: tree builder, tree gen, build utils. Now it's just defined once in tree gen.
Diffstat (limited to 'src/reflect/scala/reflect/internal/BuildUtils.scala')
-rw-r--r--src/reflect/scala/reflect/internal/BuildUtils.scala16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/reflect/scala/reflect/internal/BuildUtils.scala b/src/reflect/scala/reflect/internal/BuildUtils.scala
index fc6b26db3f..9d111e8852 100644
--- a/src/reflect/scala/reflect/internal/BuildUtils.scala
+++ b/src/reflect/scala/reflect/internal/BuildUtils.scala
@@ -325,11 +325,9 @@ trait BuildUtils { self: SymbolTable =>
}
object SyntacticTuple extends SyntacticTupleExtractor {
- def apply(args: List[Tree]): Tree = args match {
- case Nil => Literal(Constant(()))
- case _ =>
- require(TupleClass(args.length).exists, s"Tuples with ${args.length} arity aren't supported")
- self.Apply(TupleClass(args.length).companionModule, args: _*)
+ def apply(args: List[Tree]): Tree = {
+ require(args.isEmpty || TupleClass(args.length).exists, s"Tuples with ${args.length} arity aren't supported")
+ gen.mkTuple(args, flattenUnary = false)
}
def unapply(tree: Tree): Option[List[Tree]] = tree match {
@@ -343,11 +341,9 @@ trait BuildUtils { self: SymbolTable =>
}
object SyntacticTupleType extends SyntacticTupleExtractor {
- def apply(args: List[Tree]): Tree = args match {
- case Nil => self.Select(self.Ident(nme.scala_), tpnme.Unit)
- case _ =>
- require(TupleClass(args.length).exists, s"Tuples with ${args.length} arity aren't supported")
- AppliedTypeTree(Ident(TupleClass(args.length)), args)
+ def apply(args: List[Tree]): Tree = {
+ require(args.isEmpty || TupleClass(args.length).exists, s"Tuples with ${args.length} arity aren't supported")
+ gen.mkTupleType(args, flattenUnary = false)
}
def unapply(tree: Tree): Option[List[Tree]] = tree match {