Repository navigation
scalasem: expand the sbt 2 IVY_HOME and SBT_BOOT classpath paths - #31
Merged
Merged
Conversation
sbt 2 prints a publishLocal dependency as ${IVY_HOME}/local/..., which was left unexpanded, so those jars never reached the inspector classpath. The compiler then could not resolve their symbols and aborted every batch that referenced them.
prabhu
enabled auto-merge
October 30, 2026 03:51
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Running scalasem over a fresh sbt 2.0.10 build of atom (Scala 3.10.0) produced facts for only 4 of its 24 main sources, with an
unreadable-tastycount of 21. The cause was the module classpath, not the TASTy reader. sbt 2 prints dependency paths in a virtual form, and a dependency installed withpublishLocal, which is how atom picks up chen, comes out as${IVY_HOME}/local/io.appthreat/.... scalasem only expanded${CSR_CACHE},${OUT},${BASE}and${WORKSPACE}, so every chen jar stayed as a literal${IVY_HOME}path and was dropped from the inspector classpath. The compiler then reported the chen symbols as undefined, the inspector stopped with aMatchErroronNoSymbol, and each batch that referenced chen came back with nothing but a diagnostic until the retry budget ran out.expandVirtualPathsnow expands every root the sbt 2 file converter maps, which persbt.internal.Loadin sbt 2.0.10 areOUT,BASE,SBT_BOOT,IVY_HOMEandJAVA_HOMEalongside the Coursier cache. The Ivy home and boot directory follow the sbt launcher:sbt.ivy.homeandsbt.boot.directory(orsbt.global.base) when set throughJAVA_OPTS,SBT_OPTS,.jvmoptsor.sbtopts, and otherwise~/.ivy2and~/.sbt/boot. The batching and retry budget are unchanged.Over atom at b66128a, files with facts went from 4 to 24 of 24, calls from 321 to 8223 and references from 948 to 16003, and the
unreadable-tastydiagnostic is gone. Theunresolved-symbolscount went from 11 to 115 because far more code is now walked; the compiler prints no errors for those, and chen shows a similar rate. Over chen at 3b1595a1 the report is unchanged: 525 files and the same counts and diagnostics before and after. The new test inscalasem-engine.jsfails on main and passes here.npm testandnpm run test:scalapass and Prettier reports no changes.The version is bumped to 1.10.6.