Code Monkey home page Code Monkey logo

scala-rewrites's Introduction

Scalafix Rewrites for Scala

How to run the rewrites

Add the sbt-scalafix sbt plugin, with the SemanticDB compiler plugin enabled (official docs):

// project/plugins.sbt
addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.11.0")
// build.sbt
inThisBuild(List(
  semanticdbEnabled := true,
  semanticdbOptions += "-P:semanticdb:synthetics:on", // make sure to add this
  semanticdbVersion := scalafixSemanticdb.revision,
  scalafixScalaBinaryVersion := CrossVersion.binaryScalaVersion(scalaVersion.value),
))

Then run the desired rewrite(s) (official docs), in sbt:

> scalafixAll dependency:fix.scala213.ExplicitNonNullaryApply@org.scala-lang:scala-rewrites:<version>

You can also add the following to your build.sbt:

ThisBuild / scalafixDependencies += "org.scala-lang" %% "scala-rewrites" % "<version>"

and then:

> scalafixAll fix.scala213.ExplicitNonNullaryApply

To develop/contribute to any of the rewrites

sbt ~tests/test
# edit rewrites/src/main/scala/...

scala-rewrites's People

Contributors

dwijnand avatar eed3si9n avatar eric-taix-teads avatar giabao avatar github-brice-jaglin avatar lrytz avatar nthportal avatar scala-steward avatar sethtisue avatar taisukeoe avatar unarist avatar xuwei-k avatar yufangong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

scala-rewrites's Issues

ExplicitNonNullaryApply is slow and may causes OutOfMemoryError

I am using scala-rewrites 0.1.1 with Scala 2.13, sbt 1.3.13, sbt-scalafix 0.9.18.
My SBT_OPTS is -Xms512M -Xmx8G -Xss2M -Dfile.encoding=UTF-8 -XX:MaxMetaspaceSize=1024M -XX:+CMSClassUnloadingEnabled

To address new warnings on Scala 2.13.3, I am trying to usefix.scala213.ExplicitNonNullaryApply on my codebases.
And I thought ExplicitNonNullaryApply is very slow:

sbt:myProject> commonJVM/scalafixAll fix.scala213.ExplicitNonNullaryApply
[info] Compiling 59 Scala sources to /home/vagrant/IdeaProjects/myProject/common/jvm/target/scala-2.13/classes ...
[info] Running scalafix on 59 Scala sources
[info] Compiling 17 Scala sources to /home/vagrant/IdeaProjects/myProject/common/jvm/target/scala-2.13/test-classes ...
[info] Running scalafix on 17 Scala sources
[success] Total time: 349 s (05:49), completed 2020/07/06 9:15:31
sbt:myProject> commonJVM/scalafixAll fix.scala213.ExplicitNonNullaryApply
[info] Running scalafix on 59 Scala sources
[info] Running scalafix on 17 Scala sources
[success] Total time: 302 s (05:02), completed 2020/07/06 9:20:38
sbt:myProject> commonJVM/scalafixAll fix.scala213.ExplicitNonNullaryApply
[info] Running scalafix on 17 Scala sources
[info] Running scalafix on 59 Scala sources

Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "classloader-cache-cleanup-0"

1st run took about 6 minutes, then 2nd run took 6 minutes, finally 3rd run causes OutOfMemoryError.
My commonJVM project has about 12,000 lines of Scala code.
My other projects has 100,000+ lines of Scala code, so I am afraid that running ExplicitNonNullaryApply on large Scala project is very time-consuming/not stable.

I prefer using scalafix with CI to enfoce coding standard to improve code quality, so it would be great if ExplicitNonNullaryApply become fast enough for daily usage.
Taking long on 1st run is accpetable, but I expect 2nd-or-later run should be fast since no code changes...

It is fine to close this issue as wontfix if ExplicitNonNullaryApply is intended for one-time migration, and not for daily use.
Migrating huge existing code base to prepare for Scala 3 is heavylifting, so even one-time usage is highly valuable.
After migratiion using one-time ExplicitNonNullaryApply, programmers can manually fix when they forgot to add () to new code, by following scala compiler warning.

NoSuchMethodError error on ScalafixGlobal while trying to run ExplicitNonNullaryApply rule

I'm trying to upgrade my codebase from 2.11 to 2.13. I have a wrapper application for scalafix (it just invokes scalafix programatically - which is on scala 2.12, and rewrite - 0.1.3) While trying to invoke ExplicitNonNullaryApply I get the following error:

scala-meta : "org.scalameta" %% "scalameta" % "4.5.4"
scalafix : "ch.epfl.scala" % "scalafix-cli" % "0.10.0" cross CrossVersion.full

java.lang.NoSuchMethodError: 'scala.meta.internal.pc.ScalafixGlobal scala.meta.internal.pc.ScalafixGlobal$.newCompiler(scala.collection.immutable.List, scala.collection.immutable.List, scala.collection.immutable.Map)'
at fix.scala213.ExplicitNonNullaryApply.$anonfun$withConfiguration$1(ExplicitNonNullaryApply.scala:127)
at scalafix.internal.v1.LazyValue.$anonfun$computeValue$1(LazyValue.scala:25)
at scala.util.Try$.apply(Try.scala:213)
at scalafix.internal.v1.LazyValue.computeValue(LazyValue.scala:23)
at scalafix.internal.v1.LazyValue.value(LazyValue.scala:30)
at fix.scala213.ExplicitNonNullaryApply.power$lzycompute$1(ExplicitNonNullaryApply.scala:43)
at fix.scala213.ExplicitNonNullaryApply.power$1(ExplicitNonNullaryApply.scala:43)
at fix.scala213.ExplicitNonNullaryApply.isJavaDefined$1(ExplicitNonNullaryApply.scala:52)
at fix.scala213.ExplicitNonNullaryApply.$anonfun$unsafeFix$12(ExplicitNonNullaryApply.scala:76)
at fix.scala213.ExplicitNonNullaryApply.$anonfun$unsafeFix$12$adapted(ExplicitNonNullaryApply.scala:66)
at scala.Option$WithFilter.$anonfun$withFilter$1(Option.scala:332)
at scala.Option$WithFilter.$anonfun$withFilter$1$adapted(Option.scala:332)
at scala.Option.filter(Option.scala:289)
at scala.Option$WithFilter.map(Option.scala:329)
at fix.scala213.ExplicitNonNullaryApply.$anonfun$unsafeFix$8(ExplicitNonNullaryApply.scala:66)
at scala.Option$WithFilter.flatMap(Option.scala:271)
at fix.scala213.ExplicitNonNullaryApply.fix$scala213$ExplicitNonNullaryApply$$fix$1(ExplicitNonNullaryApply.scala:57)
at fix.scala213.ExplicitNonNullaryApply$$anonfun$unsafeFix$15.applyOrElse(ExplicitNonNullaryApply.scala:93)
at fix.scala213.ExplicitNonNullaryApply$$anonfun$unsafeFix$15.applyOrElse(ExplicitNonNullaryApply.scala:91)
at scala.PartialFunction$Lifted.apply(PartialFunction.scala:228)
at scala.PartialFunction$Lifted.apply(PartialFunction.scala:224)
at scala.meta.transversers.Api$XtensionCollectionLikeUI$traverser$3$.apply(Api.scala:32)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1(SimpleTraverser.scala:5)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1$adapted(SimpleTraverser.scala:5)
at scala.collection.immutable.List.foreach(List.scala:431)
at scala.meta.transversers.SimpleTraverser.apply(SimpleTraverser.scala:5)
at scala.meta.transversers.Api$XtensionCollectionLikeUI$traverser$3$.apply(Api.scala:33)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1(SimpleTraverser.scala:5)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1$adapted(SimpleTraverser.scala:5)
at scala.collection.immutable.List.foreach(List.scala:431)
at scala.meta.transversers.SimpleTraverser.apply(SimpleTraverser.scala:5)
at scala.meta.transversers.Api$XtensionCollectionLikeUI$traverser$3$.apply(Api.scala:33)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1(SimpleTraverser.scala:5)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1$adapted(SimpleTraverser.scala:5)
at scala.collection.immutable.List.foreach(List.scala:431)
at scala.meta.transversers.SimpleTraverser.apply(SimpleTraverser.scala:5)
at scala.meta.transversers.Api$XtensionCollectionLikeUI$traverser$3$.apply(Api.scala:33)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1(SimpleTraverser.scala:5)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1$adapted(SimpleTraverser.scala:5)
at scala.collection.immutable.List.foreach(List.scala:431)
at scala.meta.transversers.SimpleTraverser.apply(SimpleTraverser.scala:5)
at scala.meta.transversers.Api$XtensionCollectionLikeUI$traverser$3$.apply(Api.scala:33)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1(SimpleTraverser.scala:5)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1$adapted(SimpleTraverser.scala:5)
at scala.collection.immutable.List.foreach(List.scala:431)
at scala.meta.transversers.SimpleTraverser.apply(SimpleTraverser.scala:5)
at scala.meta.transversers.Api$XtensionCollectionLikeUI$traverser$3$.apply(Api.scala:33)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1(SimpleTraverser.scala:5)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1$adapted(SimpleTraverser.scala:5)
at scala.collection.immutable.List.foreach(List.scala:431)
at scala.meta.transversers.SimpleTraverser.apply(SimpleTraverser.scala:5)
at scala.meta.transversers.Api$XtensionCollectionLikeUI$traverser$3$.apply(Api.scala:33)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1(SimpleTraverser.scala:5)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1$adapted(SimpleTraverser.scala:5)
at scala.collection.immutable.List.foreach(List.scala:431)
at scala.meta.transversers.SimpleTraverser.apply(SimpleTraverser.scala:5)
at scala.meta.transversers.Api$XtensionCollectionLikeUI$traverser$3$.apply(Api.scala:33)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1(SimpleTraverser.scala:5)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1$adapted(SimpleTraverser.scala:5)
at scala.collection.immutable.List.foreach(List.scala:431)
at scala.meta.transversers.SimpleTraverser.apply(SimpleTraverser.scala:5)
at scala.meta.transversers.Api$XtensionCollectionLikeUI$traverser$3$.apply(Api.scala:33)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1(SimpleTraverser.scala:5)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1$adapted(SimpleTraverser.scala:5)
at scala.collection.immutable.List.foreach(List.scala:431)
at scala.meta.transversers.SimpleTraverser.apply(SimpleTraverser.scala:5)
at scala.meta.transversers.Api$XtensionCollectionLikeUI$traverser$3$.apply(Api.scala:33)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1(SimpleTraverser.scala:5)
at scala.meta.transversers.SimpleTraverser.$anonfun$apply$1$adapted(SimpleTraverser.scala:5)
at scala.collection.immutable.List.foreach(List.scala:431)
at scala.meta.transversers.SimpleTraverser.apply(SimpleTraverser.scala:5)
at scala.meta.transversers.Api$XtensionCollectionLikeUI$traverser$3$.apply(Api.scala:33)
at scala.meta.transversers.Api$XtensionCollectionLikeUI.collect(Api.scala:36)
at fix.scala213.ExplicitNonNullaryApply.unsafeFix(ExplicitNonNullaryApply.scala:91)
at fix.scala213.ExplicitNonNullaryApply.fix(ExplicitNonNullaryApply.scala:27)
at scalafix.internal.v1.Rules.$anonfun$semanticPatch$1(Rules.scala:78)
at scala.collection.immutable.List.map(List.scala:297)
at scalafix.internal.v1.Rules.semanticPatch(Rules.scala:76)
at scalafix.internal.v1.MainOps$.getPatchesAndDiags(MainOps.scala:305)
at scalafix.internal.v1.MainOps$.unsafeHandleFile(MainOps.scala:255)
at scalafix.internal.v1.MainOps$.handleFile(MainOps.scala:360)
at scalafix.internal.v1.MainOps$.$anonfun$run$3(MainOps.scala:404)
at scalafix.internal.v1.MainOps$.$anonfun$run$3$adapted(MainOps.scala:398)
at scala.collection.Iterator.foreach(Iterator.scala:943)
at scala.collection.Iterator.foreach$(Iterator.scala:943)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1431)
at scala.collection.IterableLike.foreach(IterableLike.scala:74)
at scala.collection.IterableLike.foreach$(IterableLike.scala:73)
at scala.collection.AbstractIterable.foreach(Iterable.scala:56)
at scalafix.internal.v1.MainOps$.run(MainOps.scala:398)
at scalafix.internal.v1.MainOps$.run(MainOps.scala:78)
at scalafix.internal.interfaces.ScalafixArgumentsImpl.run(ScalafixArgumentsImpl.scala:38)

"error: not found:" for several semanticdb related parameters

I can't get these scalafix rules to work.

  1. Create a simple example:

    sbt new scala/scalatest-example.g8
    
  2. Update the following files:

    // build.sbt
    lazy val root = (project in file(".")).
    settings(
        inThisBuild(List(
        organization := "com.example",
        scalaVersion := "2.13.3"
        )),
        name := "scalatest-example"
    )
    
    libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.2" % Test
    inThisBuild(List(
    semanticdbEnabled := true,
    semanticdbOptions += "-P:semanticdb:synthetics:on", // make sure to add this
    semanticdbVersion := scalafixSemanticdb.revision,
    scalafixScalaBinaryVersion := CrossVersion.binaryScalaVersion(scalaVersion.value),
    ))
    
    // project/build.properties
    sbt.version=1.2.8
    
    // project/plugins.sbt
    addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.9.19")
    
  3. Run sbt:

    $ sbt
    [info] Loading settings for project example-build from plugins.sbt ...
    [info] Loading project definition from /tmp/tmp.RLm3LqJokA/example/project
    [info] Updating ProjectRef(uri("file:/tmp/tmp.RLm3LqJokA/example/project/"), "example-build")...
    [info] Done updating.
    /tmp/tmp.RLm3LqJokA/example/build.sbt:13: error: not found: value semanticdbEnabled
    semanticdbEnabled := true,
    ^
    /tmp/tmp.RLm3LqJokA/example/build.sbt:14: error: not found: value semanticdbOptions
    semanticdbOptions += "-P:semanticdb:synthetics:on", // make sure to add this
    ^
    /tmp/tmp.RLm3LqJokA/example/build.sbt:15: error: not found: value semanticdbVersion
    semanticdbVersion := scalafixSemanticdb.revision,
    ^
    [error] Type error in expression
    

Can you please help?

Thanks.

ScalaSeq rule requires blank config or it crashes

The ScalaSeq rule seems to crash in a confusing way if it's just listed in the rules part of the scalafix configuration without any additional options:

 error: {"rules": ["fix.scala213.ScalaSeq"]} has no field 'fix'.

This is really hard to figure out what is wrong. Adding additional configuration of fix.scala213.ScalaSeq {} makes the rule work, so the configuration is effectively unnecessary.

Can we get a better error here, or at least document this?

ExplicitNonNullaryApply should fix lhs & arg in ApplyInfix(lhs, op, tags, args)

trait Matchers {
  class AnyShouldWrapper[T] {
    def shouldBe(right: Any) = ???
  }
}

trait ExplicitNonNullaryApplyInfixSpec extends Matchers {
  def lhs(): AnyShouldWrapper[Int]
  def arg() = ""

  // All cases should be rewritten to `lhs() shouldBe arg()`
  lhs shouldBe arg
  lhs() shouldBe arg
  lhs shouldBe arg()
}

Many scalatest specs will be fixed if we implement this

"IllegalArgumentException: requirement failed" is not actionable

I am trying to use "scala-rewrites" % "0.1.0" but the below error occurs.
I think the error message "requirement failed" is unclear about what is requirement, from user POV.
It would be improved if message contains "xyz is missing" or a link to document.

