Skip to content

Update Cats and dependent projects #22949

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from

Conversation

mbovel
Copy link
Member

@mbovel mbovel commented Apr 9, 2025

Update Cats (and dependent projects), hopping to fix #22897.

Updated projects:

cats
cats-effect-3
cats-mtl
coops
discipline
discipline-munit
discipline-specs2
fs2
http4s
munit
munit-cats-effect
scalacheck
scalacheck-effect
scalatest

Added project:

munit-scalacheck

@mbovel mbovel requested review from hamzaremmal and removed request for hamzaremmal April 9, 2025 12:31
@mbovel mbovel marked this pull request as draft April 10, 2025 09:54
@mbovel
Copy link
Member Author

mbovel commented Apr 10, 2025

It seems cats v.2.13.0 fails to compile with the latest version of Scala:

[error] -- [E134] Type Error: /__w/scala3/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/Eq.scala:259:36 
[error] 259 |    cats.kernel.instances.sortedSet.catsKernelStdHashForSortedSet[A](Hash[A])
[error]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[error]     |None of the overloaded alternatives of method catsKernelStdHashForSortedSet in trait SortedSetInstances with types
[error]     | [A]
[error]     |  (using evidence$1: cats.kernel.Hash[A]):
[error]     |    cats.kernel.Hash[scala.collection.immutable.SortedSet[A]]
[error]     | [A]
[error]     |  (using evidence$1: cats.kernel.Order[A], evidence$2: cats.kernel.Hash[A]):
[error]     |    cats.kernel.Hash[scala.collection.immutable.SortedSet[A]]
[error]     |match type arguments [A²] and arguments (cats.kernel.Hash[A²])
[error]     |
[error]     |where:    A  is a type variable
[error]     |          A² is a type in method catsKernelHashForSortedSet
[error] one error found
[error] (kernelJVM / Compile / compileIncremental) Compilation failed
[error] Total time: 31 s, completed Apr 9, 2025 6:36:58 PM

Log: https://github.com/scala/scala3/actions/runs/14361375561/job/40263508857#step:9:6448.

@djspiewak
Copy link

So fwiw, taking a look at the fix diff, I think it's pretty accurate to characterize these issues as things that users will hit if they're writing similar code. Like, the patch does fix it, but anyone trying to straddle 2.x and 3.x is likely to hit these types of problems, and the fix is incompatible with 2.13 syntax and semantics. If the community build is meant to be a canary on issues likely to be found in user code, then I think these failures should probably be treated as meaningful.

Btw the very practical consequence of this is that it's likely Cats will end up frozen on an old version of Scala 3.x more or less indefinitely, since we cannot abandon Scala 2.x in the near-term.

@mbovel
Copy link
Member Author

mbovel commented Apr 10, 2025

the fix is incompatible with 2.13 syntax and semantics.

It seems only fixing the compilation errors (my first commit: dotty-staging/cats@f5a5867) doesn't break compilation with 2.13 and 2.12. However the automatic rewrites to fix the warnings (my second commit: dotty-staging/cats@5ea50ee) indeed do break compatibility with 2.13 and 2.12.

@mbovel
Copy link
Member Author

mbovel commented Apr 11, 2025

I confirm cats successfully compiles after my patch! I will make a PR to the cats repo.

Now, some dependent projects are not compiling, I will probably need to update them as well:

Failed projects:
 - dotty.communitybuild.CommunityBuildTestB.http4s
 - dotty.communitybuild.CommunityBuildTestB.catsEffect3
 - dotty.communitybuild.CommunityBuildTestB.fs2
 - dotty.communitybuild.CommunityBuildTestB.munitCatsEffect
 - dotty.communitybuild.CommunityBuildTestB.scalacheckEffect

@mbovel
Copy link
Member Author

mbovel commented Apr 14, 2025

When I try to test the build locally, I get an error about a name clash for caps: package scala contains object and package with same name: caps 🤔

Seems to be the same issue as #22890.

sbt:scala3> community-build/testOnly -- *catsEffect3*
...
[info] set scmInfo to https://github.com/dotty-staging/cats
[info] set current project to cats (in build file:/localhome/bovel/scala3/community-build/community-projects/cats/)
...

[success] Total time: 75 s (01:15), completed Apr 14, 2025, 9:09:53 AM
exception caught when loading module class scala: package scala contains object and package with same name: caps
one of them needs to be removed from classpath

  package scala contains object and package with same name: caps
