Misplaced SPECIALIZE instance pragma silently ignored
The user's guide for GHC 7.2.2 says that a SPECIALIZE instance pragma must occur inside the where part of the instance declaration (http://www.haskell.org/ghc/docs/7.2.2/html/users_guide/pragmas.html#specialize-instance-pragma), but it is not checked by GHC 7.2.2 (GHC 7.4.1 RC1 (7.4.0.20111219) correctly yields an error in this situation).
For example, the following code is accepted
data Foo a = MkFoo a
{-# SPECIALIZE instance Eq (Foo Int) #-}
instance (Eq a) => Eq (Foo a) where
MkFoo a1 == MkFoo a2 = a1 == a2
I don't understand the core code, but using the flags -ddump-simpl-stats and -dppr-debug I see a different output with/without a misplaced SPECIALIZE instance pragma, so I guess the pragma is being silently ignored. Can anyone confirm this please?
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.2.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |