Newtypes with hidden constructors cannot be passed as FFI arguments
|Reported by:||mikhail.vorozhtsov||Owned by:|
|Type of failure:||None/Unknown||Difficulty:|
|Test Case:||Blocked By:|
I think this limitation (introduced recently in 5b988961338f73af5790bfd365ca79c858249cea) is a bad idea. It is way too common for C libraries bindings to declare "safe" (either by allowing only predefined values or by providing custom constructing functions) newtype wrappers around typedefs. Such wrappers are then used by other FFI libraries (for example, Linux-specific functions on POSIX types), ending up in their foreign imports and triggering the "Unacceptable argument type" error. It can be worked around by exporting constructors from "Internal.*" modules, but I'd rather see the old behavior back.