Template Haskell generates invalid code for import foreign address declaration
For example, splicing ForeignD (ImportF CCall Unsafe "&" (mkName "foo") (AppT (ConT ''Ptr) (ConT ''())))
GHC generates code equivalent to foreign import ccall unsafe "foo" foo :: Ptr ()
but not foreign import ccall unsafe "&" foo :: Ptr ()
.
-ddump-splices shows something like foreign import ccall unsafe "static & &foo" foo :: Ptr ()
. GHC can splice this (and produce bogus code) but can not compile this code literally, generating invalid assembler name _&foo
for foo
.
Trac metadata
Trac field | Value |
---|---|
Version | 6.10.3 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | Windows |
Architecture |