---------- Forwarded message ----------
From: Stefan Israelsson Tampe <[email protected]>
Date: Mon, Jun 13, 2011 at 1:03 PM
Subject: Re: `set!' of generated temporary in macro expansion causes warning
To: Andreas Rottmann <[email protected]>
It looks like you just put the symbol in the current module, so maybe the
warning is
just unessesary.
here is the code in psyntax:
(define get-global-definition-hook
(lambda (symbol module)
(if (and (not module) (current-module))
(warn "module system is booted, we should have a module"
symbol))
(let ((v (module-variable (if module
(resolve-module (cdr module))
(current-module))
symbol)))
so module parameter beeing #f will lead to a warning and an evaluation of
(module-variable (current-module) symbol)
So if it's ok for the temporaries to be in the current-module then the
warning need to silenced.
E.g. In
(set! generate-temporaries
(lambda (ls)
(arg-check list? ls 'generate-temporaries)
(map (lambda (x) (wrap (gensym-hook) top-wrap #f)) ls)))
Replace #f with (current-module) and you will not have a warning. But My
psyntax-fu is
weak so this is just my 2c.
Be aware that changing this can pollute current-module
/Stefan
On Mon, Jun 13, 2011 at 12:10 PM, Andreas Rottmann <[email protected]>wrote:
> Hi!
>
> This is a much-stripped-down version of a `define-values' macro,
> exposing what seems like a psyntax bug:
>
> % cat guile-psyntax-temp-set-issue.scm
> (define-syntax define+set!
> (lambda (form)
> (syntax-case form ()
> ((_)
> (with-syntax (((mutable-id) (generate-temporaries '(id))))
> #'(begin
> (define mutable-id #f)
> (set! mutable-id #t)))))))
>
> (define+set!)
>
> % guile guile-psyntax-temp-set-issue.scm
> ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
> ;;; or pass the --no-auto-compile argument to disable.
> ;;; compiling /home/rotty/tmp/guile-psyntax-temp-set-issue.scm
>
> ;;; WARNING (module system is booted, we should have a module #{ g65}#)
> ;;; compiled
> /home/rotty/.cache/guile/ccache/2.0-LE-8-2.0/home/rotty/tmp/guile-psyntax-temp-set-issue.scm.go
>
> Note the WARNING line; it seems during expansion something goes wrong
> wrt. to modules -- it'd be really nice if some psyntax guru can have a
> look at this.
>
> Regards, Rotty
> --
> Andreas Rottmann -- <http://rotty.yi.org/>
>
>