Scala 2 pickle reader: first read all symbols, then all their types. #421
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.
This mimics how we ready .tasty files. First, we create all the symbols defined in the pickle, without reading their types. Only then do we read all the types of all the symbols.
This avoids tricky recursive situations, notably in the presence of complicated existentials and refinement classes mixed together.
Some of the hacks we had to do for refinement classes disappear as a result, because they are not needed anymore.
We can also treat
MODULEsym
's like other term symbols, without separate code paths.