Compile the two shapes the checker accepted and the backend could not lower - #930
Merged
Merged
Conversation
… lower
A pattern inside a record pattern, `Box { size: Inner { depth } }`, and a `let`
that takes a value apart, `let Point { x, y } = point`. Both check. Both run
under the interpreter. Neither could be lowered, so `deed build` and
`deed test --compiled` had nothing to say about a file that used one.
Nothing had noticed, and the reason is worth writing down: a program the
backend cannot lower and a program with no tests in it produce the same
silence. `--compiled` prints "no tests found in the compiled backend" for
both.
`corpus_backend.rs` already said the backend refuses nothing, and that claim
was true. It was a claim about `examples/`, which is the shapes one author
happened to write, not about the language. So the fix comes with the ratchet
that would have caught it: every case in `conformance/` the checker accepts is
now held to being lowerable, and the conformance suite is written the other
way round, to cover the language rather than to be a program.
Break-verified: reverting the `let` lowering fails
`the_backend_lowers_every_conformance_case_the_checker_accepts` by name.
Both shapes also join `agreement.rs`, so the two engines are pinned to the
same answer rather than only to having one.
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.
A pattern inside a record pattern,
Box { size: Inner { depth } }, and aletthat takes a value apart,let Point { x, y } = point. Both check. Both run under the interpreter. Neither could be lowered, sodeed buildanddeed test --compiledhad nothing to say about a file that used one.Nothing had noticed, and the reason is worth writing down: a program the backend cannot lower and a program with no tests in it produce the same silence.
--compiledprints "no tests found in the compiled backend" for both.corpus_backend.rsalready said the backend refuses nothing, and that claim was true. It was a claim aboutexamples/, which is the shapes one author happened to write, not about the language. So the fix comes with the ratchet that would have caught it: every case inconformance/the checker accepts is now held to being lowerable, and the conformance suite is written the other way round, to cover the language rather than to be a program.Break-verified: reverting the
letlowering failsthe_backend_lowers_every_conformance_case_the_checker_acceptsby name.Both shapes also join
agreement.rs, so the two engines are pinned to the same answer rather than only to having one, and both get arun-conformance case so the interpreter's answer is written down too.The rest of the refusal list was swept the same way: empty-brace variant patterns, catch-all arms, ordering and
+pastInt, structural equality on records and choices, nestedmatch, bound comparisons onRatio, andassert refusesall compile or are refused by the checker before the backend ever sees them.