diff options
author | Den Shabalin <den.shabalin@gmail.com> | 2013-10-30 13:24:05 +0100 |
---|---|---|
committer | Den Shabalin <den.shabalin@gmail.com> | 2013-11-12 14:04:41 +0100 |
commit | 80ddc958a2f7487b03d5334ac7bacf209fe98dd5 (patch) | |
tree | 2a540a15eb8e74dd2ad42e16db5a7d800e61a6c9 /src/reflect/scala/reflect/internal/BuildUtils.scala | |
parent | d2cee3a5e1d26ba27fd7912d48b1e7af0beb844a (diff) | |
download | scala-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.scala | 16 |
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 { |