Skip to content

Commit d7c1f8e

Browse files
committed
Add MiMa checks against LTS version
1 parent a9a75c1 commit d7c1f8e

File tree

2 files changed

+56
-2
lines changed

2 files changed

+56
-2
lines changed

project/Build.scala

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ object Build {
103103
*/
104104
val previousDottyVersion = "3.4.0-RC1"
105105

106+
/** Version against which we check binary compatibility. */
107+
val ltsDottyVersion = "3.3.0"
108+
106109
object CompatMode {
107110
final val BinaryCompatible = 0
108111
final val SourceAndBinaryCompatible = 1
@@ -496,6 +499,14 @@ object Build {
496499
}
497500
(thisProjectID.organization % crossedName % previousDottyVersion)
498501
},
502+
mimaPreviousArtifacts += {
503+
val thisProjectID = projectID.value
504+
val crossedName = thisProjectID.crossVersion match {
505+
case cv: Disabled => thisProjectID.name
506+
case cv: Binary => s"${thisProjectID.name}_${cv.prefix}3${cv.suffix}"
507+
}
508+
(thisProjectID.organization % crossedName % ltsDottyVersion)
509+
},
499510

500511
mimaCheckDirection := (compatMode match {
501512
case CompatMode.BinaryCompatible => "backward"

project/MiMaFilters.scala

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,28 @@ object MiMaFilters {
55
val LibraryBackwards: Map[String, Seq[ProblemFilter]] = Map(
66
// In general we should never have backwards incompatible changes in the library.
77
// Only exceptional cases should be added here.
8+
9+
// Breaking changes since last reference version
810
Build.previousDottyVersion -> Seq(
911
// This language feature was in 3.4.0-RC1 but will be removed in 3.4.0-RC2
1012
ProblemFilters.exclude[MissingFieldProblem]("scala.runtime.stdLibPatches.language#deprecated.ascriptionVarargsUnpacking"),
1113
ProblemFilters.exclude[MissingClassProblem]("scala.runtime.stdLibPatches.language$deprecated$ascriptionVarargsUnpacking$"),
12-
)
14+
),
15+
16+
// Breaking changes since last LTS
17+
Build.ltsDottyVersion -> Seq(
18+
// Quotes is assumed to only be implemented by the compiler and on the same version of the library
19+
// It is exceptionally OK to break this compatibility. If some other library decides to implement these,
20+
// they need to recompile and republish on each minor release.
21+
ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule.ValOrDefDefTypeTest"),
22+
ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule.ValOrDefDefMethods"),
23+
ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#FlagsModule.AbsOverride"),
24+
ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#SymbolMethods.paramVariance"),
25+
ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#TypeLambdaMethods.paramVariances"),
26+
ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#TypeReprMethods.dealiasKeepOpaques"),
27+
ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#defnModule.FunctionClass"),
28+
ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#defnModule.PolyFunctionClass"),
29+
),
1330
)
1431
val LibraryForward: Map[String, Seq[ProblemFilter]] = Map(
1532
// Additions that require a new minor version of the library
@@ -19,7 +36,33 @@ object MiMaFilters {
1936
ProblemFilters.exclude[MissingFieldProblem]("scala.runtime.stdLibPatches.language.3.5"),
2037
ProblemFilters.exclude[MissingClassProblem]("scala.runtime.stdLibPatches.language$3$u002E5$"),
2138
ProblemFilters.exclude[MissingClassProblem]("scala.runtime.stdLibPatches.language$3$u002E5$minusmigration$"),
22-
)
39+
),
40+
41+
// Additions since last LTS
42+
Build.ltsDottyVersion -> Seq(
43+
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.quoted.Quotes#reflectModule.ValOrDefDefMethods"),
44+
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.quoted.Quotes#reflectModule.ValOrDefDefTypeTest"),
45+
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.quoted.Quotes#reflectModule#defnModule.FunctionClass"),
46+
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.quoted.Quotes#reflectModule#defnModule.PolyFunctionClass"),
47+
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.quoted.Quotes#reflectModule#FlagsModule.AbsOverride"),
48+
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.quoted.Quotes#reflectModule#SymbolMethods.paramVariance"),
49+
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.quoted.Quotes#reflectModule#TypeLambdaMethods.paramVariances"),
50+
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.quoted.Quotes#reflectModule#TypeReprMethods.dealiasKeepOpaques"),
51+
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.runtime.Tuples.reverse"),
52+
ProblemFilters.exclude[MissingClassProblem]("scala.annotation.internal.AssignedNonLocally"),
53+
ProblemFilters.exclude[MissingClassProblem]("scala.annotation.internal.CaptureChecked"),
54+
ProblemFilters.exclude[MissingClassProblem]("scala.annotation.internal.reachCapability"),
55+
ProblemFilters.exclude[MissingClassProblem]("scala.annotation.unchecked.uncheckedCaptures"),
56+
ProblemFilters.exclude[MissingClassProblem]("scala.quoted.Quotes$reflectModule$ValOrDefDefMethods"),
57+
ProblemFilters.exclude[MissingClassProblem]("scala.runtime.stdLibPatches.language$3$u002E4$"),
58+
ProblemFilters.exclude[MissingClassProblem]("scala.runtime.stdLibPatches.language$3$u002E4$minusmigration$"),
59+
ProblemFilters.exclude[MissingClassProblem]("scala.runtime.stdLibPatches.language$experimental$clauseInterleaving$"),
60+
ProblemFilters.exclude[MissingClassProblem]("scala.runtime.stdLibPatches.language$experimental$relaxedExtensionImports$"),
61+
ProblemFilters.exclude[MissingFieldProblem]("scala.runtime.stdLibPatches.language.3.4-migration"),
62+
ProblemFilters.exclude[MissingFieldProblem]("scala.runtime.stdLibPatches.language.3.4"),
63+
ProblemFilters.exclude[MissingFieldProblem]("scala.runtime.stdLibPatches.language#experimental.clauseInterleaving"),
64+
ProblemFilters.exclude[MissingFieldProblem]("scala.runtime.stdLibPatches.language#experimental.relaxedExtensionImports"),
65+
),
2366
)
2467
val TastyCore: Seq[ProblemFilter] = Seq(
2568
)

0 commit comments

Comments
 (0)