@@ -36,16 +36,16 @@ def crossSetting[A](
36
36
logo := Welcome .logo
37
37
usefulTasks := Welcome .tasks
38
38
39
- ThisBuild / scalafixScalaBinaryVersion := scalaBinaryVersion.value
39
+ ThisBuild / scalafixScalaBinaryVersion := " 2.13 "
40
40
41
41
inThisBuild(
42
42
List (
43
43
version ~= { dynVer =>
44
44
if (isCI) dynVer
45
45
else localSnapshotVersion // only for local publishing
46
46
},
47
- scalaVersion := V .scala213 ,
48
- crossScalaVersions := List (V .scala213 ),
47
+ scalaVersion := V .scala3 ,
48
+ crossScalaVersions := List (V .scala3 ),
49
49
organization := " org.scalameta" ,
50
50
licenses := Seq (
51
51
" Apache-2.0" -> url(" http://www.apache.org/licenses/LICENSE-2.0" )
@@ -128,7 +128,7 @@ commands ++= Seq(
128
128
runMtagsPublishLocal(st, v, localSnapshotVersion)
129
129
}
130
130
" interfaces/publishLocal" ::
131
- s " ++ ${V .scala213 } metals/publishLocal " ::
131
+ s " ++ ${V .scala3 } metals/publishLocal " ::
132
132
" mtags-java/publishLocal" ::
133
133
publishMtags
134
134
},
@@ -218,6 +218,27 @@ val sharedSettings = sharedJavacOptions ++ sharedScalacOptions ++ List(
218
218
)
219
219
),
220
220
),
221
+ excludeDependencies ++= crossSetting(
222
+ scalaVersion.value,
223
+ if3 = {
224
+ // Exclude cross published version dependencies leading to conflicts in Scala 3 vs 2.13
225
+ // When using Scala 3 exclude Scala 2.13 standard native libraries,
226
+ // when using Scala 2.13 exclude Scala 3 standard native libraries
227
+ // Use full name, Maven style published artifacts cannot use artifact/cross version for exclusion rules
228
+ List (
229
+ ExclusionRule ()
230
+ .withOrganization(" org.scala-lang.modules" )
231
+ .withName(
232
+ " scala-collection-compat_2.13"
233
+ ),
234
+ ExclusionRule ()
235
+ .withOrganization(" org.scala-lang.modules" )
236
+ .withName(
237
+ " scala-xml_2.13"
238
+ ),
239
+ )
240
+ },
241
+ ),
221
242
scalacOptions ++= lintingOptions(scalaVersion.value),
222
243
)
223
244
@@ -284,21 +305,19 @@ def multiScalaDirectories(root: File, scalaVersion: String) = {
284
305
result.toList
285
306
}
286
307
287
- def scala3ScalametaDependency =
288
- (" org.scalameta" %% " scalameta" % V .scalameta)
289
- .cross(CrossVersion .for3Use2_13)
290
- .exclude(" org.scala-lang" , " scala-reflect" )
291
- .exclude(" org.scala-lang" , " scala-compiler" )
292
- // the correct one should be brought in by the scala 3 compiler
293
- .exclude(" org.scala-lang" , " scala-library" )
294
- .exclude(
295
- " com.lihaoyi" ,
296
- " geny_2.13" ,
297
- ) // avoid 2.13 and 3 on the classpath since we rely on it directly
298
- .exclude(
299
- " com.lihaoyi" ,
300
- " sourcecode_2.13" ,
301
- ) // avoid 2.13 and 3 on the classpath since it comes in via pprint
308
+ def scalametaDependency = (" org.scalameta" %% " scalameta" % V .scalameta)
309
+ .cross(CrossVersion .for3Use2_13)
310
+ .exclude(" org.scala-lang" , " scala-reflect" )
311
+ .exclude(" org.scala-lang" , " scala-compiler" )
312
+ .exclude(" org.scala-lang.modules" , " scala-collection-compat" )
313
+ .exclude(
314
+ " com.lihaoyi" ,
315
+ " geny_2.13" ,
316
+ ) // avoid 2.13 and 3 on the classpath since we rely on it directly
317
+ .exclude(
318
+ " com.lihaoyi" ,
319
+ " sourcecode_2.13" ,
320
+ )
302
321
303
322
val mtagsSettings = List (
304
323
crossScalaVersions := V .supportedScalaVersions,
@@ -331,7 +350,7 @@ val mtagsSettings = List(
331
350
),
332
351
if3 = List (
333
352
" org.scala-lang" %% " scala3-compiler" % scalaVersion.value,
334
- scala3ScalametaDependency ,
353
+ scalametaDependency ,
335
354
),
336
355
),
337
356
},
@@ -360,22 +379,22 @@ val mtagsSettings = List(
360
379
},
361
380
)
362
381
363
- lazy val mtags3 = project
382
+ lazy val mtags2 = project
364
383
.in(file(" .mtags" ))
365
384
.settings(
366
385
Compile / unmanagedSourceDirectories := Seq (),
367
386
sharedSettings,
368
387
mtagsSettings,
369
388
Compile / unmanagedSourceDirectories += (ThisBuild / baseDirectory).value / " mtags" / " src" / " main" / " scala" ,
370
389
Compile / unmanagedSourceDirectories += (ThisBuild / baseDirectory).value / " mtags-shared" / " src" / " main" / " scala" ,
371
- Compile / unmanagedSourceDirectories += (ThisBuild / baseDirectory).value / " mtags-shared" / " src" / " main" / " scala-3 " ,
372
- moduleName := " mtags3 " ,
373
- scalaVersion := V .scala3 ,
374
- target := (ThisBuild / baseDirectory).value / " mtags" / " target" / " target3 " ,
390
+ Compile / unmanagedSourceDirectories += (ThisBuild / baseDirectory).value / " mtags-shared" / " src" / " main" / " scala-2.13 " ,
391
+ moduleName := " mtags2 " ,
392
+ scalaVersion := V .scala213 ,
393
+ target := (ThisBuild / baseDirectory).value / " mtags" / " target" / " target2 " ,
375
394
publish / skip := true ,
376
395
libraryDependencies += V .guava,
377
396
scalafixConfig := Some (
378
- (ThisBuild / baseDirectory).value / " .scalafix3 .conf"
397
+ (ThisBuild / baseDirectory).value / " .scalafix2 .conf"
379
398
),
380
399
)
381
400
.dependsOn(interfaces)
@@ -421,7 +440,8 @@ lazy val metals = project
421
440
// for BSP
422
441
" org.scala-sbt.ipcsocket" % " ipcsocket" % " 1.6.2" ,
423
442
" ch.epfl.scala" % " bsp4j" % V .bsp,
424
- " ch.epfl.scala" %% " bloop-launcher-core" % V .bloop,
443
+ (" ch.epfl.scala" %% " bloop-launcher-core" % V .bloop)
444
+ .cross(CrossVersion .for3Use2_13),
425
445
// for LSP
426
446
V .lsp4j,
427
447
// for DAP
@@ -451,14 +471,20 @@ lazy val metals = project
451
471
// Scala dependencies
452
472
// ==================
453
473
" org.scalameta" % " mdoc-interfaces" % V .mdoc,
454
- " org.scalameta" %% " scalafmt-dynamic" % V .scalafmt,
474
+ (" org.scalameta" %% " scalafmt-dynamic" % V .scalafmt)
475
+ .cross(CrossVersion .for3Use2_13),
476
+ " com.googlecode.java-diff-utils" % " diffutils" % " 1.3.0" ,
455
477
" ch.epfl.scala" % " scalafix-interfaces" % V .scalafix,
456
478
// For reading classpaths.
457
479
// for fetching ch.epfl.scala:bloop-frontend and other library dependencies
458
480
" io.get-coursier" % " interface" % V .coursierInterfaces,
459
481
// for comparing versions && fetching from sbt maven repository
460
- " io.get-coursier" %% " coursier" % V .coursier,
461
- " io.get-coursier" %% " coursier-sbt-maven-repository" % V .coursier,
482
+ (" io.get-coursier" %% " versions" % " 0.3.2" )
483
+ .cross(CrossVersion .for3Use2_13),
484
+ (" io.get-coursier" %% " coursier-sbt-maven-repository" % V .coursier)
485
+ .cross(CrossVersion .for3Use2_13),
486
+ (" io.get-coursier" %% " coursier" % V .coursier)
487
+ .cross(CrossVersion .for3Use2_13),
462
488
// for logging
463
489
" com.outr" %% " scribe" % V .scribe,
464
490
" com.outr" %% " scribe-file" % V .scribe,
@@ -467,13 +493,11 @@ lazy val metals = project
467
493
" com.lihaoyi" %% " ujson" % " 3.3.1" ,
468
494
// For fetching projects' templates
469
495
" com.lihaoyi" %% " requests" % " 0.8.2" ,
470
- // for producing SemanticDB from Scala source files, to be sure we want the same version of scalameta
471
- " org.scalameta" %% " scalameta" % V .semanticdb(scalaVersion.value),
472
- " org.scalameta" % " semanticdb-scalac-core" % V .semanticdb(
473
- scalaVersion.value
474
- ) cross CrossVersion .full,
496
+ // for producing SemanticDB from Scala source files
497
+ scalametaDependency,
475
498
// For starting Ammonite
476
- " io.github.alexarchambault.ammonite" %% " ammonite-runner" % " 0.4.0" ,
499
+ (" io.github.alexarchambault.ammonite" %% " ammonite-runner" % " 0.4.0" )
500
+ .cross(CrossVersion .for3Use2_13),
477
501
" org.scala-lang.modules" %% " scala-xml" % " 2.3.0" ,
478
502
" org.scala-lang.modules" %% " scala-parallel-collections" % " 1.0.4" ,
479
503
(" org.virtuslab.scala-cli" % " scala-cli-bsp" % V .scalaCli)
@@ -543,6 +567,7 @@ lazy val input = project
543
567
.in(file(" tests/input" ))
544
568
.settings(
545
569
sharedSettings,
570
+ scalaVersion := V .scala213,
546
571
scalacOptions -= " -Xsource:3" ,
547
572
publish / skip := true ,
548
573
libraryDependencies ++= List (
@@ -719,6 +744,7 @@ lazy val metalsDependencies = project
719
744
.in(file(" target/.dependencies" ))
720
745
.settings(
721
746
publish / skip := true ,
747
+ scalaVersion := V .scala213,
722
748
// silent the intransitive dependency warning
723
749
publishMavenStyle := false ,
724
750
libraryDependencies ++= List (
@@ -749,8 +775,10 @@ lazy val unit = project
749
775
sharedSettings,
750
776
Test / javaOptions += " -Xmx2G" ,
751
777
libraryDependencies ++= List (
752
- " io.get-coursier" %% " coursier" % V .coursier, // for jars
753
- " ch.epfl.scala" %% " bloop-config" % V .bloopConfig,
778
+ (" io.get-coursier" %% " coursier" % V .coursier)
779
+ .cross(CrossVersion .for3Use2_13), // for jars
780
+ (" ch.epfl.scala" %% " bloop-config" % V .bloopConfig)
781
+ .cross(CrossVersion .for3Use2_13),
754
782
" org.scalameta" %% " munit" % V .munit,
755
783
),
756
784
buildInfoPackage := " tests" ,
0 commit comments