joan38 / mill-scalafix

A Scalafix plugin for Mill build tool
MIT License
32 stars 17 forks source link

`ExlicitResultTypes` fix is not working #174

Closed lefou closed 10 months ago

lefou commented 10 months ago

I discovered this issue here: https://github.com/com-lihaoyi/mill/pull/2922

And added a reproducer in form of an integration test in this PR: https://github.com/joan38/mill-scalafix/pull/172

joan38 commented 10 months ago

Thanks @lefou for the report. My first thought is that's a bug that needs to be reported to scalacenter/scalafix directly since this plugin is just running it.

lefou commented 10 months ago

@joan38 It doesn't look like an upstream issue to me, as Tomasz showed in https://github.com/com-lihaoyi/mill/pull/2922#issuecomment-1855899172 that the same scalafix rule works when it is run from Metals.

joan38 commented 10 months ago

I also confirmed it works in SBT.

I'm really confused here. We pretty much have no code in this repo. I don't see why that would not work. We probably need help from the scalacenter, @bjaglin maybe?

bjaglin commented 10 months ago

I am not from the scalacenter but I can have a look :)

I have never used mill though, and I am running into a compilation error locally, with JDK17. What am I missing?

brice@t14:~/git/scala/mill-scalafix$ ./mill __.checkFormat + __.fix --check + __.docJar + __.test
[4/188] mill-scalafix[0.10.12].checkFormat 
Everything is formatted already
[7/188] mill-scalafix[0.11.1].checkFormat 
Everything is formatted already
[50/188] mill-scalafix[0.10.12].semanticDbData 
[info] compiling 3 Scala sources to /home/brice/git/scala/mill-scalafix/out/mill-scalafix/0.10.12/semanticDbData.dest/classes ...
[error] 
[error]   bad constant pool index: 0 at pos: 48445
[error]      while compiling: <no file>
[error]         during phase: globalPhase=<no phase>, enteringPhase=<some phase>
[error]      library version: version 2.13.10
[error]     compiler version: version 2.13.10
[error]   reconstructed args: -bootclasspath /home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.10/scala-library-2.13.10.jar -deprecation -encoding utf8 -explaintypes -feature -unchecked -Wconf:cat=deprecation:w -Wconf:cat=unchecked:w -Wconf:cat=feature:w -Wconf:cat=deprecation:ws -Wconf:cat=feature:ws -Wconf:cat=optimizer:ws -Wdead-code -Wvalue-discard -Wnumeric-widen -Wunused:imports -Wunused:patvars -Wunused:privates -Wunused:locals -Wunused:explicits -Wunused:implicits -Wunused:synthetics -Wunused:nowarn -Wextra-implicit -Xlint:adapted-args -Xlint:nullary-unit -Xlint:inaccessible -Xlint:infer-any -Xlint:missing-interpolator -Xlint:doc-detached -Xlint:private-shadow -Xlint:type-parameter-shadow -Xlint:poly-implicit-overload -Xlint:option-implicit -Xlint:delayedinit-select -Xlint:package-object-classes -Xlint:stars-align -Xlint:constant -Xlint:deprecation -Xlint:implicit-recursion -classpath /home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/mill-main_2.13/0.10.12/mill-main_2.13-0.10.12.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/mill-scalalib_2.13/0.10.12/mill-scalalib_2.13-0.10.12.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/ch/epfl/scala/scalafix-interfaces/0.11.1/scalafix-interfaces-0.11.1.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-collection-compat_2.13/2.11.0/scala-collection-compat_2.13-2.11.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-java8-compat_2.13/1.0.2/scala-java8-compat_2.13-1.0.2.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/windows-ansi/windows-ansi/0.0.4/windows-ansi-0.0.4.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/mill-main-core_2.13/0.10.12/mill-main-core_2.13-0.10.12.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/mill-main-client/0.10.12/mill-main-client-0.10.12.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalameta/scalafmt-dynamic_2.13/3.6.1/scalafmt-dynamic_2.13-3.6.1.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/mill-scalalib-api_2.13/0.10.12/mill-scalalib-api_2.13-0.10.12.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/mill-testrunner_2.13/0.10.12/mill-testrunner_2.13-0.10.12.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/interface/1.0.18/interface-1.0.18.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/fusesource/jansi/jansi/1.18/jansi-1.18.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/mill-moduledefs_2.13/0.10.9/mill-moduledefs_2.13-0.10.9.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/scalac-mill-moduledefs-plugin_2.13.10/0.10.9/scalac-mill-moduledefs-plugin_2.13.10-0.10.9.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/ammonite_2.13.10/2.5.5/ammonite_2.13.10-2.5.5.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalameta/trees_2.13/4.7.6/trees_2.13-4.7.6.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier_2.13/2.1.0/coursier_2.13-2.1.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/net/java/dev/jna/jna/5.13.0/jna-5.13.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/net/java/dev/jna/jna-platform/5.13.0/jna-platform-5.13.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/eed3si9n/jarjarabrams/jarjar-abrams-core_2.13/1.8.2/jarjar-abrams-core_2.13-1.8.2.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/mill-main-api_2.13/0.10.12/mill-main-api_2.13-0.10.12.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/mill-main-util_2.13/0.10.12/mill-main-util_2.13-0.10.12.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalameta/scalafmt-interfaces/3.6.1/scalafmt-interfaces-3.6.1.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/typesafe/config/1.4.2/config-1.4.2.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.10/scala-compiler-2.13.10.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/sourcecode_2.13/0.3.0/sourcecode_2.13-0.3.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/ammonite-terminal_2.13/2.5.5/ammonite-terminal_2.13-2.5.5.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/ammonite-util_2.13/2.5.5/ammonite-util_2.13-2.5.5.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/ammonite-runtime_2.13.10/2.5.5/ammonite-runtime_2.13.10-2.5.5.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/ammonite-interp-api_2.13.10/2.5.5/ammonite-interp-api_2.13.10-2.5.5.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/ammonite-repl-api_2.13.10/2.5.5/ammonite-repl-api_2.13.10-2.5.5.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/ammonite-interp_2.13.10/2.5.5/ammonite-interp_2.13.10-2.5.5.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/ammonite-repl_2.13.10/2.5.5/ammonite-repl_2.13.10-2.5.5.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/ammonite-compiler_2.13.10/2.5.5/ammonite-compiler_2.13.10-2.5.5.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalameta/common_2.13/4.7.6/common_2.13-4.7.6.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalameta/fastparse-v2_2.13/2.3.1/fastparse-v2_2.13-2.3.1.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/plokhotnyuk/jsoniter-scala/jsoniter-scala-core_2.13/2.13.5.2/jsoniter-scala-core_2.13-2.13.5.2.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-core_2.13/2.1.0/coursier-core_2.13-2.1.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-cache_2.13/2.1.0/coursier-cache_2.13-2.1.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-proxy-setup/2.1.0/coursier-proxy-setup-2.1.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/eed3si9n/jarjar/jarjar/1.8.2/jarjar-1.8.2.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.10/scala-reflect-2.13.10.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/os-lib_2.13/0.8.1/os-lib_2.13-0.8.1.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle_2.13/2.0.0/upickle_2.13-2.0.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-sbt/test-interface/1.0/test-interface-1.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/fansi_2.13/0.4.0/fansi_2.13-0.4.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/kohlschutter/junixsocket/junixsocket-native-common/2.6.2/junixsocket-native-common-2.6.2.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/kohlschutter/junixsocket/junixsocket-common/2.6.2/junixsocket-common-2.6.2.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/java-diff-utils/java-diff-utils/4.12/java-diff-utils-4.12.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/jline/jline/3.21.0/jline-3.21.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/pprint_2.13/0.7.3/pprint_2.13-0.7.3.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/requests_2.13/0.7.0/requests_2.13-0.7.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/mainargs_2.13/0.2.2/mainargs_2.13-0.2.2.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/ammonite-compiler-interface_2.13.10/2.5.5/ammonite-compiler-interface_2.13.10-2.5.5.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/ch/epfl/scala/bsp4j/2.0.0-M6/bsp4j-2.0.0-M6.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/fastparse_2.13/2.3.0/fastparse_2.13-2.3.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/jline/jline-terminal/3.14.1/jline-terminal-3.14.1.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/jline/jline-terminal-jna/3.14.1/jline-terminal-jna-3.14.1.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/jline/jline-reader/3.14.1/jline-reader-3.14.1.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.13/2.1.0/scala-xml_2.13-2.1.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/scalaparse_2.13/2.3.0/scalaparse_2.13-2.3.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/javassist/javassist/3.21.0-GA/javassist-3.21.0-GA.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/javaparser/javaparser-core/3.2.5/javaparser-core-3.2.5.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/thesamet/scalapb/scalapb-runtime_2.13/0.11.11/scalapb-runtime_2.13-0.11.11.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/geny_2.13/0.7.1/geny_2.13-0.7.1.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/concurrent-reference-hash-map/1.1.0/concurrent-reference-hash-map-1.1.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-util_2.13/2.1.0/coursier-util_2.13-2.1.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/jniutils/windows-jni-utils/0.3.3/windows-jni-utils-0.3.3.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-archiver/4.6.2/plexus-archiver-4.6.2.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default/2.1.1/plexus-container-default-2.1.1.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/virtuslab/scala-cli/config_2.13/0.2.0/config_2.13-0.2.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/ow2/asm/asm/9.2/asm-9.2.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.2/asm-commons-9.2.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/ant/ant/1.9.9/ant-1.9.9.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/maven/maven-plugin-api/3.3.9/maven-plugin-api-3.3.9.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/ujson_2.13/2.0.0/ujson_2.13-2.0.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upack_2.13/2.0.0/upack_2.13-2.0.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle-implicits_2.13/2.0.0/upickle-implicits_2.13-2.0.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/eclipse/lsp4j/org.eclipse.lsp4j.generator/0.8.1/org.eclipse.lsp4j.generator-0.8.1.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/eclipse/lsp4j/org.eclipse.lsp4j.jsonrpc/0.8.1/org.eclipse.lsp4j.jsonrpc-0.8.1.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/thesamet/scalapb/lenses_2.13/0.11.11/lenses_2.13-0.11.11.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/google/protobuf/protobuf-java/3.19.2/protobuf-java-3.19.2.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/javax/inject/javax.inject/1/javax.inject-1.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/3.5.0/plexus-utils-3.5.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-io/3.4.1/plexus-io-3.4.1.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-compress/1.22/commons-compress-1.22.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/iq80/snappy/snappy/0.4/snappy-0.4.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/tukaani/xz/1.9/xz-1.9.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/luben/zstd-jni/1.5.4-2/zstd-jni-1.5.4-2.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-classworlds/2.6.0/plexus-classworlds-2.6.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/xbean/xbean-reflect/3.7/xbean-reflect-3.7.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.2/asm-tree-9.2.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/ant/ant-launcher/1.9.9/ant-launcher-1.9.9.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/maven/maven-model/3.3.9/maven-model-3.3.9.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/maven/maven-artifact/3.3.9/maven-artifact-3.3.9.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/eclipse/sisu/org.eclipse.sisu.plexus/0.3.2/org.eclipse.sisu.plexus-0.3.2.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle-core_2.13/2.0.0/upickle-core_2.13-2.0.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/eclipse/xtend/org.eclipse.xtend.lib/2.18.0/org.eclipse.xtend.lib-2.18.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/google/code/gson/gson/2.8.2/gson-2.8.2.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/javax/enterprise/cdi-api/1.0/cdi-api-1.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.2/org.eclipse.sisu.inject-0.3.2.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/eclipse/xtext/org.eclipse.xtext.xbase.lib/2.18.0/org.eclipse.xtext.xbase.lib-2.18.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/eclipse/xtend/org.eclipse.xtend.lib.macro/2.18.0/org.eclipse.xtend.lib.macro-2.18.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/google/guava/guava/21.0/guava-21.0.jar:/home/brice/git/scala/mill-scalafix/mill-scalafix/compile-resources:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/com/sourcegraph/semanticdb-javac/0.9.6/semanticdb-javac-0.9.6.jar:/home/brice/git/scala/mill-scalafix/out/mill-scalafix/0.10.12/semanticDbData.dest/classes -language:existentials -language:higherKinds -language:implicitConversions -language:experimental.macros -Xcheckinit -Xplugin:/home/brice/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalameta/semanticdb-scalac_2.13.10/4.8.11/semanticdb-scalac_2.13.10-4.8.11.jar -Xsource:3.0.0 -Ystop-after:semanticdb-typer -Yrangepos -Vimplicits -Vtype-diffs -P:semanticdb:sourceroot:/home/brice/git/scala/mill-scalafix
[error] 
[error]   last tree to typer: EmptyTree
[error]        tree position: <unknown>
[error]             tree tpe: <notype>
[error]               symbol: null
[error]            call site: <none> in <none>
joan38 commented 10 months ago

Interesting, I've never seen this error.

Does ./mill clean and ./mill __.compile work?

bjaglin commented 10 months ago

Does ./mill clean and ./mill __.compile work?

cleaning does work, it's really the compilation step that fails

bjaglin commented 10 months ago

Sorry for the noise, I sorted it out, it was a conflict between the java in my PATH and JAVA_HOME, unrelated to mill...

bjaglin commented 10 months ago

So from what I see and understand after a quick intro to mill, the fix task depends on semanticDbData, feeding the output of that, which consists only of semanticdb files (even though I assume class files are available in the output of the zinc worker), to scalafix as classpath. However, scalafix require also class files in that directory, particularly for advanced rules like ExplicitResultTypes.

I assume this issue is a regression of https://github.com/joan38/mill-scalafix/pull/102 since at that point localClasspath probably contained both class files and semanticdb files.

I believe the fix is to

From an upstream perspective, I will look at why scalafix does not fail fast in the absence of class files (I assume we only check for the presence of semanticdb files).

joan38 commented 10 months ago

Amazing @bjaglin! I would never have found this myself. I will try your suggestions. And update here.

lefou commented 10 months ago

Thank you @bjaglin for your input! This was it!

Unfortunately, another integration test broke after I feed the whole classpath to scalafix. See PR #172 for details. Any ideas, @joan38 ?

lefou commented 10 months ago

I assume this issue is a regression of #102 since at that point localClasspath probably contained both class files and semanticdb files.

For the sake of completeness, I don't think #102 was a regression. mill-scalafix never forwarded the whole classpath to scalafix, which would be necessary for rules like ExplicitResultTypes to work correctly.

bjaglin commented 10 months ago

mill-scalafix never forwarded the whole classpath to scalafix, which would be necessary for rules like ExplicitResultTypes to work correctly.

Indeed. scalafixScalaBinaryVersion does work but it's unclear from the comments in https://github.com/joan38/mill-scalafix/issues/11 if ExplicitResultTypes ever worked - it probably didn't?