[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#10756: [2.0.5+] Miscompilation with peval: local shadows module-ref

From: Andy Wingo
Subject: bug#10756: [2.0.5+] Miscompilation with peval: local shadows module-ref
Date: Fri, 06 Jul 2012 20:20:13 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1 (gnu/linux)

On Thu 08 Mar 2012 08:11, Mark H Weaver <address@hidden> writes:

>> scheme@(guile-user)> ,expand (define (foo) (define bar (@ (chbouib) bar)) 
>> bar)
>> $2 = (define foo
>>   (lambda () (letrec* ((bar-92 bar-92)) bar-92)))
>> Andy
> I've attached a patch that fixes this bug.  Fixing '@' was literally a
> one word fix (w -> top-wrap), and the same would have been true of '@@'
> if not for the way it had been extended to support R6RS library forms.
> Unlike '@' which uses syntax->datum on the 'id' to strip the wrap, '@@'
> kept syntax objects fully intact and only changed their module.
> I think it was a mistake to overload '@@' to do these two different
> jobs, so I changed the R6RS-support syntax to (@@ @@ (mod ...) body) and
> left its behavior as-is, and then made (@@ (mod ...) id) act the same
> way as '@': use 'syntax->datum' on the 'id' and return top-wrap.
> I think it's okay to change the internal R6RS-support syntax in
> stable-2.0, because it's undocumented and only exists as a temporary
> intermediate form during macro expansion.  What do you think?
> Also: since 'boot-9.go' was not automatically recompiled by changing
> 'r6rs-libraries.scm', I added explicit dependencies to
> module/Makefile.am.  However, I'm almost wholly ignorant of automake, so
> please double-check what I did there.

Looks great to me, pushed.  It's strictly incompatible, but hey.  Sorry
for taking so long!  The only thing I would note is that it seems to me
that this "R6RS-support" is useful in a general sense.  Just an
impression though, I've never had occasion to use it outside the R6RS

Regards, and thanks very much,


reply via email to

[Prev in Thread] Current Thread [Next in Thread]