Skip to content
  • Alec Theriault's avatar
    Warn on all out-of-range literals in pats/exprs · 75a8349b
    Alec Theriault authored and Ryan Scott's avatar Ryan Scott committed
    Summary:
    These changes were motivated by #13256. While poking around, I
    realized we weren't very consistent in our "-Woverflowed-literals"
    warnings. This patch fixes that by:
    
      * warning earlier on in the pipeline (ie. before we've desugared
        'Int' patterns into 'I# Int#')
      * handling 'HsLit' as well as 'HsOverLit' (this covers unboxed
        literals)
      * covering more pattern / expression forms
    
    4/6 of the warnings in the 'Overflow' test are due to this patch. The
    other two are mostly for completeness.
    
    Also fixed a missing empty-enumeration warning for 'Natural'.
    
    This warnings were tripped up by the 'Bounded Word' instance (see #9505),
    but the fix was obvious and simple: use unboxed word literals.
    
    Test Plan: make TEST=Overflow && make TEST=T10930
    
    Reviewers: hvr, bgamari, RyanGlScott
    
    Reviewed By: RyanGlScott
    
    Subscribers: RyanGlScott, rwbarton, carter
    
    GHC Trac Issues: #13256, #10930
    
    Differential Revision: https://phabricator.haskell.org/D5181
    75a8349b