regression: acceptable foreign result types
The following short file is rejected:
import Foreign.Ptr
foreign import ccall "wrapper" foo :: IO (FunPtr ())
The error is:
test.hs:2:1:
Unacceptable type in foreign declaration: IO (FunPtr ())
When checking declaration:
foreign import ccall safe "wrapper" foo :: IO (FunPtr ())
However, my reading of the 2010 Report suggests this should be acceptable. Specifically:
- Prelude.IO t is a marshallable foreign result type when t is a marshallable foreign type,[[BR]]
- all basic foreign types are marshallable foreign types, and[[BR]]
- FunPtr a is a basic foreign type for all a.
(Political note: I include this chain of reasoning not because I think others too stupid to recreate it, but because I think it likely that I am not reading the Report correctly, and want to make it easy to detect and correct any misconceptions I have.)
Trac metadata
Trac field | Value |
---|---|
Version | 7.6.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |