From 27bc034eaf9b310214d75e3d9cd2fff4d99d544c Mon Sep 17 00:00:00 2001 From: Allan Renucci Date: Fri, 29 Jun 2018 17:58:31 +0200 Subject: [PATCH 1/2] Resolve SeqType based in alias defined in scala package object - in 2.12: scala.collection.Seq - in 2.13: scala.collection.immutable.Seq Revert when we drop support for 2.12? --- compiler/src/dotty/tools/dotc/core/Definitions.scala | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/compiler/src/dotty/tools/dotc/core/Definitions.scala b/compiler/src/dotty/tools/dotc/core/Definitions.scala index 77cca3dffe85..21c5a1a6773e 100644 --- a/compiler/src/dotty/tools/dotc/core/Definitions.scala +++ b/compiler/src/dotty/tools/dotc/core/Definitions.scala @@ -400,7 +400,15 @@ class Definitions { List(AnyClass.typeRef), EmptyScope) lazy val SingletonType: TypeRef = SingletonClass.typeRef - lazy val SeqType: TypeRef = ctx.requiredClassRef("scala.collection.Seq") + lazy val SeqType: TypeRef = { + // We load SeqType from the alias in scala package object + // - in 2.12: scala.collection.Seq + // - in 2.13: scala.collection.immutable.Seq + val alias = ctx.base.staticRef("scala.Seq".toTypeName).requiredSymbol(_.isAliasType) + alias.info.classSymbol.typeRef + } + + // lazy val SeqType: TypeRef = ctx.requiredClassRef("scala.collection.Seq") def SeqClass(implicit ctx: Context) = SeqType.symbol.asClass lazy val Seq_applyR = SeqClass.requiredMethodRef(nme.apply) def Seq_apply(implicit ctx: Context) = Seq_applyR.symbol From 01427b9a0def5281ba9773abe0ae70753e0df853 Mon Sep 17 00:00:00 2001 From: Allan Renucci Date: Fri, 29 Jun 2018 17:59:55 +0200 Subject: [PATCH 2/2] More tests for repeated --- tests/pos/repeatedArgs.scala | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/tests/pos/repeatedArgs.scala b/tests/pos/repeatedArgs.scala index f9abb4aee70e..d11f270824fd 100644 --- a/tests/pos/repeatedArgs.scala +++ b/tests/pos/repeatedArgs.scala @@ -1,3 +1,15 @@ object testRepeated { - def foo = java.lang.System.out.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d") + def foo = java.lang.System.out.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d") + + def bar(xs: Int*): Int = xs.length + def bat(xs: scala.Seq[Int]): Int = xs.length + + def test(xs: List[Int]): Unit = { + bar(1, 2, 3) + bar(xs: _*) + + val List(_, ys: _*) = xs + bar(ys: _*) + bat(ys) + } }