Polymorphism, typed splices and type inference don't mix
Trying to quote and splice a polymorphic function doesn't work unless you have a type signature.
{-# LANGUAGE TemplateHaskell #-}
module A where
foo1 x = x
test_foo = [|| foo1 ||]
{-# LANGUAGE TemplateHaskell #-}
module B where
import A
qux = $$(test_foo)
The type of qux is Any -> Any! Which is clearly wrong.
Adding a type signature to qux fixes the problem.
qux :: a -> a
qux = $$(test_foo)
Either there should be a better error or this should just work.
It seems that this has always been broken. Ryan tested on GHC 7.8.4 for me.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.4.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |