Incremental compilation: handle constructor proxies #11360
Merged
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.
I noticed that repeatedly runnning
sbt compile
in dotty lead to thesame files being compiled over and over even though nothing changed,
running
sbt "debug; compile"
revealed messages like this:[debug] Invalidating '${BASE}/compiler/target/scala-3.0.0-RC1/classes/dotty/tools/dotc/typer/Namer.class' because could not find class dotty.tools.dotc.typer.Namer$ on the classpath.
Indeed, Namer does not have a companion object so there's no
Namer$.class
file, but sbt was looking for one because we registeredsuch a companion with
ctx.sbtCallback.binaryDependency
, this happenedbecause we created a fake companion object for the purpose of holding
constructor proxies (fake apply methods that forward to a constructor).
The fix is to special-case such references, just like we already
special-cased references to the fake companion of Java classes.