Fix #397: Use a fake owner for orphan symbols in Scala 2 pickles. #399
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.
We had a long-standing issue with "orphan"
TYPEsym
s andVALsym
s in Scala 2 pickles. We were replacing them by "no symbol" themselves, because we did not know what to do with them.Issue #397 finally provided a good setup to diagnose it. It turns out that those orphan symbols can be found as term and type params of method types and poly types, in particular, Scala 2's encoding of type lambdas, which can be produced by kind-projector.
Since we now have a good reason to have those orphan symbols, we bite the bullet and allocate one global symbol to "host" all those symbols coming from Scala 2.
Locally tested with
libraryDependencies += "org.scalaz" % "scalaz-core_2.13" % "7.3.5",
on the testSources classpath.