@@ -317,69 +317,82 @@ final case class BuildOptions(
317317 scalaOptions.defaultScalaVersion.getOrElse(Constants .defaultScalaVersion)
318318 )
319319
320- val svOpt : Option [String ] = scalaOptions.scalaVersion match {
321- case Some (MaybeScalaVersion (None )) =>
322- None
323- // Do not validate Scala version in offline mode
324- case Some (MaybeScalaVersion (Some (svInput))) if internal.offline.getOrElse(false ) =>
325- Some (svInput)
326- // Do not validate Scala version if it is a default one
327- case Some (MaybeScalaVersion (Some (svInput))) if defaultVersions.contains(svInput) =>
328- Some (svInput)
329- case Some (MaybeScalaVersion (Some (svInput))) =>
330- val sv = value {
331- svInput match {
332- case sv if ScalaVersionUtil .scala3Lts.contains(sv) =>
333- ScalaVersionUtil .validateStable(
334- Constants .scala3LtsPrefix,
335- cache,
336- repositories
337- )
338- case sv if ScalaVersionUtil .scala2Lts.contains(sv) =>
339- Left (new ScalaVersionError (
340- s " Invalid Scala version: $sv. There is no official LTS version for Scala 2. "
341- ))
342- case sv if sv == ScalaVersionUtil .scala3Nightly =>
343- ScalaVersionUtil .GetNightly .scala3(cache)
344- case scala3NightlyNicknameRegex(threeSubBinaryNum) =>
345- ScalaVersionUtil .GetNightly .scala3X(
346- threeSubBinaryNum,
347- cache
348- )
349- case vs if ScalaVersionUtil .scala213Nightly.contains(vs) =>
350- ScalaVersionUtil .GetNightly .scala2(" 2.13" , cache)
351- case sv if sv == ScalaVersionUtil .scala212Nightly =>
352- ScalaVersionUtil .GetNightly .scala2(" 2.12" , cache)
353- case versionString if ScalaVersionUtil .isScala3Nightly(versionString) =>
354- ScalaVersionUtil .CheckNightly .scala3(
355- versionString,
356- cache
357- )
358- .map(_ => versionString)
359- case versionString if ScalaVersionUtil .isScala2Nightly(versionString) =>
360- ScalaVersionUtil .CheckNightly .scala2(
361- versionString,
362- cache
363- )
364- .map(_ => versionString)
365- case versionString if versionString.exists(_.isLetter) =>
366- ScalaVersionUtil .validateNonStable(
367- versionString,
368- cache,
369- repositories
370- )
371- case versionString =>
372- ScalaVersionUtil .validateStable(
373- versionString,
374- cache,
375- repositories
376- )
320+ val svOpt : Option [String ] =
321+ scalaOptions.scalaVersion -> scalaOptions.defaultScalaVersion match {
322+ case (Some (MaybeScalaVersion (None )), _) =>
323+ None
324+ // Do not validate Scala version in offline mode
325+ case (Some (MaybeScalaVersion (Some (svInput))), _) if internal.offline.getOrElse(false ) =>
326+ Some (svInput)
327+ // Do not validate Scala version if it is a default one
328+ case (Some (MaybeScalaVersion (Some (svInput))), _) if defaultVersions.contains(svInput) =>
329+ Some (svInput)
330+ case (Some (MaybeScalaVersion (Some (svInput))), Some (predefinedScalaVersion))
331+ if predefinedScalaVersion.startsWith(svInput) &&
332+ (svInput == " 3" || svInput == Constants .scala3NextPrefix ||
333+ svInput == " 2.13" || svInput == " 2.12" ) =>
334+ Some (predefinedScalaVersion)
335+ case (Some (MaybeScalaVersion (Some (svInput))), None )
336+ if svInput == " 3" || svInput == Constants .scala3NextPrefix =>
337+ Some (Constants .defaultScalaVersion)
338+ case (Some (MaybeScalaVersion (Some (svInput))), None ) if svInput == " 2.13" =>
339+ Some (Constants .defaultScala213Version)
340+ case (Some (MaybeScalaVersion (Some (svInput))), None ) if svInput == " 2.12" =>
341+ Some (Constants .defaultScala212Version)
342+ case (Some (MaybeScalaVersion (Some (svInput))), _) =>
343+ val sv = value {
344+ svInput match {
345+ case sv if ScalaVersionUtil .scala3Lts.contains(sv) =>
346+ ScalaVersionUtil .validateStable(
347+ Constants .scala3LtsPrefix,
348+ cache,
349+ repositories
350+ )
351+ case sv if ScalaVersionUtil .scala2Lts.contains(sv) =>
352+ Left (new ScalaVersionError (
353+ s " Invalid Scala version: $sv. There is no official LTS version for Scala 2. "
354+ ))
355+ case sv if sv == ScalaVersionUtil .scala3Nightly =>
356+ ScalaVersionUtil .GetNightly .scala3(cache)
357+ case scala3NightlyNicknameRegex(threeSubBinaryNum) =>
358+ ScalaVersionUtil .GetNightly .scala3X(
359+ threeSubBinaryNum,
360+ cache
361+ )
362+ case vs if ScalaVersionUtil .scala213Nightly.contains(vs) =>
363+ ScalaVersionUtil .GetNightly .scala2(" 2.13" , cache)
364+ case sv if sv == ScalaVersionUtil .scala212Nightly =>
365+ ScalaVersionUtil .GetNightly .scala2(" 2.12" , cache)
366+ case versionString if ScalaVersionUtil .isScala3Nightly(versionString) =>
367+ ScalaVersionUtil .CheckNightly .scala3(
368+ versionString,
369+ cache
370+ )
371+ .map(_ => versionString)
372+ case versionString if ScalaVersionUtil .isScala2Nightly(versionString) =>
373+ ScalaVersionUtil .CheckNightly .scala2(
374+ versionString,
375+ cache
376+ )
377+ .map(_ => versionString)
378+ case versionString if versionString.exists(_.isLetter) =>
379+ ScalaVersionUtil .validateNonStable(
380+ versionString,
381+ cache,
382+ repositories
383+ )
384+ case versionString =>
385+ ScalaVersionUtil .validateStable(
386+ versionString,
387+ cache,
388+ repositories
389+ )
390+ }
377391 }
378- }
379- Some (sv)
380-
381- case None => Some (scalaOptions.defaultScalaVersion.getOrElse(Constants .defaultScalaVersion))
382- }
392+ Some (sv)
393+ case (None , Some (predefinedScalaVersion)) => Some (predefinedScalaVersion)
394+ case _ => Some (Constants .defaultScalaVersion)
395+ }
383396
384397 svOpt match {
385398 case Some (scalaVersion) =>
0 commit comments