• Ryan Scott's avatar
    Fix #14681 and #14682 with precision-aimed parentheses · 575c009d
    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
    575c009d
all.T 17.4 KB