Visual D DClosure mixin error?
Bart
Bart at gmail.com
Sat Jun 22 13:09:17 UTC 2019
On Saturday, 22 June 2019 at 07:09:42 UTC, Rainer Schuetze wrote:
>
>
> On 21/06/2019 15:55, Bart wrote:
>> I'm getting DClosure mixin not found when trying to go to a
>> delegate on the stack.
>>
>> DClosure.DClosure.d_closure_marshal!(bool
>> delegate(gdk.Event.Event,
>> gtk.Widget.Widget)).d_closure_marshal(gobject.c.types.GClosure
>> * closure, gobject.c.types.GValue * return_value, unsigned int
>> n_param_values, gobject.c.types.GValue * param_values, void *
>> invocation_hint, void * marshal_data) Line 123 D
>>
>> This is a file in GtkD.
>>
>> It says it's like 123 but it's actually line 121.
>>
>> Dclosure.d
>> extern(C) static void d_closure_marshal(T)(GClosure*
>> closure,
>> GValue* return_value, uint n_param_values, /*const*/ GValue*
>> param_values, void* invocation_hint, void* marshal_data)
>> {
>> DGClosure!(T)* cl = cast(DGClosure!(T)*)closure;
>>
>> if ( Parameters!(T).length > n_param_values )
>> assert(false, "DClosure doesn't have enough
>> parameters.");
>>
>> if ( closure.derivativeFlag )
>> {
>> GValue[] swapped = new GValue[n_param_values];
>> swapped[0..n_param_values-1] =
>> param_values[1..n_param_values];
>> swapped[n_param_values-1] = param_values[0];
>> param_values = swapped.ptr;
>> }
>>
>> mixin(getCallbackCall!T()); // line 121 but stack
>> trace says
>> it's 123.
>> }
>>
>>
>> Seems it can't find the line nor the mixin in file correctly.
>>
>> The main mixin does not seem to have this code in it either
>> but it has other code related to other mixins from gtkD so it
>>
>> Do you have gtk installed or are you willing to install it?
>> The closure
>> is generated for most event handling in gtkD it seems such as
>> simple
>> button click handling. Probably any gtkD example will produce
>> such a stack.
>
> I just tried it, and the rather new "Enable mixin debugging"
> feature on the Compiler->Debug page is what you are looking
> for. This will write the expanded mixins into the given file
> instead of the compiler just making up random filenames.
>
I had this checked already. I could debug mixins sometimes and it
wrote them all to
one large file.
So something must be buggy. I guess it's not finding the file
name correctly. Remember, it's also reporting the line number
wrong.
Maybe it is a problem with the compiler itself and not Visual D?
I searched for the DClosure in the large mixin file and could not
find it but other related mixins were inside.
> Unfortunately, with "Separate compile and link" the link step
> overwrites the file generated during compilation, so you should
> switch the compilation model to "Combined compile and link" for
> the gtk library.
I do have combined enable. Separate compile and link is far too
slow to be usable.
More information about the Digitalmars-d-ide
mailing list