one of them needs to be removed from classpath while compiling /localhome/bovel/scala3/community-build/community-projects/cats/kernel/.js/target/scala-3.7.1-RC1-bin-SNAPSHOT/src_managed/main/cats/kernel/instances/TupleInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala-2.13+/cats/kernel/EnumerableCompat.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala-2.13+/cats/kernel/ScalaVersionSpecificInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala-2.13+/cats/kernel/compat/HashCompat.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala-2.13+/cats/kernel/compat/WrappedMutableMapBase.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala-2.13+/cats/kernel/compat/scalaVersionMoreSpecific.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala-2.13+/cats/kernel/compat/scalaVersionSpecific.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala-2.13+/cats/kernel/instances/AllInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala-2.13+/cats/kernel/instances/ArraySeqInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala-2.13+/cats/kernel/instances/LazyListInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala-2.13+/cats/kernel/instances/StreamInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala-2.13+/cats/kernel/instances/arraySeq/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala-2.13+/cats/kernel/instances/lazyList/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/Band.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/Bounded.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/BoundedSemilattice.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/CommutativeGroup.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/CommutativeMonoid.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/CommutativeSemigroup.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/Comparison.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/Enumerable.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/Eq.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/Group.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/Hash.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/Monoid.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/Order.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/PartialOrder.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/Semigroup.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/Semilattice.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/BigDecimalInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/BigIntInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/BitSetInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/BooleanInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/ByteInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/CharInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/DeadlineInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/DoubleInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/DurationInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/EitherInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/FiniteDurationInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/FloatInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/FunctionInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/IntInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/ListInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/LongInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/MapInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/OptionInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/QueueInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/SeqInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/SetInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/ShortInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/SortedMapInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/SortedSetInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/StaticMethods.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/StringInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/SymbolInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/UUIDInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/UnitInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/VectorInstances.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/all/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/bigDecimal/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/bigInt/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/bitSet/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/boolean/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/byte/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/char/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/deadline/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/double/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/duration/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/either/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/eq.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/finiteDuration/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/float/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/function/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/hash.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/int/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/list/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/long/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/map/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/option/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/order.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/partialOrder.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/queue/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/seq/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/set/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/short/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/sortedMap/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/sortedSet/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/stream/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/string/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/symbol/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/tuple/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/unit/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/uuid/package.scala, /localhome/bovel/scala3/community-build/community-projects/cats/kernel/src/main/scala/cats/kernel/instances/vector/package.scala

  An unhandled exception was thrown in the compiler.
  Please file a crash report here:
  https://github.com/scala/scala3/issues/new/choose
  For non-enriched exceptions, compile with -Xno-enrich-error-messages.


     while compiling: <no file>
        during phase: <some phase>
                mode: Mode()
     library version: version 2.13.16
    compiler version: version 3.7.1-RC1-bin-SNAPSHOT-git-9f1b403
            settings: -Wunused List(implicits, explicits, imports, locals, params, privates) -Wvalue-discard true -Xcheck-macros true -Xkind-projector "" -classpath /localhome/bovel/scala3/community-build/community-projects/cats/kernel/.js/target/scala-3.7.1-RC1-bin-SNAPSHOT/classes:/localhome/bovel/.ivy2/local/org.scala-lang/scala3-library_sjs1_3/3.7.1-RC1-bin-SNAPSHOT/jars/scala3-library_sjs1_3.jar:/localhome/bovel/.coursier-cache/https/repo1.maven.org/maven2/org/scala-js/scalajs-library_2.13/1.18.2/scalajs-library_2.13-1.18.2.jar:/localhome/bovel/.coursier-cache/https/repo1.maven.org/maven2/org/typelevel/scalac-compat-annotation_3/0.1.4/scalac-compat-annotation_3-0.1.4.jar:/localhome/bovel/.coursier-cache/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.16/scala-library-2.13.16.jar:/localhome/bovel/.coursier-cache/https/repo1.maven.org/maven2/org/scala-js/scalajs-javalib/1.18.2/scalajs-javalib-1.18.2.jar:/localhome/bovel/.coursier-cache/https/repo1.maven.org/maven2/org/scala-js/scalajs-scalalib_2.13/2.13.16%2B1.18.2/scalajs-scalalib_2.13-2.13.16%2B1.18.2.jar:/localhome/bovel/.coursier-cache/https/repo1.maven.org/maven2/org/scala-lang/scala3-library_3/3.3.1/scala3-library_3-3.3.1.jar -d /localhome/bovel/scala3/community-build/community-projects/cats/kernel/.js/target/scala-3.7.1-RC1-bin-SNAPSHOT/classes -deprecation true -feature true -java-output-version 8 -language List(implicitConversions) -scalajs true -scalajs-mapSourceURI List(file:/localhome/bovel/scala3/community-build/community-projects/cats/->https://raw.githubusercontent.com/dotty-staging/cats/e4086ed60e801b87ac8a47031ad6561eef689c8e/)

[error] ## Exception when compiling 95 sources to /localhome/bovel/scala3/community-build/community-projects/cats/kernel/.js/target/scala-3.7.1-RC1-bin-SNAPSHOT/classes
[error] dotty.tools.dotc.core.TypeError$$anon$1: package scala contains object and package with same name: caps
[error] one of them needs to be removed from classpath
[error] 
[error]            
[error] dotty.tools.dotc.core.TypeError$$anon$1: package scala contains object and package with same name: caps
[error] one of them needs to be removed from classpath
[error] (kernelJS / Compile / compileIncremental) dotty.tools.dotc.core.TypeError$$anon$1: package scala contains object and package with same name: caps
[error] one of them needs to be removed from classpath
[error] Total time: 2 s, completed Apr 14, 2025, 9:09:55 AM
[error] Test dotty.communitybuild.CommunityBuildTestB.catsEffect3 failed: java.lang.RuntimeException: Publish command exited with code 1 for project cats. Project details:
[error] SbtCommunityProject(cats,set Global/scalaJSStage := FastOptStage;catsJVM/test;catsJS/test,List(),List(SbtCommunityProject(discipline,coreJVM/test;coreJS/test,List(),List(SbtCommunityProject(scalacheck,coreJVM/test;coreJS/test,List(),List(),dotty.communitybuild.SbtCommunityProject$$$Lambda$51/0x00007a40b0108000@2c03fc58,coreJVM/publishLocal;coreJS/publishLocal,null,List(-Xcheck-macros, -Wsafe-init))),dotty.communitybuild.SbtCommunityProject$$$Lambda$51/0x00007a40b0108000@2c03fc58,set every credentials := Nil;coreJVM/publishLocal;coreJS/publishLocal,null,List(-Xcheck-macros)), SbtCommunityProject(discipline-munit,coreJVM/test;coreJS/test,List(),List(SbtCommunityProject(discipline,coreJVM/test;coreJS/test,List(),List(SbtCommunityProject(scalacheck,coreJVM/test;coreJS/test,List(),List(),dotty.communitybuild.SbtCommunityProject$$$Lambda$51/0x00007a40b0108000@2c03fc58,coreJVM/publishLocal;coreJS/publishLocal,null,List(-Xcheck-macros, -Wsafe-init))),dotty.communitybuild.SbtCommunityProject$$$Lambda$51/0x00007a40b0108000@2c03fc58,set every credentials := Nil;coreJVM/publishLocal;coreJS/publishLocal,null,List(-Xcheck-macros)), SbtCommunityProject(munit,testsJVM/test;testsJS/test;,List(),List(SbtCommunityProject(scalacheck,coreJVM/test;coreJS/test,List(),List(),dotty.communitybuild.SbtCommunityProject$$$Lambda$51/0x00007a40b0108000@2c03fc58,coreJVM/publishLocal;coreJS/publishLocal,null,List(-Xcheck-macros, -Wsafe-init))),dotty.communitybuild.SbtCommunityProject$$$Lambda$51/0x00007a40b0108000@2c03fc58,munitJVM/publishLocal; munitJS/publishLocal; munitScalacheckJVM/publishLocal; munitScalacheckJS/publishLocal; junit/publishLocal,junit/doc; munitJVM/doc,List(-Xcheck-macros, -Wsafe-init))),dotty.communitybuild.SbtCommunityProject$$$Lambda$51/0x00007a40b0108000@2c03fc58,coreJVM/publishLocal;coreJS/publishLocal,null,List(-Xcheck-macros, -Wsafe-init)), SbtCommunityProject(scalacheck,coreJVM/test;coreJS/test,List(),List(),dotty.communitybuild.SbtCommunityProject$$$Lambda$51/0x00007a40b0108000@2c03fc58,coreJVM/publishLocal;coreJS/publishLocal,null,List(-Xcheck-macros, -Wsafe-init)), SbtCommunityProject(simulacrum-scalafix,annotation/test:compile;annotationJS/test:compile,List(),List(),dotty.communitybuild.SbtCommunityProject$$$Lambda$51/0x00007a40b0108000@2c03fc58,annotation/publishLocal;annotationJS/publishLocal,null,List(-Xcheck-macros, -Wsafe-init))),dotty.communitybuild.SbtCommunityProject$$$Lambda$51/0x00007a40b0108000@2c03fc58,catsJVM/publishLocal;catsJS/publishLocal,null,List(-Xcheck-macros)), took 327.957 sec
[error]     at dotty.communitybuild.CommunityProject.publish(projects.scala:59)
[error]     at dotty.communitybuild.CommunityProject.publish$(projects.scala:32)
[error]     at dotty.communitybuild.SbtCommunityProject.publish(projects.scala:93)
[error]     at dotty.communitybuild.CommunityBuildRunner$.run$$anonfun$1(CommunityBuildRunner.scala:20)
[error]     at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error]     at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error]     at scala.collection.immutable.List.foreach(List.scala:334)
[error]     at dotty.communitybuild.CommunityBuildRunner$.run(CommunityBuildRunner.scala:20)
[error]     at dotty.communitybuild.CommunityBuildTestB.catsEffect3(CommunityBuildTest.scala:39)
[error]     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error]     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
[error]     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error]     at java.lang.reflect.Method.invoke(Method.java:569)
[error]     ...
[info] Test run dotty.communitybuild.CommunityBuildTestB finished: 1 failed, 0 ignored, 1 total, 327.961s
********************************************************************************
Failed projects:-build / Test / testOnly 328s
 - dotty.communitybuild.CommunityBuildTestB.catsEffect3
********************************************************************************
[error] Failed: Total 1, Failed 1, Errors 0, Passed 0
[error] Failed tests:
[error]         dotty.communitybuild.CommunityBuildTestB
[error] (community-build / Test / testOnly) sbt.TestsFailedException: Tests unsuccessful
[error] Total time: 425 s (07:05), completed Apr 14, 2025, 9:09:59 AM

@mbovel
Copy link
Member Author

mbovel commented Apr 14, 2025

When I try to test the build locally, I get an error about a name clash for caps

That does not happen on the CI. Not sure why.

@mbovel
Copy link
Member Author

mbovel commented Apr 14, 2025

When I try to test the build locally, I get an error about a name clash for caps

The local classpath, as displayed in the error message above, with one item per line, is:

scala3/community-build/community-projects/cats/kernel/.js/target/scala-3.7.1-RC1-bin-SNAPSHOT/classes
.ivy2/local/org.scala-lang/scala3-library_sjs1_3/3.7.1-RC1-bin-SNAPSHOT/jars/scala3-library_sjs1_3.jar
.coursier-cache/https/repo1.maven.org/maven2/org/scala-js/scalajs-library_2.13/1.18.2/scalajs-library_2.13-1.18.2.jar
.coursier-cache/https/repo1.maven.org/maven2/org/typelevel/scalac-compat-annotation_3/0.1.4/scalac-compat-annotation_3-0.1.4.jar
.coursier-cache/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.16/scala-library-2.13.16.jar
.coursier-cache/https/repo1.maven.org/maven2/org/scala-js/scalajs-javalib/1.18.2/scalajs-javalib-1.18.2.jar
.coursier-cache/https/repo1.maven.org/maven2/org/scala-js/scalajs-scalalib_2.13/2.13.16%2B1.18.2/scalajs-scalalib_2.13-2.13.16%2B1.18.2.jar
.coursier-cache/https/repo1.maven.org/maven2/org/scala-lang/scala3-library_3/3.3.1/scala3-library_3-3.3.1.jar

