Skip to content
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

Test of the Scalafix migration for Cats 2.2.0 #1582

Closed
wants to merge 16 commits into from

Conversation

fthomas
Copy link
Member

@fthomas fthomas commented Aug 30, 2020

This is a test of the Scalafix migration for Cats 2.2.0 (typelevel/cats#3566). Before this change, Cats was a transitive dependency of other dependencies so I added cats-core as dependency explicitly. I then added a scalafix-conf.sbt which contains the scalacOptions += "-P:semanticdb:synthetics:on" (as per https://github.com/typelevel/cats/pull/3566/files#diff-c131653cee48b25eb56e8856605a9370). Then I ran scalafixEnable and scalafix github:cb372/cats/Cats_v2_2_0?sha=235bd7c92e431ab1902db174cf4665b05e08f2f1 in a sbt shell.

All cats.implicits._ imports are gone but unfortunately the build failed with more than 200 errors. The first three errors are:

[info] Compiling 1 Scala source to /home/travis/build/scala-steward-org/scala-steward/modules/sbt-plugin/.jvm/target/scala-2.12/sbt-1.0/classes ...
[error] /home/travis/build/scala-steward-org/scala-steward/modules/core/src/main/scala/org/scalasteward/core/application/Cli.scala:78:32: value leftMap is not a member of Either[Throwable,scala.concurrent.duration.FiniteDuration]
[error]         parseFiniteDuration(s).leftMap { throwable =>
[error]                                ^
[error] /home/travis/build/scala-steward-org/scala-steward/modules/core/src/main/scala/org/scalasteward/core/application/Cli.scala:85:12: value catchNonFatal is not a member of object scala.util.Either
[error]     Either.catchNonFatal(Duration(s)).flatMap {
[error]            ^
[error] /home/travis/build/scala-steward-org/scala-steward/modules/core/src/main/scala/org/scalasteward/core/application/Cli.scala:93:30: value leftMap is not a member of org.http4s.ParseResult[org.http4s.Uri]
[error]       s => Uri.fromString(s).leftMap(pf => MalformedValue("Uri", pf.message))
[error]                              ^

It seems that adding import cats.syntax.all._ to that file fixes these errors. I've no idea why the migration didn't add them automatically.

fthomas added 13 commits August 31, 2020 21:40
…2_0?sha=235bd7c92e431ab1902db174cf4665b05e08f2f1""

This reverts commit 83d84eb.
…bd7c92e431ab1902db174cf4665b05e08f2f1 again

Some `cats.syntax.all._` imports are there now, but running
scalafix now failed with a MissingSymbolException:

[error] scalafix.internal.v1.FileException: unexpected error processing file /home/frank/data/code/scala-steward/core/modules/core/src/main/scala/org/scalasteward/core/edit/package.scala
[error] Caused by: scalafix.v1.MissingSymbolException: Missing symbol local24
[error]         at scalafix.internal.v0.LegacyCodePrinter.$anonfun$pprint$2(LegacyCodePrinter.scala:79)
[error]         at scalafix.internal.v0.LegacyCodePrinter.$anonfun$pprint$2$adapted(LegacyCodePrinter.scala:71)
[error]         at scalafix.internal.v0.LegacyCodePrinter.$anonfun$mkString$1(LegacyCodePrinter.scala:46)
[error]         at scalafix.internal.v0.LegacyCodePrinter.$anonfun$mkString$1$adapted(LegacyCodePrinter.scala:40)
[error]         at scala.collection.immutable.List.foreach(List.scala:431)
[error]         at scalafix.internal.v0.LegacyCodePrinter.mkString(LegacyCodePrinter.scala:40)
[error]         at scalafix.internal.v0.LegacyCodePrinter.$anonfun$pprint$1(LegacyCodePrinter.scala:71)
[error]         at scalafix.internal.v0.LegacyCodePrinter.$anonfun$pprint$1$adapted(LegacyCodePrinter.scala:70)
[error]         at scala.collection.Iterator.foreach(Iterator.scala:943)
[error]         at scala.collection.Iterator.foreach$(Iterator.scala:943)
[error]         at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
[error]         at scala.collection.IterableLike.foreach(IterableLike.scala:74)
[error]         at scala.collection.IterableLike.foreach$(IterableLike.scala:73)
[error]         at scala.collection.AbstractIterable.foreach(Iterable.scala:56)
[error]         at scalafix.internal.v0.LegacyCodePrinter.pprint(LegacyCodePrinter.scala:70)
[error]         at scalafix.internal.v0.LegacyCodePrinter.$anonfun$pprint$4(LegacyCodePrinter.scala:98)
[error]         at scalafix.internal.v0.LegacyCodePrinter.$anonfun$pprint$4$adapted(LegacyCodePrinter.scala:98)
[error]         at scala.collection.Iterator.foreach(Iterator.scala:943)
[error]         at scala.collection.Iterator.foreach$(Iterator.scala:943)
[error]         at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
[error]         at scala.collection.IterableLike.foreach(IterableLike.scala:74)
[error]         at scala.collection.IterableLike.foreach$(IterableLike.scala:73)
[error]         at scala.collection.AbstractIterable.foreach(Iterable.scala:56)
[error]         at scalafix.internal.v0.LegacyCodePrinter.pprint(LegacyCodePrinter.scala:98)
[error]         at scalafix.internal.v0.LegacyCodePrinter.$anonfun$pprint$9(LegacyCodePrinter.scala:129)
[error]         at scalafix.internal.v0.LegacyCodePrinter.$anonfun$pprint$9$adapted(LegacyCodePrinter.scala:129)
[error]         at scala.Option.foreach(Option.scala:407)
[error]         at scalafix.internal.v0.LegacyCodePrinter.pprint(LegacyCodePrinter.scala:129)
[error]         at scalafix.internal.v0.LegacyCodePrinter.$anonfun$loop$4(LegacyCodePrinter.scala:201)
[error]         at scalafix.internal.v0.LegacyCodePrinter.$anonfun$loop$4$adapted(LegacyCodePrinter.scala:201)
[error]         at scalafix.internal.v0.LegacyCodePrinter.$anonfun$mkString$1(LegacyCodePrinter.scala:46)
[error]         at scalafix.internal.v0.LegacyCodePrinter.$anonfun$mkString$1$adapted(LegacyCodePrinter.scala:40)
[error]         at scala.collection.Iterator.foreach(Iterator.scala:943)
[error]         at scala.collection.Iterator.foreach$(Iterator.scala:943)
[error]         at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
[error]         at scala.collection.IterableLike.foreach(IterableLike.scala:74)
[error]         at scala.collection.IterableLike.foreach$(IterableLike.scala:73)
[error]         at scala.collection.AbstractIterable.foreach(Iterable.scala:56)
[error]         at scalafix.internal.v0.LegacyCodePrinter.mkString(LegacyCodePrinter.scala:40)
[error]         at scalafix.internal.v0.LegacyCodePrinter.loop(LegacyCodePrinter.scala:201)
[error]         at scalafix.internal.v0.LegacyCodePrinter.convertSynthetic(LegacyCodePrinter.scala:206)
[error]         at scalafix.internal.v0.LegacySemanticdbIndex$.syntheticToLegacy(LegacySemanticdbIndex.scala:169)
[error]         at scalafix.internal.v0.LegacySemanticdbIndex.$anonfun$synthetics$1(LegacySemanticdbIndex.scala:51)
[error]         at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:285)
[error]         at scala.collection.Iterator.foreach(Iterator.scala:943)
[error]         at scala.collection.Iterator.foreach$(Iterator.scala:943)
[error]         at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
[error]         at scala.collection.IterableLike.foreach(IterableLike.scala:74)
[error]         at scala.collection.IterableLike.foreach$(IterableLike.scala:73)
[error]         at scala.collection.AbstractIterable.foreach(Iterable.scala:56)
[error]         at scala.collection.TraversableLike.map(TraversableLike.scala:285)
[error]         at scala.collection.TraversableLike.map$(TraversableLike.scala:278)
[error]         at scala.collection.AbstractTraversable.map(Traversable.scala:108)
[error]         at scalafix.internal.v0.LegacySemanticdbIndex.synthetics(LegacySemanticdbIndex.scala:50)
[error]         at fix.v2_2_0.RemoveInstanceImports$$anonfun$fix$1.applyOrElse(/tmp/scalafix595746135189370008/Cats_v2_2_0.scala8000476978071258990.scala:27)
[error]         at fix.v2_2_0.RemoveInstanceImports$$anonfun$fix$1.applyOrElse(/tmp/scalafix595746135189370008/Cats_v2_2_0.scala8000476978071258990.scala:14)
[error]         at scala.PartialFunction$Lifted.apply(PartialFunction.scala:228)
[error]         at scala.PartialFunction$Lifted.apply(PartialFunction.scala:224)
[error]         at scala.meta.transversers.Api$XtensionCollectionLikeUI$traverser$3$.apply(Api.scala:32)
[error]         at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1(SimpleTraverser.scala:5)
[error]         at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1$adapted(SimpleTraverser.scala:5)
[error]         at scala.collection.immutable.List.foreach(List.scala:431)
[error]         at scala.meta.transversers.SimpleTraverser.apply(SimpleTraverser.scala:5)
[error]         at scala.meta.transversers.Api$XtensionCollectionLikeUI$traverser$3$.apply(Api.scala:33)
[error]         at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1(SimpleTraverser.scala:5)
[error]         at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1$adapted(SimpleTraverser.scala:5)
[error]         at scala.collection.immutable.List.foreach(List.scala:431)
[error]         at scala.meta.transversers.SimpleTraverser.apply(SimpleTraverser.scala:5)
[error]         at scala.meta.transversers.Api$XtensionCollectionLikeUI$traverser$3$.apply(Api.scala:33)
[error]         at scala.meta.transversers.Api$XtensionCollectionLikeUI.collect(Api.scala:36)
[error]         at fix.v2_2_0.RemoveInstanceImports.fix(/tmp/scalafix595746135189370008/Cats_v2_2_0.scala8000476978071258990.scala:14)
[error]         at scalafix.internal.v0.LegacySemanticRule.fix(LegacySemanticRule.scala:29)
[error]         at scalafix.internal.v1.Rules.$anonfun$semanticPatch$1(Rules.scala:75)
[error]         at scala.collection.immutable.List.map(List.scala:293)
[error]         at scalafix.internal.v1.Rules.semanticPatch(Rules.scala:73)
[error]         at scalafix.internal.v1.MainOps$.unsafeHandleFile(MainOps.scala:232)
[error] (core / Compile / scalafix) scalafix.sbt.ScalafixFailed: UnexpectedError
…?sha=235bd7c92e431ab1902db174cf4665b05e08f2f1 again"

This reverts commit 3393373.
…9a8bdb18d00a2e83821515524d"

This reverts commit 6391581.
…76d374be205e58617e907566cd"

This reverts commit efe2073.
```
[error] /home/travis/build/scala-steward-org/scala-steward/modules/core/src/test/scala/org/scalasteward/core/github/http4s/authenticationTest.scala:13:22: ambiguous implicit values:
[error]  both method catsMonadErrorForEither in object Invariant of type [A]cats.MonadError[[β$1$]scala.util.Either[A,β$1$],A]
[error]  and method catsInstancesForOption in object Invariant of type cats.MonadError[Option,Unit] with cats.Alternative[Option] with cats.CoflatMap[Option] with cats.CommutativeMonad[Option]
[error]  match expected type cats.Applicative[F]
[error]       .addCredentials(AuthenticatedUser("user", "pass"))
[error]                      ^
```
@codecov
Copy link

codecov bot commented Sep 1, 2020

Codecov Report

Merging #1582 into master will not change coverage.
The diff coverage is n/a.

Impacted file tree graph

@@           Coverage Diff           @@
##           master    #1582   +/-   ##
=======================================
  Coverage   70.26%   70.26%           
=======================================
  Files         113      113           
  Lines        1786     1786           
  Branches       51       51           
=======================================
  Hits         1255     1255           
  Misses        531      531           
Impacted Files Coverage Δ
.../scala/org/scalasteward/core/application/Cli.scala 93.75% <ø> (ø)
...g/scalasteward/core/application/SelfCheckAlg.scala 0.00% <ø> (ø)
...org/scalasteward/core/application/StewardAlg.scala 0.00% <ø> (ø)
...g/scalasteward/core/application/SupportedVCS.scala 46.15% <ø> (ø)
.../core/bitbucket/http4s/Http4sBitbucketApiAlg.scala 96.55% <ø> (ø)
...ard/core/bitbucket/http4s/RepositoryResponse.scala 91.30% <ø> (ø)
...steward/core/bitbucket/http4s/authentication.scala 0.00% <ø> (ø)
...ketserver/http4s/Http4sBitbucketServerApiAlg.scala 0.00% <ø> (ø)
...lasteward/core/buildtool/BuildToolDispatcher.scala 81.81% <ø> (ø)
...g/scalasteward/core/buildtool/maven/MavenAlg.scala 84.61% <ø> (ø)
... and 54 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 33249b1...216832a. Read the comment docs.

@fthomas fthomas closed this Sep 1, 2020
@fthomas fthomas deleted the topic/cats-2.2.0-migration branch September 1, 2020 17:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant