scalafix icon indicating copy to clipboard operation
scalafix copied to clipboard

Unclear error message when configuration attribute is not properly set

Open Gedochao opened this issue 7 months ago • 4 comments
trafficstars

I got the following error, when running scalafix with Scala 3.7.0-RC3:

error: The ExplicitResultTypes rule was compiled with a different Scala 3 minor (3.6) than the target sources (3.7). To fix this problem, make sure you are running the latest version of Scalafix. If that is the case, either change your build to stick to the Scala 3 LTS or Next versions supported by Scalafix, or enable ExplicitResultTypes.fetchScala3CompilerArtifactsOnVersionMismatch in .scalafix.conf in order to try to load what is needed dynamically.

But even with scalafix.conf:

rules = [
  DisableSyntax,
  LeakingImplicitClassVal,
  NoValInForComprehension,
  ExplicitResultTypes,
  OrganizeImports
]
ExplicitResultTypes.fetchScala3CompilerArtifactsOnVersionMismatch

I get:

Exception in thread "main" java.lang.IllegalArgumentException: 9 is not a valid line number, allowed [0..8]
        at metaconfig.Input.lineToOffset(Input.scala:33)
        at metaconfig.Position.lineContent(Position.scala:48)
        at metaconfig.Position.pretty(Position.scala:21)
        at metaconfig.ConfError$$anon$8.<init>(ConfError.scala:125)
        at metaconfig.ConfError$.parseError(ConfError.scala:125)
        at metaconfig.typesafeconfig.TypesafeConfig2Class$.gimmeSafeConf(TypesafeConfig2Class.scala:62)
        at metaconfig.typesafeconfig.TypesafeConfig2Class$.gimmeConfFromFile(TypesafeConfig2Class.scala:24)
        at metaconfig.Hocon$.fromInput(Hocon.scala:8)
        at metaconfig.Input$InputImplicits.parse(Input.scala:92)
        at metaconfig.Conf$.parseInput(Conf.scala:65)
        at scalafix.internal.v1.Args.fileConfig(Args.scala:235)
        at scalafix.internal.v1.Args.baseConfig(Args.scala:215)
        at scalafix.internal.v1.Args.validate(Args.scala:417)
        at scalafix.internal.v1.MainOps$.run(MainOps.scala:73)
        at scalafix.v1.Main$.run(Main.scala:34)
        at scalafix.v1.Main$.main(Main.scala:25)
        at scalafix.cli.Cli$.main(Cli.scala:9)
        at scalafix.cli.Cli.main(Cli.scala)

Running with Scala CLI nightly (same behaviour on v1.7.1), Scalafix 0.14.2:

scala-cli  fix . --power -S 3.7.0-RC3
# Running built-in rules...
# Writing project.scala
# Built-in rules completed.
# Running scalafix rules...
# Compiling project (Scala 3.7.0-RC3, JVM (17))
# Compiled project (Scala 3.7.0-RC3, JVM (17))
# Compiling project (test, Scala 3.7.0-RC3, JVM (17))
# Compiled project (test, Scala 3.7.0-RC3, JVM (17))
# Exception in thread "main" java.lang.IllegalArgumentException: 9 is not a valid line number, allowed [0..8]
#         at metaconfig.Input.lineToOffset(Input.scala:33)
#         at metaconfig.Position.lineContent(Position.scala:48)
#        at metaconfig.Position.pretty(Position.scala:21)
#        at metaconfig.ConfError$$anon$8.<init>(ConfError.scala:125)
#         at metaconfig.ConfError$.parseError(ConfError.scala:125)
#         at metaconfig.typesafeconfig.TypesafeConfig2Class$.gimmeSafeConf(TypesafeConfig2Class.scala:62)
#         at metaconfig.typesafeconfig.TypesafeConfig2Class$.gimmeConfFromFile(TypesafeConfig2Class.scala:24)
#         at metaconfig.Hocon$.fromInput(Hocon.scala:8)
#        at metaconfig.Input$InputImplicits.parse(Input.scala:92)
#         at metaconfig.Conf$.parseInput(Conf.scala:65)
#        at scalafix.internal.v1.Args.fileConfig(Args.scala:235)
#         at scalafix.internal.v1.Args.baseConfig(Args.scala:215)
#         at scalafix.internal.v1.Args.validate(Args.scala:417)
#         at scalafix.internal.v1.MainOps$.run(MainOps.scala:73)
#         at scalafix.v1.Main$.run(Main.scala:34)
#         at scalafix.v1.Main$.main(Main.scala:25)
#         at scalafix.cli.Cli$.main(Cli.scala:9)
#         at scalafix.cli.Cli.main(Cli.scala)
# scalafix rules failed.

Gedochao avatar Apr 15 '25 15:04 Gedochao