diff options
author | Sebastian Graf <sebastian.graf@kit.edu> | 2020-08-26 18:50:30 +0200 |
---|---|---|
committer | Sebastian Graf <sebastian.graf@kit.edu> | 2020-09-09 18:24:23 +0200 |
commit | cf1aa1ae8ca9082b4a3d5682483eed2c6856796a (patch) | |
tree | 13e5724e1722b0adec4c8232d861d9a4ca71385e /testsuite/tests/pmcheck/should_compile/EmptyCase006.hs | |
parent | f45c059161a8d243271a695020147122aa32c523 (diff) | |
download | haskell-cf1aa1ae8ca9082b4a3d5682483eed2c6856796a.tar.gz |
PmCheck: Big refactor using guard tree variants more closely following source syntax (#18565)wip/T18565
Previously, we desugared and coverage checked plain guard trees as
described in Lower Your Guards. That caused (in !3849) quite a bit of
pain when we need to partially recover tree structure of the input
syntax to return covered sets for long-distance information, for
example.
In this refactor, I introduced a guard tree variant for each relevant
source syntax component of a pattern-match (mainly match groups, match,
GRHS, empty case, pattern binding). I made sure to share as much
coverage checking code as possible, so that the syntax-specific checking
functions are just wrappers around the more substantial checking
functions for the LYG primitives (`checkSequence`, `checkGrds`).
The refactoring payed off in clearer code and elimination of all panics
related to assumed guard tree structure and thus fixes #18565.
I also took the liberty to rename and re-arrange the order of functions
and comments in the module, deleted some dead and irrelevant Notes,
wrote some new ones and gave an overview module haddock.
Diffstat (limited to 'testsuite/tests/pmcheck/should_compile/EmptyCase006.hs')
0 files changed, 0 insertions, 0 deletions