Regression in type checking of sections in records
Looks like a GHC 6.10 regression.
The following code, from xmonad-contrib, fails with an error under 6.10, but not under other compilers,
[ 74 of 138] Compiling XMonad.Hooks.UrgencyHook ( XMonad/Hooks/UrgencyHook.hs, dist/build/XMonad/Hooks/UrgencyHook.o )
XMonad/Hooks/UrgencyHook.hs:424:48:
The section `5 `seconds`' takes one argument,
but its type `Int' has none
In the `duration' field of a record
In the expression:
DzenUrgencyHook {duration = (5 `seconds`), args = []}
In the definition of `dzenUrgencyHook':
dzenUrgencyHook = DzenUrgencyHook
{duration = (5 `seconds`), args = []}
The relevant code is:
-- | Flashes when a window requests your attention and you can't see it.
-- Defaults to a duration of five seconds, and no extra args to dzen.
-- See 'DzenUrgencyHook'.
dzenUrgencyHook :: DzenUrgencyHook
dzenUrgencyHook = DzenUrgencyHook { duration = (5 `seconds`), args = [] }
Which looks harmless enough. In fact, rearranging the section let's it pass type checking:
dzenUrgencyHook = DzenUrgencyHook { duration = seconds 5, args = [] }
The relevant code can be found here: http://code.haskell.org/XMonadContrib/XMonad/Hooks/UrgencyHook.hs, line 424.
To reproduce, assuming ghc 6.10 is installed, and X11,
$ cd XMonadContrib
$ cabal install
Trac metadata
Trac field | Value |
---|---|
Version | 6.10.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler (Type checker) |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |