Skip to content
  • Sebastian Graf's avatar
    PmCheck: Pick up `EvVar`s bound in `HsWrapper`s for long-distance info · fd7ea0fe
    Sebastian Graf authored and Marge Bot's avatar Marge Bot committed
    `HsWrapper`s introduce evidence bindings through `WpEvLam` which the
    pattern-match coverage checker should be made aware of.
    
    Failing to do so caused #18049, 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.
    fd7ea0fe