scala-java8-compat icon indicating copy to clipboard operation
scala-java8-compat copied to clipboard

Allow to pass an `Executor` when converting `Future`s

Open rdesgroppes opened this issue 3 years ago • 2 comments

This is to circumvent #179.

rdesgroppes avatar Nov 16 '21 09:11 rdesgroppes

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.

lrytz avatar Nov 23 '21 15:11 lrytz

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

SethTisue avatar Dec 09 '21 18:12 SethTisue