Hi,

Ludovic Courtès <l...@gnu.org> writes:

> Hello,
>
> Edouard Klein <edouardkl...@gmail.com> writes:
>
>> Now run  guix time-machine --channels=/tmp/first-bad.scm --  system image -t
>> qcow2 -e '(use-modules (beaver system)) (minimal-ovh)'
>>
>> and you'll get "In procedure struct-vtable: Wrong type argument in
>> position 1 (expecting struct): #<syntax-transformer
>> dhcp-client-service-type>"
>
> The ‘define-deprecated’ macro turns the given symbol into a macro; that
> macro raises a warning a compile time (in a way, this is similar to the
> ‘deprecated’ attribute in GCC).
>
> Since this is a macro, it must be in scope for any user that references
> it.  Likewise, any file built against the previous definition (where
> ‘dhcp-client-service-type’ was *not* a macro) must be rebuilt against
> the new one; otherwise, you get the error above where the user expected
> ‘dhcp-client-service-type’ to resolve to a struct and now it resolves to
> a macro (aka. “syntax transformer”).

Thanks for the clear explanation, it helps! So it has nothing with
requiring byte-compiling, rather it has to do with ensuring all
byte-compiled objects are rebuilt when used references such as syntax
objects change, right?

-- 
Thanks,
Maxim

Reply via email to