[GHC] #13600: surprising error message with bang pattern
GHC
ghc-devs at haskell.org
Mon Oct 15 22:46:26 UTC 2018
#13600: surprising error message with bang pattern
-------------------------------------+-------------------------------------
Reporter: andrewufrank | Owner: v0d1ch
Type: bug | Status: closed
Priority: normal | Milestone: 8.8.1
Component: Compiler | Version: 8.0.2
Resolution: fixed | Keywords: BangPatterns,
| newcomer
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: Poor/confusing | Test Case: T13600a,
error message | T13600b
Blocked By: | Blocking:
Related Tickets: #15166, #15458 | Differential Rev(s): Phab:D5040
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by simonpj):
My apologies -- I should have looked at the Phab earlier.
Would it be possible to add a Note to explain what is happening in the
code, perhaps near `Passer.warnSpaceAfterBang`.
I believe that the specification is this:
--------
GHC warns if it sees
* A infix definition of `(!)`
* that lacks a space before the `!` operator
That is, something like
{{{
x !p = e
}}}
where `p` is a pattern.
If `BangPatterns` are on, this example would be treated as a definition of
the function `x` applied the to the bang-pattern `!p`.
If there is a space after the bang, thus
{{{
x ! p = e
}}}
then the definition is treated as a definition of `(!)` (without
`BangPatterns`) or as `x (!p) = e` (with `BangPatterns`), with no warning
in either case.
------------
Is that the correct specification? If so, it'd be good to explain this in
the user manual, and in the Note in the code.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13600#comment:20>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list