[GHC] #10505: more specific types in the generated *_stub.h files
GHC
ghc-devs at haskell.org
Wed Jun 10 13:00:49 UTC 2015
#10505: more specific types in the generated *_stub.h files
-------------------------------------+-------------------------------------
Reporter: imz | Owner:
Type: feature | Status: new
request | Milestone:
Priority: normal | Version: 7.6.1
Component: Compiler | Operating System: Linux
(FFI) | Type of failure: Other
Keywords: | Blocked By:
Architecture: | Related Tickets: #2979, #8222
Unknown/Multiple |
Test Case: |
Blocking: |
Differential Revisions: |
-------------------------------------+-------------------------------------
Having a declaration like:
{{{#!hs
foreign export ccall "respond" respond :: CWString -> IO CWString
}}}
all the types in the corresponding `_stub.h` are `HsPtr`.
Wouldn't it be possible to write more specific types reflecting my
expectations, i.e., `wchar_t *`?
It would be nice in order to signal automatically to the C code which uses
the Haskell functions that the types of the Haskell functions changed. In
simple cases, one could simply include the stub.h, and get automatically
an error if the C code doesn't match the new types.
I've tried using a CTYPE pragma (cf. #2979 , #8222 ) on a newtype to get
such results:
{{{#!hs
newtype {-# CTYPE "wchar_t *" #-} CWString' = CWString' CWString
foreign export ccall "respond" respond :: CWString' -> IO CWString
}}}
but that still produces `HsPtr`. (Well, I see, the CTYPE pragma was mostly
intended for imports rather than exports.)
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10505>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list