Skip to content

Commit 9953816

Browse files
smarterbishabosha
authored andcommitted
Start building Dotty against the 2.13 stdlib
This required some surgery in Build.scala: when compiling the non-bootstrapped compiler, we need the 2.12 stdlib on the JVM and compiler classpaths, because the current reference compiler cannot be run using the 2.13 stdlib, on the other hand when _running_ the non-bootstrapped compiler we need to the 2.13 stdlib on the compiler classpath to produce a bootstrapped compiler that links against 2.13. Upgrade the Scala 2 PickleFormat version to 5.2 (which is in fact identical to 5.0). Remove no longer needed -Ynew-collections flag and update the related test files.
1 parent f041b1d commit 9953816

File tree

12 files changed

+82
-106
lines changed

12 files changed

+82
-106
lines changed

compiler/src/dotty/tools/dotc/ast/Desugar.scala

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -610,8 +610,6 @@ object desugar {
610610
}
611611
}
612612

613-
// TODO When the Scala library is updated to 2.13.x add the override keyword to this generated method.
614-
// (because Product.scala was updated)
615613
def productElemNameMeth = {
616614
val methodParam = makeSyntheticParameter(tpt = scalaDot(tpnme.Int))
617615
val paramRef = Ident(methodParam.name)
@@ -625,7 +623,7 @@ object desugar {
625623
} :+ defaultCase
626624
val body = Match(paramRef, patternMatchCases)
627625
DefDef(nme.productElementName, Nil, List(List(methodParam)), javaDotLangDot(tpnme.String), body)
628-
.withFlags(if (defn.isNewCollections) Override | Synthetic else Synthetic)
626+
.withFlags(Override | Synthetic)
629627
}
630628

631629
if (isCaseClass)

