-
-
Notifications
You must be signed in to change notification settings - Fork 358
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
Support for .mill
and .mill.scala
files in VSCode/Metals (1000USD Bounty)
#3664
Comments
.mill
files in VSCode/Metals (1000USD Bounty).mill
and .mill.scala
files in VSCode/Metals (1000USD Bounty)
I'm not sure that's possible. I tried and Metals can't really get the |
I think it's worth investigating this theory further. We do control the entire compilation pipeline, and we already patch the ASTs post-parser via a compiler plugin to point at the original non-codegenned files. I remember in earlier testing that I could get navigation working for |
Long term having proper support for wrapped/transformed source files as part of BSP makes sense. Short term, I'm curious how far we can get without it. |
@lihaoyi I'm trying to hack it on the Metals side by reading the generated files and parsing the |
@lolgab how does metals get the file name and line number information normally? Does it get it from the Scala AST in the compiler? Could it be we're not running the linenumberplugin when generating semanticdb files, so they Scala ASTs are not picking up the fixed filenames and line numbets? |
I'm not sure, but do we even compile the build files before processing? They aren't even valid Scala files. |
We do not compile the build.mill files before processing, but during compilation the linenumberplugin is meant to go and fix up all the line numbers and file names in the scala AST to point at the original un-processed files. |
Going to call this done for now with scalameta/metals#6752 and scalameta/metals-vscode#1543. The |
From the maintainer Li Haoyi: I'm putting a 1000USD bounty on this issue, payable by bank transfer on a merged PR implementing this.
Mill 0.12.0 is moving towards using
build.mill
/package.mill
files rather thanbuild.sc
. Basic IntelliJ support landed in JetBrains/intellij-scala#667, so the next thing to do is get them working in VSCode/Metals..mill
and.mill.scala
files already mostly work in IntelliJ/BSP, so this ticket is to get the same support for.mill
and.mill.scala
files in VSCode/Metals/BSP as well.The acceptance criteria is as follows:
bar/qux/package.mill
build.MyModule
should bring you tobuild.mill
build.MyModule
should bring you tomill-scalalib_2.13-0.12.0-RC3-sources.jar/mill/scalalib/package.scala
(or equivalent)foo/package.mill
build.MyModule
should bring you tobuild.mill
build.bar.qux.mymodule
should bring you tobar/qux/package.mill
RootModule
should bring you tomill-main_2.13-0.12.0-RC3-sources.jar/mill/package.scala
(or equivalent)build.mill
ScalaModule
should bring you tomill-scalalib_2.13-0.12.0-RC3-sources.jar/mill/scalalib/ScalaModule.scala
(or equivalent).mill
files are renamed to.mill.scala
For the purposes of this ticket, treating
.mill
files as vanilla.scala
files (with the appropriate classpath and sources) is sufficient. It's not 100% precise, but is good enough for 95% of scenarios, and we can sort out the last 5% in a followup. Notably, we do not want to treat them as.sc
files, since things like ScalaCLI directives and other scripty things don't workPrior Art: scalameta/metals#6752
Dependencies
semanticDbData
fails on meta-build #3666mill
extension to supported ones scalameta/scalameta#3989The text was updated successfully, but these errors were encountered: