[GHC] #13257: out-of-range warnings for negative literals, without -XNegativeLiterals
GHC
ghc-devs at haskell.org
Thu Feb 9 20:48:22 UTC 2017
#13257: out-of-range warnings for negative literals, without -XNegativeLiterals
-------------------------------------+-------------------------------------
Reporter: rwbarton | Owner:
Type: feature | Status: new
request |
Priority: normal | Milestone:
Component: Compiler | Version: 8.1
Keywords: | Operating System: Unknown/Multiple
Architecture: | Type of failure: None/Unknown
Unknown/Multiple |
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
By default (without `NegativeLiterals`) a negated literal `-1` is
desugared as `negate (fromInteger 1)`. Hence the existing out-of-range
literal warning doesn't trigger for `-1 :: Word`. But we could also
recognize the pattern `negate (fromInteger lit)`, and give a warning when
`-lit` is out-of-range (for `Word`, this is whenever `lit` is positive).
Actually this could apply to signed integer types too: if we recognized
`negate (fromInteger lit)` in preference to `fromInteger lit`, we could
correctly not warn about `-128 :: Int8`, even when `NegativeLiterals` is
not enabled.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13257>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list