• Ryan Scott's avatar
    Fix #14681 and #14682 with precision-aimed parentheses · 33e3b3eb
    Ryan Scott authored
    It turns out that `Convert` was recklessly leaving off
    parentheses in two places:
    * Negative numeric literals
    * Patterns in lambda position
    This patch fixes it by adding three new functions, `isCompoundHsLit`,
    `isCompoundHsOverLit`, and `isCompoundPat`, and using them in the
    right places in `Convert`. While I was in town, I also sprinkled
    `isCompoundPat` among some `Pat`-constructing functions in `HsUtils`
    to help avoid the likelihood of this problem happening in other
    places. One of these places is in `TcGenDeriv`, and sprinkling
    `isCompountPat` there fixes #14682
    Test Plan: make test TEST="T14681 T14682"
    Reviewers: alanz, goldfire, bgamari
    Reviewed By: bgamari
    Subscribers: rwbarton, thomie, carter
    GHC Trac Issues: #14681, #14682
    Differential Revision: https://phabricator.haskell.org/D4323
    (cherry picked from commit 575c009d)
T14681.stderr 483 Bytes