Skip to content

Commit

Permalink
Fix binary compatibility issues that appeared in 1.12.3 (#165)
Browse files Browse the repository at this point in the history
  • Loading branch information
rickynils committed May 21, 2015
1 parent 3cb68e9 commit 333307d
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 50 deletions.
55 changes: 8 additions & 47 deletions project/MimaSettings.scala
Expand Up @@ -8,7 +8,7 @@ object MimaSettings {
import mima.plugin.MimaPlugin.mimaDefaultSettings

lazy val settings = mimaDefaultSettings ++ Seq(
previousArtifact := Some("org.scalacheck" % "scalacheck_2.11" % "1.12.0"),
previousArtifact := Some("org.scalacheck" % "scalacheck_2.11" % "1.12.3"),
binaryIssueFilters :=
removedPrivateMethods.map(exclude[MissingMethodProblem](_)) ++
newMethods.map(exclude[MissingMethodProblem](_)) ++
Expand All @@ -17,61 +17,22 @@ object MimaSettings {
)

private def newMethods = Seq(
"org.scalacheck.Gen.collect"
"org.scalacheck.Test#Parameters.toString"
)

private def removedPrivateMethods = Seq(
"org.scalacheck.Arbitrary.org$scalacheck$Arbitrary$$chooseBigInt$1",
"org.scalacheck.Arbitrary.org$scalacheck$Arbitrary$$chooseReallyBigInt$1",
"org.scalacheck.Test.org$scalacheck$Test$$mergeResults$1"
// TestParams was private[scalacheck] in 1.12.3, which was a mistake
"org.scalacheck.Test#Parameters.org$scalacheck$Test$Parameters$_setter_$org$scalacheck$Test$Parameters$$cp_=",
"org.scalacheck.Test#Parameters.TestParams",
"org.scalacheck.Test#Parameters.org$scalacheck$Test$Parameters$$TestParams",
"org.scalacheck.Test#Parameters#TestParams.org$scalacheck$Test$Parameters$_setter_$org$scalacheck$Test$Parameters$$cp_=",
"org.scalacheck.Test#Parameters#TestParams.TestParams"
)

private def removedPrivateClasses = Seq(
"org.scalacheck.Test$Parameters$cp$",
"org.scalacheck.Test$Parameters$cp"
)

private def otherProblems = Seq(
// The ScalaCheckFramework class has changed in incompatible ways,
// but hopefully this isn't a problem in practice
exclude[FinalClassProblem]("org.scalacheck.ScalaCheckFramework"),
exclude[MissingMethodProblem]("org.scalacheck.ScalaCheckFramework.tests"),
exclude[MissingMethodProblem]("org.scalacheck.ScalaCheckFramework.testRunner"),
exclude[MissingMethodProblem]("org.scalacheck.ScalaCheckFramework.testRunner"),

// Properties.include has been changed (overloaded method instead of default
// parameter) but hopefully it doesn't break code
exclude[MissingMethodProblem]("org.scalacheck.Properties.include$default$2"),

// Changes to private classes/methods

exclude[IncompatibleResultTypeProblem]("org.scalacheck.Test#Parameters.org$scalacheck$Test$Parameters$$cp"),
exclude[MissingMethodProblem]("org.scalacheck.Test#Parameters.org$scalacheck$Test$Parameters$$cp"),
exclude[MissingMethodProblem]("org.scalacheck.Test#Parameters.org$scalacheck$Test$Parameters$_setter_$org$scalacheck$Test$Parameters$$cp_="),
exclude[MissingMethodProblem]("org.scalacheck.Test#Parameters.TestParams"),

exclude[MissingClassProblem]("org.scalacheck.util.CmdLineParser$OptVal"),
exclude[MissingClassProblem]("org.scalacheck.util.CmdLineParser$OptVal$"),
exclude[MissingMethodProblem]("org.scalacheck.util.CmdLineParser#OptMap.update"),
exclude[MissingMethodProblem]("org.scalacheck.util.CmdLineParser#OptMap.this"),
exclude[MissingTypesProblem]("org.scalacheck.util.CmdLineParser"),
exclude[MissingMethodProblem]("org.scalacheck.util.CmdLineParser.org$scalacheck$util$CmdLineParser$$strVal"),
exclude[MissingMethodProblem]("org.scalacheck.util.CmdLineParser.org$scalacheck$util$CmdLineParser$_setter_$org$scalacheck$util$CmdLineParser$$floatVal_="),
exclude[MissingMethodProblem]("org.scalacheck.util.CmdLineParser.org$scalacheck$util$CmdLineParser$_setter_$options_="),
exclude[MissingMethodProblem]("org.scalacheck.util.CmdLineParser.org$scalacheck$util$CmdLineParser$$optVal"),
exclude[MissingMethodProblem]("org.scalacheck.util.CmdLineParser.org$scalacheck$util$CmdLineParser$_setter_$org$scalacheck$util$CmdLineParser$$strVal_="),
exclude[MissingMethodProblem]("org.scalacheck.util.CmdLineParser.options"),
exclude[MissingMethodProblem]("org.scalacheck.util.CmdLineParser.org$scalacheck$util$CmdLineParser$$OptVal"),
exclude[MissingMethodProblem]("org.scalacheck.util.CmdLineParser.org$scalacheck$util$CmdLineParser$$opt"),
exclude[MissingMethodProblem]("org.scalacheck.util.CmdLineParser.org$scalacheck$util$CmdLineParser$_setter_$org$scalacheck$util$CmdLineParser$$intVal_="),
exclude[MissingMethodProblem]("org.scalacheck.util.CmdLineParser.parseArgs"),
exclude[MissingMethodProblem]("org.scalacheck.util.CmdLineParser.org$scalacheck$util$CmdLineParser$$intVal"),
exclude[MissingMethodProblem]("org.scalacheck.util.CmdLineParser.org$scalacheck$util$CmdLineParser$$floatVal"),
exclude[MissingMethodProblem]("org.scalacheck.util.CmdLineParser.org$scalacheck$util$CmdLineParser$_setter_$org$scalacheck$util$CmdLineParser$$opt_="),
exclude[MissingMethodProblem]("org.scalacheck.util.CmdLineParser.org$scalacheck$util$CmdLineParser$_setter_$org$scalacheck$util$CmdLineParser$$optVal_="),
exclude[MissingMethodProblem]("org.scalacheck.util.CmdLineParser.parseArgs"),
exclude[MissingMethodProblem]("org.scalacheck.util.CmdLineParser.OptMap"),
exclude[MissingClassProblem]("org.scalacheck.util.CmdLineParser$ArgsReader")
)

}
6 changes: 4 additions & 2 deletions src/main/scala/org/scalacheck/Test.scala
Expand Up @@ -95,8 +95,8 @@ object Test {
)

// private since we can't guarantee binary compatibility for this one
private val cp = TestParams
private[scalacheck] case class TestParams(
private lazy val cp = TestParams
private case class TestParams(
minSuccessfulTests: Int = minSuccessfulTests,
minSize: Int = minSize,
maxSize: Int = maxSize,
Expand All @@ -106,6 +106,8 @@ object Test {
maxDiscardRatio: Float = maxDiscardRatio,
customClassLoader: Option[ClassLoader] = customClassLoader
) extends Parameters

override def toString = cp.toString
}

/** Test parameters used by the check methods. Default
Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/org/scalacheck/util/Pretty.scala
Expand Up @@ -154,6 +154,6 @@ object Pretty {
}

implicit def prettyTestParams(prms: Test.Parameters) = Pretty { p =>
prms.TestParams().toString
prms.toString
}
}

0 comments on commit 333307d

Please sign in to comment.