Separate pre- and post-compilation checks #4138
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.
When working on #4045, I noticed that a pair of productions like:
were both being incorrectly flagged as singleton overloads, despite meeting the criteria for being an overload set.
Some investigation reveals that this is due to the overload lattice checks being applied before the compiler inserts subsorting productions into
KItem
for every sort; we therefore don't know thatList <: KItem
when constructing the overload lattice.The solution is to move the overload checks later in the compilation process, after the compilation pipeline has been run. This PR makes that change, along with some associated documentation and renaming for clarity. It also includes a regression test with the example above; I have verified that the test breaks before this PR.