So maybe the clash comes from having both the Scala JS library 3.7, and the JVM library 3.3?

@mbovel mbovel force-pushed the mb/update-cats-2_13_0 branch 4 times, most recently from 0a70cb7 to 5d7a74c Compare April 14, 2025 21:56
@mbovel
Copy link
Member Author

mbovel commented Apr 14, 2025

When I try to test the build locally, I get an error about a name clash for caps

Fixed after rebasing on top of main; #22890 has been fixed there.

@mbovel mbovel changed the title Update cats to v2.13.0 Update Cats and dependent projects Apr 14, 2025
Updated projects:
cats
cats-effect-3
cats-mtl
coops
discipline
discipline-munit
discipline-specs2
fs2
http4s
munit
munit-cats-effect
scalacheck
scalacheck-effect
scalatest

Added project:
munit-scalacheck
@mbovel mbovel force-pushed the mb/update-cats-2_13_0 branch from 5d7a74c to 783bd79 Compare April 15, 2025 08:10
@mbovel
Copy link
Member Author

mbovel commented Apr 15, 2025

Currently failing on the CI:

A:
 - dotty.communitybuild.CommunityBuildTestA.scalatest
 - dotty.communitybuild.CommunityBuildTestA.scalaSTM
 - dotty.communitybuild.CommunityBuildTestA.scalatestplusTestNG
 - dotty.communitybuild.CommunityBuildTestA.scissLucre

B:
 - dotty.communitybuild.CommunityBuildTestB.http4s
 - dotty.communitybuild.CommunityBuildTestB.scodec
 - dotty.communitybuild.CommunityBuildTestB.disciplineSpecs2
 - dotty.communitybuild.CommunityBuildTestB.catsEffect3
 - dotty.communitybuild.CommunityBuildTestB.fs2
 - dotty.communitybuild.CommunityBuildTestB.cats
 - dotty.communitybuild.CommunityBuildTestB.coop
 - dotty.communitybuild.CommunityBuildTestB.spire
 - dotty.communitybuild.CommunityBuildTestB.munitCatsEffect
 - dotty.communitybuild.CommunityBuildTestB.perspective
 - dotty.communitybuild.CommunityBuildTestB.discipline
 - dotty.communitybuild.CommunityBuildTestB.catsMtl
 - dotty.communitybuild.CommunityBuildTestB.scalacheckEffect
 - dotty.communitybuild.CommunityBuildTestB.monocle
 - dotty.communitybuild.CommunityBuildTestB.disciplineMunit
 - dotty.communitybuild.CommunityBuildTestB.scodecBits

C:
 - dotty.communitybuild.CommunityBuildTestC.akka

Locally, I only have fs2 and http4s failing in the build B. I am wondering if the difference is due to the different Java versions. I temporary enabled the warnings on the CI to check.

@mbovel
Copy link
Member Author

mbovel commented Apr 15, 2025

I temporary enabled the warnings on the CI to check.

Oh, it's again #22890. Thanks to the fix, a warning is emitted on the CI instead of an error, but because discipline has fatal warnings, we still get an error in the end:

[info] compiling 2 Scala sources to /__w/scala3/scala3/community-build/community-projects/discipline/core/.js/target/scala-3.7.1-RC1-bin-SNAPSHOT/classes ...
[warn] package scala contains object and package with same name: caps.
[warn] This indicates that there are several versions of the Scala standard library on the classpath.
[warn] The build should be reconfigured so that only one version of the standard library is on the classpath.
[error] No warnings can be incurred under -Werror (or -Xfatal-warnings)
[warn] one warning found
[error] one error found
[error] (coreJS / Compile / compileIncremental) Compilation failed
[error] Total time: 3 s, completed Apr 15, 2025 2:15:01 PM
[error] Test dotty.communitybuild.CommunityBuildTestB.disciplineSpecs2 failed: java.lang.RuntimeException: Publish command exited with code 1 for project discipline. Project details:
Error:  SbtCommunityProject(discipline,coreJVM/test;coreJS/test,List(),List(SbtCommunityProject(scalacheck,coreJVM/test;coreJS/test,List(),List(),dotty.communitybuild.SbtCommunityProject$$$Lambda$21/1754348815@645067ff,coreJVM/publishLocal;coreJS/publishLocal,null,List(-Xcheck-macros, -Wsafe-init))),dotty.communitybuild.SbtCommunityProject$$$Lambda$21/1754348815@645067ff,set every credentials := Nil;coreJVM/publishLocal;coreJS/publishLocal,null,List(-Xcheck-macros)), took 28.037 sec
Error:      at dotty.communitybuild.CommunityProject.publish(projects.scala:59)
Error:      at dotty.communitybuild.CommunityProject.publish$(projects.scala:32)
Error:      at dotty.communitybuild.SbtCommunityProject.publish(projects.scala:93)
Error:      at dotty.communitybuild.CommunityBuildRunner$.run$$anonfun$1(CommunityBuildRunner.scala:20)
Error:      at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
Error:      at scala.runtime.function.JProcedure1.apply(JProcedure1.java

A quick fix can be to disable fatal warnings for discipline, like it's already done for other projects in community build.

But I'd also like to understand why I am now getting this warning on the CI, and not locally.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Transient failure: "hash.same as universal hash / scala hash" (ScalaCheck-based) in cats community project
2 participants