compiler/src/dotty/tools/dotc/config/ScalaSettings.scala

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,6 @@ class ScalaSettings extends Settings.SettingGroup {
112112
val YdisableFlatCpCaching: Setting[Boolean] = BooleanSetting("-YdisableFlatCpCaching", "Do not cache flat classpath representation of classpath elements from jars across compiler instances.")
113113

114114
val Yscala2Unpickler: Setting[String] = StringSetting("-Yscala2-unpickler", "", "Control where we may get Scala 2 symbols from. This is either \"always\", \"never\", or a classpath.", "always")
115-
// TODO: Remove once we drop support for 2.12 standard library
116-
val YnewCollections: Setting[Boolean] = BooleanSetting("-Ynew-collections", "Inform the compiler that we are using the 2.13 collection library (even if the 2.12 library is on the classpath).")
117115

118116
val YnoImports: Setting[Boolean] = BooleanSetting("-Yno-imports", "Compile without importing scala.*, java.lang.*, or Predef.")
119117
val YnoInline: Setting[Boolean] = BooleanSetting("-Yno-inline", "Suppress inlining.")

compiler/src/dotty/tools/dotc/core/Definitions.scala

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -349,17 +349,9 @@ class Definitions {
349349
@tu lazy val Predef_classOf : Symbol = ScalaPredefModule.requiredMethod(nme.classOf)
350350
@tu lazy val Predef_undefined: Symbol = ScalaPredefModule.requiredMethod(nme.???)
351351

352-
def SubTypeClass(implicit ctx: Context): ClassSymbol =
353-
if (isNewCollections)
354-
ctx.requiredClass("scala.<:<")
355-
else
356-
ScalaPredefModule.requiredClass("<:<")
352+
def SubTypeClass(implicit ctx: Context): ClassSymbol = ctx.requiredClass("scala.<:<")
357353

358-
def DummyImplicitClass(implicit ctx: Context): ClassSymbol =
359-
if (isNewCollections)
360-
ctx.requiredClass("scala.DummyImplicit")
361-
else
362-
ScalaPredefModule.requiredClass("DummyImplicit")
354+
def DummyImplicitClass(implicit ctx: Context): ClassSymbol = ctx.requiredClass("scala.DummyImplicit")
363355

364356
@tu lazy val ScalaRuntimeModule: Symbol = ctx.requiredModule("scala.runtime.ScalaRunTime")
365357
def runtimeMethodRef(name: PreName): TermRef = ScalaRuntimeModule.requiredMethodRef(name)
@@ -385,10 +377,7 @@ class Definitions {
385377
def newGenericArrayMethod(implicit ctx: Context): TermSymbol = DottyArraysModule.requiredMethod("newGenericArray")
386378
def newArrayMethod(implicit ctx: Context): TermSymbol = DottyArraysModule.requiredMethod("newArray")
387379

388-
// TODO: Remove once we drop support for 2.12 standard library
389-
@tu lazy val isNewCollections: Boolean = ctx.settings.YnewCollections.value
390-
391-
def getWrapVarargsArrayModule: Symbol = if (isNewCollections) ScalaRuntimeModule else ScalaPredefModule
380+
def getWrapVarargsArrayModule: Symbol = ScalaRuntimeModule
392381

393382
// The set of all wrap{X, Ref}Array methods, where X is a value type
394383
val WrapArrayMethods: PerRun[collection.Set[Symbol]] = new PerRun({ implicit ctx =>
@@ -406,9 +395,7 @@ class Definitions {
406395
List(AnyClass.typeRef), EmptyScope)
407396
@tu lazy val SingletonType: TypeRef = SingletonClass.typeRef
408397

409-
@tu lazy val SeqType: TypeRef =
410-
if (isNewCollections) ctx.requiredClassRef("scala.collection.immutable.Seq")
411-
else ctx.requiredClassRef("scala.collection.Seq")
398+
@tu lazy val SeqType: TypeRef = ctx.requiredClassRef("scala.collection.immutable.Seq")
412399
def SeqClass given Context: ClassSymbol = SeqType.symbol.asClass
413400
@tu lazy val Seq_apply : Symbol = SeqClass.requiredMethod(nme.apply)
414401
@tu lazy val Seq_head : Symbol = SeqClass.requiredMethod(nme.head)
@@ -540,11 +527,7 @@ class Definitions {
540527

541528
@tu lazy val ThrowableType: TypeRef = ctx.requiredClassRef("java.lang.Throwable")
542529
def ThrowableClass given Context: ClassSymbol = ThrowableType.symbol.asClass
543-
@tu lazy val SerializableType: TypeRef =
544-
if (isNewCollections)
545-
JavaSerializableClass.typeRef
546-
else
547-
ctx.requiredClassRef("scala.Serializable")
530+
@tu lazy val SerializableType: TypeRef = JavaSerializableClass.typeRef
548531
def SerializableClass given Context: ClassSymbol = SerializableType.symbol.asClass
549532

550533
@tu lazy val JavaEnumClass: ClassSymbol = {

compiler/src/dotty/tools/dotc/core/unpickleScala2/PickleFormat.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ object PickleFormat {
117117
* len is remaining length after `len`.
118118
*/
119119
val MajorVersion: Int = 5
120-
val MinorVersion: Int = 0
120+
val MinorVersion: Int = 2
121121

122122
final val TERMname = 1
123123
final val TYPEname = 2

compiler/src/dotty/tools/dotc/typer/Implicits.scala

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,8 @@ object Implicits {
145145
val isFunctionInS2 =
146146
ctx.scala2Mode && tpw.derivesFrom(defn.FunctionClass(1)) && ref.symbol != defn.Predef_conforms
147147
val isImplicitConversion = tpw.derivesFrom(defn.ConversionClass)
148-
val isConforms = // An implementation of <:< counts as a view, except that $conforms is always omitted
149-
tpw.derivesFrom(defn.SubTypeClass) &&
150-
(defn.isNewCollections || // In 2.13, the type of `$conforms` changed from `A <:< A` to `A => A`
151-
ref.symbol != defn.Predef_conforms)
148+
// An implementation of <:< counts as a view
149+
val isConforms = tpw.derivesFrom(defn.SubTypeClass)
152150
val hasExtensions = resType match {
153151
case SelectionProto(name, _, _, _) =>
154152
tpw.memberBasedOnFlags(name, required = ExtensionMethod).exists

compiler/test/dotty/tools/dotc/CompilationTests.scala

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ class CompilationTests extends ParallelTesting {
5050
compileFile("tests/pos-special/completeFromSource/Test2.scala", defaultOptions.and("-sourcepath", "tests/pos-special")),
5151
compileFile("tests/pos-special/completeFromSource/Test3.scala", defaultOptions.and("-sourcepath", "tests/pos-special", "-scansource")),
5252
compileFile("tests/pos-special/completeFromSource/nested/Test4.scala", defaultOptions.and("-sourcepath", "tests/pos-special", "-scansource")),
53-
compileFile("tests/pos-special/repeatedArgs213.scala", defaultOptions.and("-Ynew-collections")),
5453
compileFilesInDir("tests/pos-special/fatal-warnings", defaultOptions.and("-Xfatal-warnings", "-feature")),
5554
compileList(
5655
"compileMixed",
@@ -174,7 +173,6 @@ class CompilationTests extends ParallelTesting {
174173
compileFile("tests/neg-custom-args/i3627.scala", allowDeepSubtypes),
175174
compileFile("tests/neg-custom-args/matchtype-loop.scala", allowDeepSubtypes),
176175
compileFile("tests/neg-custom-args/completeFromSource/nested/Test1.scala", defaultOptions.and("-sourcepath", "tests/neg-custom-args", "-scansource")),
177-
compileFile("tests/neg-custom-args/repeatedArgs213.scala", defaultOptions.and("-Ynew-collections")),
178176
compileList("duplicate source", List(
179177
"tests/neg-custom-args/toplevel-samesource/S.scala",
180178
"tests/neg-custom-args/toplevel-samesource/nested/S.scala"),

project/Build.scala

Lines changed: 53 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ object MyScalaJSPlugin extends AutoPlugin {
5858
}
5959

6060
object Build {
61-
val scalacVersion = "2.12.8"
6261
val referenceVersion = "0.17.0-RC1"
6362

6463
val baseVersion = "0.18.0"
@@ -71,6 +70,16 @@ object Build {
7170
val publishedDottyVersion = referenceVersion
7271
val publishedSbtDottyVersion = "0.3.3"
7372

73+
/** scala-library version required to compile Dotty.
74+
*
75+
* Both the non-bootstrapped and bootstrapped version should match, unless
76+
* we're in the process of upgrading to a new major version of
77+
* scala-library.
78+
*/
79+
def stdlibVersion(implicit mode: Mode): String = mode match {
80+
case NonBootstrapped => "2.12.8"
81+
case Bootstrapped => "2.13.0"
82+
}
7483

7584
val dottyOrganization = "ch.epfl.lamp"
7685
val dottyGithubUrl = "https://github.com/lampepfl/dotty"
@@ -144,7 +153,8 @@ object Build {
144153
"-feature",
145154
"-deprecation",
146155
"-unchecked",
147-
"-Xfatal-warnings",
156+
// TODO: reenable once we've fixed all the deprecation warnings.
157+
// "-Xfatal-warnings",
148158
"-encoding", "UTF8",
149159
"-language:existentials,higherKinds,implicitConversions"
150160
),
@@ -256,8 +266,8 @@ object Build {
256266
// Enforce that the only Scala 2 classfiles we unpickle come from scala-library
257267
/*
258268
scalacOptions ++= {
259-
val attList = (dependencyClasspath in `dotty-library` in Compile).value
260-
val scalaLib = findLib(attList, "scala-library")
269+
val cp = (dependencyClasspath in `dotty-library` in Compile).value
270+
val scalaLib = findLib(cp, "scala-library")
261271
Seq("-Yscala2-unpickler", scalaLib)
262272
},
263273
*/
@@ -268,10 +278,10 @@ object Build {
268278
// Compile using the non-bootstrapped and non-published dotty
269279
managedScalaInstance := false,
270280
scalaInstance := {
271-
val externalDeps = externalDependencyClasspath.in(`dotty-doc`, Compile).value
281+
val externalNonBootstrappedDeps = externalDependencyClasspath.in(`dotty-doc`, Compile).value
272282
def getExternalDep(name: String): File =
273-
externalDeps.find(_.get(artifact.key).exists(_.name == name))
274-
.getOrElse(throw new MessageOnlyException(s"Artifact for $name not found in $externalDeps"))
283+
externalNonBootstrappedDeps.find(_.get(artifact.key).exists(_.name == name))
284+
.getOrElse(throw new MessageOnlyException(s"Artifact for $name not found in $externalNonBootstrappedDeps"))
275285
.data
276286

277287
val scalaLibrary = getExternalDep("scala-library")
@@ -286,7 +296,7 @@ object Build {
286296
val dottyCompiler = packageBin.in(`dotty-compiler`, Compile).value
287297
val dottyDoc = packageBin.in(`dotty-doc`, Compile).value
288298

289-
val allJars = Seq(dottyLibrary, dottyInterfaces, dottyCompiler, dottyDoc) ++ externalDeps.map(_.data)
299+
val allJars = Seq(dottyLibrary, dottyInterfaces, dottyCompiler, dottyDoc) ++ externalNonBootstrappedDeps.map(_.data)
290300

291301
makeScalaInstance(
292302
state.value,
@@ -322,6 +332,15 @@ object Build {
322332

323333
/** Projects -------------------------------------------------------------- */
324334

335+
val dottyCompilerBootstrappedRef = LocalProject("dotty-compiler-bootstrapped")
336+
337+
/** External dependencies we may want to put on the compiler classpath. */
338+
def externalCompilerClasspathTask: Def.Initialize[Task[Def.Classpath]] =
339+
// Even if we're running the non-bootstrapped compiler, we want the
340+
// dependencies of the bootstrapped compiler since we want to put them on
341+
// the compiler classpath, not the JVM classpath.
342+
externalDependencyClasspath.in(dottyCompilerBootstrappedRef, Runtime)
343+
325344
// The root project:
326345
// - aggregates other projects so that "compile", "test", etc are run on all projects at once.
327346
// - publishes its own empty artifact "dotty" that depends on "dotty-library" and "dotty-compiler",
@@ -337,8 +356,8 @@ object Build {
337356
val dottyLib = jars("dotty-library")
338357
val dottyInterfaces = jars("dotty-interfaces")
339358
val otherDeps = (dependencyClasspath in Compile).value.map(_.data).mkString(File.pathSeparator)
340-
val attList = (dependencyClasspath in Runtime).value
341-
dottyLib + File.pathSeparator + findLib(attList, "scala-library-")
359+
val externalDeps = externalCompilerClasspathTask.value
360+
dottyLib + File.pathSeparator + findLib(externalDeps, "scala-library-")
342361
}
343362

344363
def dottyDocSettings(implicit mode: Mode) = Seq(
@@ -407,7 +426,7 @@ object Build {
407426
case Bootstrapped => `dotty-doc-bootstrapped`
408427
}
409428

410-
def findLib(attList: Seq[Attributed[File]], name: String) = attList
429+
def findLib(classpath: Def.Classpath, name: String) = classpath
411430
.map(_.data.getAbsolutePath)
412431
.find(_.contains(name))
413432
.toList.mkString(File.pathSeparator)
@@ -442,7 +461,6 @@ object Build {
442461
// get libraries onboard
443462
libraryDependencies ++= Seq(
444463
"org.scala-lang.modules" % "scala-asm" % "6.0.0-scala-1", // used by the backend
445-
"org.scala-lang" % "scala-library" % scalacVersion % "test",
446464
Dependencies.`compiler-interface`,
447465
"org.jline" % "jline-reader" % "3.9.0", // used by the REPL
448466
"org.jline" % "jline-terminal" % "3.9.0",
@@ -472,7 +490,7 @@ object Build {
472490
// http://grokbase.com/t/gg/simple-build-tool/135ke5y90p/sbt-setting-jvm-boot-paramaters-for-scala
473491
// packageAll should always be run before tests
474492
javaOptions ++= {
475-
val attList = (dependencyClasspath in Runtime).value
493+
val externalDeps = externalCompilerClasspathTask.value
476494
val jars = packageAll.value
477495

478496
val ci_build = // propagate if this is a ci build
@@ -499,11 +517,11 @@ object Build {
499517
"-Ddotty.tests.classes.dottyInterfaces=" + jars("dotty-interfaces"),
500518
"-Ddotty.tests.classes.dottyLibrary=" + jars("dotty-library"),
501519
"-Ddotty.tests.classes.dottyCompiler=" + jars("dotty-compiler"),
502-
"-Ddotty.tests.classes.compilerInterface=" + findLib(attList, "compiler-interface"),
503-
"-Ddotty.tests.classes.scalaLibrary=" + findLib(attList, "scala-library-"),
504-
"-Ddotty.tests.classes.scalaAsm=" + findLib(attList, "scala-asm"),
505-
"-Ddotty.tests.classes.jlineTerminal=" + findLib(attList, "jline-terminal"),
506-
"-Ddotty.tests.classes.jlineReader=" + findLib(attList, "jline-reader")
520+
"-Ddotty.tests.classes.compilerInterface=" + findLib(externalDeps, "compiler-interface"),
521+
"-Ddotty.tests.classes.scalaLibrary=" + findLib(externalDeps, "scala-library-"),
522+
"-Ddotty.tests.classes.scalaAsm=" + findLib(externalDeps, "scala-asm"),
523+
"-Ddotty.tests.classes.jlineTerminal=" + findLib(externalDeps, "jline-terminal"),
524+
"-Ddotty.tests.classes.jlineReader=" + findLib(externalDeps, "jline-reader")
507525
)
508526

509527
jarOpts ::: tuning ::: agentOptions ::: ci_build
@@ -541,10 +559,10 @@ object Build {
541559

542560
dotr := {
543561
val args: List[String] = spaceDelimited("<arg>").parsed.toList
544-
val attList = (dependencyClasspath in Runtime).value
562+
val externalDeps = externalCompilerClasspathTask.value
545563
val jars = packageAll.value
546564

547-
val scalaLib = findLib(attList, "scala-library")
565+
val scalaLib = findLib(externalDeps, "scala-library")
548566
val dottyLib = jars("dotty-library")
549567

550568
def run(args: List[String]): Unit = {
@@ -558,7 +576,7 @@ object Build {
558576
println("Couldn't find scala-library on classpath, please run using script in bin dir instead")
559577
} else if (args.contains("-with-compiler")) {
560578
val args1 = args.filter(_ != "-with-compiler")
561-
val asm = findLib(attList, "scala-asm")
579+
val asm = findLib(externalDeps, "scala-asm")
562580
val dottyCompiler = jars("dotty-compiler")
563581
val dottyInterfaces = jars("dotty-interfaces")
564582
run(insertClasspathInArgs(args1, List(dottyCompiler, dottyInterfaces, asm).mkString(File.pathSeparator)))
@@ -577,7 +595,7 @@ object Build {
577595
ivyConfigurations += SourceDeps.hide,
578596
transitiveClassifiers := Seq("sources"),
579597
libraryDependencies +=
580-
("org.scala-js" %% "scalajs-ir" % scalaJSVersion % "sourcedeps").withDottyCompat(scalaVersion.value),
598+
("org.scala-js" % "scalajs-ir_2.13.0-RC2" % scalaJSVersion % "sourcedeps").withDottyCompat(scalaVersion.value),
581599
sourceGenerators in Compile += Def.task {
582600
val s = streams.value
583601
val cacheDir = s.cacheDirectory
@@ -606,9 +624,9 @@ object Build {
606624

607625
def runCompilerMain(repl: Boolean = false) = Def.inputTaskDyn {
608626
val log = streams.value.log
609-
val attList = (dependencyClasspath in Runtime).value
627+
val externalDeps = externalCompilerClasspathTask.value
610628
val jars = packageAll.value
611-
val scalaLib = findLib(attList, "scala-library-")
629+
val scalaLib = findLib(externalDeps, "scala-library-")
612630
val dottyLib = jars("dotty-library")
613631
val dottyCompiler = jars("dotty-compiler")
614632
val args0: List[String] = spaceDelimited("<arg>").parsed.toList
@@ -634,7 +652,7 @@ object Build {
634652
log.error("-with-compiler should only be used with a bootstrapped compiler")
635653
}
636654
val dottyInterfaces = jars("dotty-interfaces")
637-
val asm = findLib(attList, "scala-asm")
655+
val asm = findLib(externalDeps, "scala-asm")
638656
extraClasspath ++= Seq(dottyCompiler, dottyInterfaces, asm)
639657
}
640658

@@ -696,8 +714,6 @@ object Build {
696714

697715
// Settings shared between dotty-library and dotty-library-bootstrapped
698716
lazy val dottyLibrarySettings = Seq(
699-
libraryDependencies += "org.scala-lang" % "scala-library" % scalacVersion,
700-
701717
// Needed so that the library sources are visible when `dotty.tools.dotc.core.Definitions#init` is called
702718
scalacOptions in Compile ++= Seq("-sourcepath", (scalaSource in Compile).value.getAbsolutePath),
703719

@@ -767,7 +783,10 @@ object Build {
767783
scalaSource in Test := baseDirectory.value,
768784
javaSource in Test := baseDirectory.value,
769785

770-
libraryDependencies += (Dependencies.`zinc-api-info` % Test).withDottyCompat(scalaVersion.value)
786+
// Tests disabled until zinc-api-info cross-compiles with 2.13,
787+
// alternatively we could just copy in sources the part of zinc-api-info we need.
788+
sources in Test := Seq(),
789+
// libraryDependencies += (Dependencies.`zinc-api-info` % Test).withDottyCompat(scalaVersion.value)
771790
)
772791

773792
lazy val `dotty-language-server` = project.in(file("language-server")).
@@ -949,20 +968,20 @@ object Build {
949968
// depend on it via dotty-library, because sbt may rewrite dependencies
950969
// (see https://github.com/sbt/sbt/pull/2634), but won't rewrite the direct
951970
// dependencies of scala-library (see https://github.com/sbt/sbt/pull/2897)
952-
libraryDependencies += "org.scala-lang" % "scala-library" % scalacVersion
971+
libraryDependencies += "org.scala-lang" % "scala-library" % stdlibVersion(Bootstrapped)
953972
)
954973

955974
lazy val `scala-compiler` = project.
956975
settings(commonDummySettings)
957976
lazy val `scala-reflect` = project.
958977
settings(commonDummySettings).
959978
settings(
960-
libraryDependencies := Seq("org.scala-lang" % "scala-reflect" % scalacVersion)
979+
libraryDependencies := Seq("org.scala-lang" % "scala-reflect" % stdlibVersion(Bootstrapped))
961980
)
962981
lazy val scalap = project.
963982
settings(commonDummySettings).
964983
settings(
965-
libraryDependencies := Seq("org.scala-lang" % "scalap" % scalacVersion)
984+
libraryDependencies := Seq("org.scala-lang" % "scalap" % stdlibVersion(Bootstrapped))
966985
)
967986

968987

@@ -1210,6 +1229,9 @@ object Build {
12101229
settings(dottyCompilerSettings)
12111230

12121231
def asDottyLibrary(implicit mode: Mode): Project = project.withCommonSettings.
1232+
settings(
1233+
libraryDependencies += "org.scala-lang" % "scala-library" % stdlibVersion
1234+
).
12131235
settings(dottyLibrarySettings)
12141236

12151237
def asDottyDoc(implicit mode: Mode): Project = project.withCommonSettings.

project/plugins.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
// Scala IDE project file generator
66
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.2.4")
77

8-
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.0.0-M7")
8+
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.0.0-M8")
99

1010
addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "2.1")
1111

sbt-dotty/src/dotty/tools/sbtplugin/DottyPlugin.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ object DottyPlugin extends AutoPlugin {
9494
if (name != "dotty" && name != "dotty-library" && name != "dotty-compiler")
9595
moduleID.crossVersion match {
9696
case _: librarymanagement.Binary if scalaVersion.startsWith("0.") =>
97-
moduleID.cross(CrossVersion.constant("2.12"))
97+
moduleID.cross(CrossVersion.constant("2.13"))
9898
case _ =>
9999
moduleID
100100
}

tests/neg-custom-args/repeatedArgs213.scala renamed to tests/neg/repeatedArgs213.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import scala.collection.{immutable, mutable}
22
import java.nio.file.Paths
33

4-
// Start of Test
54
class repeatedArgs {
65
def bar(xs: String*): Int = xs.length
76

0 commit comments

Comments
 (0)