[error] scalafix.internal.v1.FileException: unexpected error processing file /home/vagrant/IdeaProjects/annofab/common/shared/src/main/scala/jp/kurusugawa/af/common/model/v1/Login.scala
[error] Caused by: java.lang.IllegalArgumentException: requirement failed: List(-Ymacro-annotations, -Xplugin:/home/vagrant/.cache/coursier/v1/https/repo1.maven.org/maven2/org/wartremover/wartremover_2.13.3/2.4.9/wartremover_2.13.3-2.4.9.jar, -Xplugin:/home/vagrant/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalameta/semanticdb-scalac_2.13.3/4.3.18/semanticdb-scalac_2.13.3-4.3.18.jar, -Yrangepos, -P:semanticdb:synthetics:on, -P:semanticdb:targetroot:/home/vagrant/IdeaProjects/annofab/common/jvm/target/scala-2.13/meta)
[error]         at scala.Predef$.require(Predef.scala:281)
[error]         at scala.meta.internal.pc.ScalafixGlobal$.newCompiler(ScalafixGlobal.scala:36)
[error]         at fix.scala213.ExplicitNonNullaryApply.$anonfun$withConfiguration$1(ExplicitNonNullaryApply.scala:99)
[error]         at scalafix.internal.v1.LazyValue.$anonfun$computeValue$1(LazyValue.scala:24)
[error]         at scala.util.Try$.apply(Try.scala:213)
[error]         at scalafix.internal.v1.LazyValue.computeValue(LazyValue.scala:22)
[error]         at scalafix.internal.v1.LazyValue.value(LazyValue.scala:29)
[error]         at fix.scala213.ExplicitNonNullaryApply.power$lzycompute$1(ExplicitNonNullaryApply.scala:37)
[error]         at fix.scala213.ExplicitNonNullaryApply.power$1(ExplicitNonNullaryApply.scala:37)
[error]         at fix.scala213.ExplicitNonNullaryApply.$anonfun$unsafeFix$9(ExplicitNonNullaryApply.scala:50)
[error]         at fix.scala213.ExplicitNonNullaryApply.$anonfun$unsafeFix$9$adapted(ExplicitNonNullaryApply.scala:49)
[error]         at scala.Option$WithFilter.$anonfun$withFilter$1(Option.scala:332)
[error]         at scala.Option$WithFilter.$anonfun$withFilter$1$adapted(Option.scala:332)
[error]         at scala.Option.filter(Option.scala:289)
[error]         at scala.Option$WithFilter.map(Option.scala:329)
[error]         at fix.scala213.ExplicitNonNullaryApply.$anonfun$unsafeFix$8(ExplicitNonNullaryApply.scala:49)
[error]         at scala.Option$WithFilter.flatMap(Option.scala:271)
[error]         at fix.scala213.ExplicitNonNullaryApply.fix$scala213$ExplicitNonNullaryApply$$fix$1(ExplicitNonNullaryApply.scala:42)
[error]         at fix.scala213.ExplicitNonNullaryApply$$anonfun$unsafeFix$13.applyOrElse(ExplicitNonNullaryApply.scala:75)
[error]         at fix.scala213.ExplicitNonNullaryApply$$anonfun$unsafeFix$13.applyOrElse(ExplicitNonNullaryApply.scala:73)
[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:392)
[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:392)
[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.scala213.ExplicitNonNullaryApply.unsafeFix(ExplicitNonNullaryApply.scala:73)
[error]         at fix.scala213.ExplicitNonNullaryApply.fix(ExplicitNonNullaryApply.scala:26)
[error]         at scalafix.internal.v1.Rules.$anonfun$semanticPatch$1(Rules.scala:75)
[error]         at scala.collection.immutable.List.map(List.scala:286)
[error]         at scalafix.internal.v1.Rules.semanticPatch(Rules.scala:73)
[error]         at scalafix.internal.v1.MainOps$.unsafeHandleFile(MainOps.scala:232)
[error] stack trace is suppressed; run last commonJVM / Compile / scalafix for the full output

My build

// plugins.sbt
addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.9.17")
// build.sbt
scalaVersion := "2.13.3"
ThisBuild / scalafixDependencies ++= Seq(
  "org.scala-lang" %% "scala-rewrites" % "0.1.0"
)
inThisBuild(
  List(
    semanticdbEnabled := true, 
    semanticdbOptions += "-P:semanticdb:synthetics:on",
    semanticdbVersion := "4.3.18"
  )
)

Can't get ExplicitNonNullaryApply working

Hey! I'm on Scala 2.13.3, SemanticDB 4.3.17, sbt-scalafix 0.9.17, I've locally published this repo and added this to SBT:

      ThisBuild / scalacOptions += "-Yrangepos"
      ThisBuild / scalacOptions += "-P:semanticdb:synthetics:on"
      ThisBuild / scalafixDependencies += "org.scala-lang" %% "scala-rewrites" % "0.1.0-SNAPSHOT"

and I can't get anything to work.

> scalafix ExplicitNonNullaryApply
scalafix.sbt.InvalidArgument: Unknown rule 'ExplicitNonNullaryApply'

Hmmm, ok, look at source code - try again:

> scalafix fix.scala213.ExplicitNonNullaryApply
java.lang.IllegalArgumentException: requirement failed: List(-target:11, -unchecked, -Wconf:msg=may.not.be.exhaustive:e, -Wdead-code, -Wunused:explicits, -Wunused:implicits, -Wunused:imports, -Wunused:locals, -Wunused:nowarn, -Wunused:patvars, -Wunused:privates, -Xlint:adapted-args, -Xlint:constant, -Xlint:delayedinit-select, -Xlint:deprecation, -Xlint:eta-zero, -Xlint:implicit-not-found, -Xlint:inaccessible, -Xlint:infer-any, -Xlint:missing-interpolator, -Xlint:nonlocal-return, -Xlint:nullary-unit, -Xlint:option-implicit, -Xlint:poly-implicit-overload, -Xlint:private-shadow, -Xlint:stars-align, -Xlint:valpattern, -Xmixin-force-forwarders:false, -Xno-forwarders, -Xsource:2.13, -Ybackend-parallelism, 16, -Ycache-macro-class-loader:last-modified, -Ycache-plugin-class-loader:last-modified, -Yjar-compression-level, 9, -Ymacro-annotations, -Yno-generic-signatures, -Ypatmat-exhaust-depth, off, -Xcheckinit, -Xplugin:/home/golly/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-js/scalajs-compiler_2.13.3/1.1.0/scalajs-compiler_2.13.3-1.1.0.jar, -Xplugin:/home/golly/.cache/coursier/v1/https/repo1.maven.org/maven2/org/typelevel/kind-projector_2.13.3/0.11.0/kind-projector_2.13.3-0.11.0.jar, -Xplugin:/home/golly/.cache/coursier/v1/https/repo1.maven.org/maven2/com/olegpy/better-monadic-for_2.13/0.3.1/better-monadic-for_2.13-0.3.1.jar, -Xplugin:/home/golly/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalameta/semanticdb-scalac_2.13.3/4.3.17/semanticdb-scalac_2.13.3-4.3.17.jar, -P:semanticdb:targetroot:/tmp/shipreq.sbt/webapp-client-loaders/target/scala-2.13/meta)

I'm I doing something wrong or there something wrong with the rule?

Failure in the community build

[scala-rewrites] ===========
[scala-rewrites] => Obtained
[scala-rewrites] ===========
[scala-rewrites] 
[scala-rewrites] package fix.scala213
[scala-rewrites] 
[scala-rewrites] class NullaryEtaExpansion {
[scala-rewrites]   val str1         = ""
[scala-rewrites]   def prop         = ""
[scala-rewrites]   def meth()       = ""
[scala-rewrites]   def void(x: Any) = ""
[scala-rewrites] 
[scala-rewrites]   def def_str1 = str1 _ // rewrite
[scala-rewrites]   def def_prop = prop _ // rewrite
[scala-rewrites]   def def_meth = meth _ // leave
[scala-rewrites]   def def_idty = void _ // leave
[scala-rewrites] 
[scala-rewrites]   val val_str1 = str1 _ // rewrite
[scala-rewrites]   val val_prop = prop _ // rewrite
[scala-rewrites]   val val_meth = meth _ // leave
[scala-rewrites]   val val_idty = void _ // leave
[scala-rewrites] 
[scala-rewrites]   var var_str1 = str1 _ // rewrite
[scala-rewrites]   var var_prop = prop _ // rewrite
[scala-rewrites]   var var_meth = meth _ // leave
[scala-rewrites]   var var_idty = void _ // leave
[scala-rewrites] 
[scala-rewrites]   lazy val lzy_str1 = str1 _ // rewrite
[scala-rewrites]   lazy val lzy_prop = prop _ // rewrite
[scala-rewrites]   lazy val lzy_meth = meth _ // leave
[scala-rewrites]   lazy val lzy_idty = void _ // leave
[scala-rewrites] }
[scala-rewrites] =======
[scala-rewrites] => Diff
[scala-rewrites] =======
[scala-rewrites] --- obtained
[scala-rewrites] +++ expected
[scala-rewrites] @@ -8,4 +8,4 @@
[scala-rewrites] ∙
[scala-rewrites] -  def def_str1 = str1 _ // rewrite
[scala-rewrites] -  def def_prop = prop _ // rewrite
[scala-rewrites] +  def def_str1 = () => str1 // rewrite
[scala-rewrites] +  def def_prop = () => prop // rewrite
[scala-rewrites]    def def_meth = meth _ // leave
[scala-rewrites] @@ -13,4 +13,4 @@
[scala-rewrites] ∙
[scala-rewrites] -  val val_str1 = str1 _ // rewrite
[scala-rewrites] -  val val_prop = prop _ // rewrite
[scala-rewrites] +  val val_str1 = () => str1 // rewrite
[scala-rewrites] +  val val_prop = () => prop // rewrite
[scala-rewrites]    val val_meth = meth _ // leave
[scala-rewrites] @@ -18,4 +18,4 @@
[scala-rewrites] ∙
[scala-rewrites] -  var var_str1 = str1 _ // rewrite
[scala-rewrites] -  var var_prop = prop _ // rewrite
[scala-rewrites] +  var var_str1 = () => str1 // rewrite
[scala-rewrites] +  var var_prop = () => prop // rewrite
[scala-rewrites]    var var_meth = meth _ // leave
[scala-rewrites] @@ -23,4 +23,4 @@
[scala-rewrites] ∙
[scala-rewrites] -  lazy val lzy_str1 = str1 _ // rewrite
[scala-rewrites] -  lazy val lzy_prop = prop _ // rewrite
[scala-rewrites] +  lazy val lzy_str1 = () => str1 // rewrite
[scala-rewrites] +  lazy val lzy_prop = () => prop // rewrite
[scala-rewrites]    lazy val lzy_meth = meth _ // leave
[scala-rewrites] [info] - fix/scala213/NullaryEtaExpansion.scala *** FAILED ***

Latest release (0.1.3) doesn't work with Scala 2.13.9+

0.1.3 has been released over two years ago and doesn't work with latest Scala 2 versions.

Although this repo keeps getting updates and the problem has been solved in the main branch for a while, compiling it locally as a dependency is inconvenient and a new release is preferable.

Is there a chance for a new release in the near future?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.