By: Tom Sydney Kerckhove <syd@cs-syd.eu>
Fix: ignore filter now suppresses RemoveAction on ignored do-block statements
The 'ignore' filter in instrumentLExpr only guards the head of the whole
expression. GHC 9.10 expands a do-block 'do { logDebug "x"; rest }' into
'(>>) (logDebug "x") rest', whose head is '(>>)', so the filter does not
fire — and the RemoveAction operator then removes the ignored 'logDebug "x"'
action, producing exactly the noise the ignore list is meant to silence.
RemoveAction now consults instrumentEnvIgnore and declines to remove an
action whose syntactic head is ignored, in both the expanded '(>>)' path
(mutateChain) and the raw HsDo fallback (rawDoAction). To keep this silent,
applyOperator now treats an operator action that returns no alternatives as
a deliberate non-candidate rather than a validation failure (no WARNING).