summaryrefslogtreecommitdiff
path: root/libguile/eval.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2009-04-24 13:13:29 +0200
committerAndy Wingo <wingo@pobox.com>2009-04-24 14:36:50 +0200
commita2716cbe1e9d2b43d1fb1a017cb8b1e97617da3c (patch)
treec9c36463f485ccffcadea35fb9fe82a426c070a6 /libguile/eval.c
parent384e92b3ae491e2f8495b0d188b384f138a8cc61 (diff)
downloadguile-a2716cbe1e9d2b43d1fb1a017cb8b1e97617da3c.tar.gz
only bend hygiene in macro-introduced output, not for explicit @/@@
* module/ice-9/psyntax.scm * module/ice-9/psyntax-pp.scm * module/ice-9/boot-9.scm (make-module-ref): We were so almost there with what we had, sniff. The deal is that (begin (load "foo.scm") ((@@ (foo) bar))) would expand to (begin (load "foo.scm") (bar)) because bar was unbound at expansion time, and make-module-ref assumed it was like the else in a cond. But it shouldn't have, because we /explicitly/ asked for the @@ var -- so now if we see a @ or @@, we never drop it. @@ introduced by hygiene can be dropped if it doesn't reference a var, though. Practically speaking, this means tagging all modules in psyntax with their intent: public or private (corresponding to @ or @@), hygiene (introduced by a macro), or bare (when we don't have a module). I'm not sure when we'd see a bare. The implementation is complicated by the need to support the old format and the new format at the same time, so that psyntax-pp can be regenerated.
Diffstat (limited to 'libguile/eval.c')
0 files changed, 0 insertions, 0 deletions