@@ -20,6 +20,7 @@ import scala.build.internal.Regexes.scala3NightlyNicknameRegex
20
20
import scala .build .internal .{Constants , OsLibc , StableScalaVersion }
21
21
import scala .build .options .validation .BuildOptionsRule
22
22
import scala .build .{Artifacts , Logger , Os , Position , Positioned }
23
+ import scala .concurrent .duration ._
23
24
import scala .util .control .NonFatal
24
25
25
26
final case class BuildOptions (
@@ -334,10 +335,16 @@ final case class BuildOptions(
334
335
}
335
336
336
337
lazy val scalaParams : Either [BuildException , Option [ScalaParameters ]] =
337
- computeScalaParams(Constants .version)
338
+ computeScalaParams(Constants .version, finalCache).orElse(
339
+ // when the passed scala version is missed in the cache, we always force a cache refresh
340
+ // https://github.com/VirtusLab/scala-cli/issues/1090
341
+ computeScalaParams(Constants .version, finalCache.withTtl(0 .seconds))
342
+ )
338
343
339
- private [build] def computeScalaParams (scalaCliVersion : String )
340
- : Either [BuildException , Option [ScalaParameters ]] = either {
344
+ private [build] def computeScalaParams (
345
+ scalaCliVersion : String ,
346
+ cache : FileCache [Task ] = finalCache
347
+ ): Either [BuildException , Option [ScalaParameters ]] = either {
341
348
342
349
lazy val maxSupportedStableScalaVersions = latestSupportedStableScalaVersion(scalaCliVersion)
343
350
lazy val latestSupportedStableVersions = maxSupportedStableScalaVersions.map(_.repr)
@@ -349,46 +356,41 @@ final case class BuildOptions(
349
356
val sv = value {
350
357
svInput match {
351
358
case " 3.nightly" =>
352
- ScalaVersionUtil .GetNightly .scala3(finalCache )
359
+ ScalaVersionUtil .GetNightly .scala3(cache )
353
360
case scala3NightlyNicknameRegex(threeSubBinaryNum) =>
354
361
ScalaVersionUtil .GetNightly .scala3X(
355
362
threeSubBinaryNum,
356
- finalCache ,
363
+ cache ,
357
364
latestSupportedStableVersions
358
365
)
359
366
case " 2.nightly" | " 2.13.nightly" =>
360
- ScalaVersionUtil .GetNightly .scala2(" 2.13" , finalCache )
367
+ ScalaVersionUtil .GetNightly .scala2(" 2.13" , cache )
361
368
case " 2.12.nightly" =>
362
- ScalaVersionUtil .GetNightly .scala2(" 2.12" , finalCache )
369
+ ScalaVersionUtil .GetNightly .scala2(" 2.12" , cache )
363
370
case versionString if ScalaVersionUtil .isScala3Nightly(versionString) =>
364
371
ScalaVersionUtil .CheckNightly .scala3(
365
372
versionString,
366
- finalCache ,
373
+ cache ,
367
374
latestSupportedStableVersions
368
375
)
369
376
.map(_ => versionString)
370
377
case versionString if ScalaVersionUtil .isScala2Nightly(versionString) =>
371
378
ScalaVersionUtil .CheckNightly .scala2(
372
379
versionString,
373
- finalCache ,
380
+ cache ,
374
381
latestSupportedStableVersions
375
382
)
376
383
.map(_ => versionString)
377
384
case versionString if versionString.exists(_.isLetter) =>
378
- val allVersions =
379
- ScalaVersionUtil .allMatchingVersions(Some (versionString), finalCache)
380
385
ScalaVersionUtil .validateNonStable(
381
386
versionString,
382
- allVersions ,
387
+ cache ,
383
388
latestSupportedStableVersions
384
389
)
385
390
case versionString =>
386
- val allStableVersions =
387
- ScalaVersionUtil .allMatchingVersions(Some (versionString), finalCache)
388
- .filter(ScalaVersionUtil .isStable)
389
391
ScalaVersionUtil .validateStable(
390
392
versionString,
391
- allStableVersions ,
393
+ cache ,
392
394
latestSupportedStableVersions,
393
395
maxSupportedStableScalaVersions
394
396
)
0 commit comments