On Saturday, 18 June 2016 at 17:50:51 UTC, cy wrote:
On Saturday, 18 June 2016 at 08:41:30 UTC, Johan Engelen wrote:
Without going in too much detail, the problem is that I am not
linking to opaque .o files.
The problem is the compiler has to assume you *might* be
linking to opaque .o files, so it can't provide any
introspection capabilities. There's no way to tell which
"hidden type" that the getObject function is returning, since
that's decided in the (possibly opaque) function body.
The function body is not opaque. In my compilation unit, the
compiler knows it, and that's exactly why I run into troubles.
For ease of discussion, just pretend the function that returns
the Voldemort type is in the same file as the user code: let's
say it's all in one source file.
Just like there is a way to get private types out of structs
(using .tupleof or the Fields!Strukt[*] thing I pasted above), I
was hoping there was a way to get a Voldemort type out of a
function.
This is of course all a big hack. The pragma(mangle,..) thing
works well, but unfortunately conflicts with the LDC inlining
improvement I'm working on.
Like you say, I could copy the whole function definition, but it
would mean copying quite a lot and some more types etc...
- Johan