Skip to content

PmCheck: Pick up `EvVar`s bound in `HsWrapper`s for long-distance info

Sebastian Graf requested to merge wip/T18049 into master

HsWrappers introduce evidence bindings through WpEvLam which the pattern-match coverage checker should be made aware of.

Failing to do so caused #18049 (closed), where the resulting impreciseness of imcompleteness warnings seemingly contradicted with -Winaccessible-code.

The solution is simple: Collect all the evidence binders of an HsWrapper and add it to the ambient Deltas before desugaring the wrapped expression.

But that means we pick up many more evidence bindings, even when they wrap around code without a single pattern match to check! That regressed T3064 by over 300%, so now we are adding long-distance info lazily through judicious use of unsafeInterleaveIO.

Fixes #18049 (closed).

Edited by Sebastian Graf

Merge request reports