scala-java8-compat
scala-java8-compat copied to clipboard
Allow to pass an `Executor` when converting `Future`s
This is to circumvent #179.
Took me a bit to figure out why CI failed. It's not the java.lang.NoSuchMethodError
errors in the end of the logs, these seem to be expected test output.
The problem is binary compatibility, MiMa is active through sbt-scala-module, which uses sbt-version-policy, which enables MiMa. And the MiMa error only shows locally if the git clone has the tags pulled.
$> sbt ++2.12.15 versionPolicyCheck
* extension method toJava$extension(scala.concurrent.Future)java.util.concurrent.CompletionStage in object scala.compat.java8.FutureConverters#FutureOps does not have a correspondent in current version
filter with: ProblemFilters.exclude[DirectMissingMethodProblem]("scala.compat.java8.FutureConverters#FutureOps.toJava$extension")
* static method toJava(scala.concurrent.Future,java.util.concurrent.Executor)java.util.concurrent.CompletionStage in class scala.compat.java8.FutureConverters does not have a correspondent in other version
filter with: ProblemFilters.exclude[DirectMissingMethodProblem]("scala.compat.java8.FutureConverters.toJava")
* method toJava(scala.concurrent.Future,java.util.concurrent.Executor)java.util.concurrent.CompletionStage in object scala.compat.java8.FutureConverters does not have a correspondent in other version
filter with: ProblemFilters.exclude[DirectMissingMethodProblem]("scala.compat.java8.FutureConverters.toJava")
* method toJava(java.util.concurrent.Executor)java.util.concurrent.CompletionStage in class scala.compat.java8.FutureConverters#FutureOps does not have a correspondent in other version
filter with: ProblemFilters.exclude[DirectMissingMethodProblem]("scala.compat.java8.FutureConverters#FutureOps.toJava")
* extension method toJava$extension0(scala.concurrent.Future)java.util.concurrent.CompletionStage in object scala.compat.java8.FutureConverters#FutureOps does not have a correspondent in other version
filter with: ProblemFilters.exclude[DirectMissingMethodProblem]("scala.compat.java8.FutureConverters#FutureOps.toJava$extension0")
* extension method toJava$extension1(scala.concurrent.Future,java.util.concurrent.Executor)java.util.concurrent.CompletionStage in object scala.compat.java8.FutureConverters#FutureOps does not have a correspondent in other version
filter with: ProblemFilters.exclude[DirectMissingMethodProblem]("scala.compat.java8.FutureConverters#FutureOps.toJava$extension1")
* method this(scala.concurrent.Future,java.util.concurrent.Executor)Unit in class scala.concurrent.java8.FuturesConvertersImpl#CF does not have a correspondent in other version
filter with: ProblemFilters.exclude[DirectMissingMethodProblem]("scala.concurrent.java8.FuturesConvertersImpl#CF.this")
Now it seems binary compatibility is checked backwards and forwards, @SethTisue why's that? The changes all look backwards compatible to me.
binary compatibility is checked backwards and forwards
it's an attempt to simulate checking of source-compatibility. see discussion on https://github.com/scalacenter/sbt-version-policy/issues/71
if we believe that a change is safe, it's fine to just add the MiMa exceptions
I also wouldn't mind switching from versionPolicyIntention := Compatibility.BinaryAndSourceCompatible
to versionPolicyIntention := Compatibility.BinaryCompatible
, tbh