From 5d90b1acb96a814e245d7373763d00ab660f1cc6 Mon Sep 17 00:00:00 2001 From: Dale Wijnand Date: Wed, 20 Apr 2022 11:27:19 +0100 Subject: [PATCH 1/2] Upgrade MiMa, configure @experimental & curtail filters --- project/Build.scala | 2 ++ project/MiMaFilters.scala | 20 +++++--------------- project/plugins.sbt | 2 +- 3 files changed, 8 insertions(+), 16 deletions(-) diff --git a/project/Build.scala b/project/Build.scala index 249c37efd98d..bc8a6157803d 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -439,6 +439,8 @@ object Build { case CompatMode.BinaryCompatible => "backward" case CompatMode.SourceAndBinaryCompatible => "both" }), + + mimaExcludeAnnotations += "scala.annotation.experimental", ) /** Projects -------------------------------------------------------------- */ diff --git a/project/MiMaFilters.scala b/project/MiMaFilters.scala index 6c68ce216685..b3e4aabb6376 100644 --- a/project/MiMaFilters.scala +++ b/project/MiMaFilters.scala @@ -3,28 +3,18 @@ import com.typesafe.tools.mima.core._ object MiMaFilters { val Library: Seq[ProblemFilter] = Seq( + ProblemFilters.exclude[Problem]("scala.runtime.*"), // KEEP: scala.runtime isn't public API + // APIs that must be added in 3.2.0 ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.runtime.QuoteUnpickler.unpickleExprV2"), ProblemFilters.exclude[DirectMissingMethodProblem]("scala.quoted.runtime.QuoteUnpickler.unpickleExprV2"), ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.runtime.QuoteUnpickler.unpickleTypeV2"), ProblemFilters.exclude[DirectMissingMethodProblem]("scala.quoted.runtime.QuoteUnpickler.unpickleTypeV2"), - // Experimental APIs that can be added in 3.2.0 - ProblemFilters.exclude[DirectMissingMethodProblem]("scala.runtime.Tuples.append"), - ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#SymbolMethods.asQuotes"), - ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#ClassDefModule.apply"), - ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#SymbolModule.newClass"), - ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#SymbolMethods.typeRef"), - ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#SymbolMethods.termRef"), - ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#TypeTreeModule.ref"), - ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#AppliedTypeModule.apply"), - // Experimental `MainAnnotation` APIs. Can be added in 3.3.0 or later. - ProblemFilters.exclude[MissingClassProblem]("scala.annotation.MainAnnotation"), - ProblemFilters.exclude[MissingClassProblem]("scala.annotation.MainAnnotation$"), - ProblemFilters.exclude[MissingClassProblem]("scala.annotation.MainAnnotation$Command"), - ProblemFilters.exclude[MissingClassProblem]("scala.annotation.MainAnnotation$CommandInfo"), - ProblemFilters.exclude[MissingClassProblem]("scala.annotation.MainAnnotation$ParameterInfo"), + // MiMa bug: classes nested in an experimental object should be ignored + ProblemFilters.exclude[MissingClassProblem]("scala.annotation.MainAnnotation$Info"), + ProblemFilters.exclude[MissingClassProblem]("scala.annotation.MainAnnotation$Parameter"), ProblemFilters.exclude[MissingClassProblem]("scala.annotation.MainAnnotation$ParameterAnnotation"), ) } diff --git a/project/plugins.sbt b/project/plugins.sbt index 9d743cec8252..f0b13c6cb7c4 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -14,4 +14,4 @@ addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.3.2") addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.9.0") -addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.9.0") +addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "1.1.0") From bfa51c7b9d0b8f7a493af246a0c095a8143ddb79 Mon Sep 17 00:00:00 2001 From: Dale Wijnand Date: Wed, 20 Apr 2022 16:05:43 +0100 Subject: [PATCH 2/2] Drop scala.runtime glob filter See PR comments: we don't want to break things by dropping APIs used by compiled code. --- project/MiMaFilters.scala | 2 -- 1 file changed, 2 deletions(-) diff --git a/project/MiMaFilters.scala b/project/MiMaFilters.scala index b3e4aabb6376..ef450919d806 100644 --- a/project/MiMaFilters.scala +++ b/project/MiMaFilters.scala @@ -3,8 +3,6 @@ import com.typesafe.tools.mima.core._ object MiMaFilters { val Library: Seq[ProblemFilter] = Seq( - ProblemFilters.exclude[Problem]("scala.runtime.*"), // KEEP: scala.runtime isn't public API - // APIs that must be added in 3.2.0 ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.runtime.QuoteUnpickler.unpickleExprV2"), ProblemFilters.exclude[DirectMissingMethodProblem]("scala.quoted.runtime.QuoteUnpickler.unpickleExprV2"),