mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 03:30:27 +02:00
add `expand' eval-when situation
* module/ice-9/psyntax.scm (chi-when-list, chi-top): Add an undocumented `expand' situation to eval-when, which will trigger at expand-time for toplevel expressions. Useful when you are expanding for eval, but need to do some side effect to affect the expander -- like defining a module. * module/ice-9/psyntax-pp.scm: Regenerate.
This commit is contained in:
parent
9a74920905
commit
807f7ab0ac
2 changed files with 4457 additions and 4030 deletions
File diff suppressed because it is too large
Load diff
|
@ -1084,6 +1084,7 @@
|
|||
((free-id=? x #'compile) 'compile)
|
||||
((free-id=? x #'load) 'load)
|
||||
((free-id=? x #'eval) 'eval)
|
||||
((free-id=? x #'expand) 'expand)
|
||||
(else (syntax-violation 'eval-when
|
||||
"invalid situation"
|
||||
e (wrap x w #f)))))
|
||||
|
@ -1234,16 +1235,26 @@
|
|||
(cond
|
||||
((eq? m 'e)
|
||||
(if (memq 'eval when-list)
|
||||
(chi-top-sequence body r w s 'e '(eval) mod)
|
||||
(chi-void)))
|
||||
(chi-top-sequence body r w s
|
||||
(if (memq 'expand when-list) 'c&e 'e)
|
||||
'(eval)
|
||||
mod)
|
||||
(begin
|
||||
(if (memq 'expand when-list)
|
||||
(top-level-eval-hook
|
||||
(chi-top-sequence body r w s 'e '(eval) mod)
|
||||
mod))
|
||||
(chi-void))))
|
||||
((memq 'load when-list)
|
||||
(if (or (memq 'compile when-list)
|
||||
(memq 'expand when-list)
|
||||
(and (eq? m 'c&e) (memq 'eval when-list)))
|
||||
(chi-top-sequence body r w s 'c&e '(compile load) mod)
|
||||
(if (memq m '(c c&e))
|
||||
(chi-top-sequence body r w s 'c '(load) mod)
|
||||
(chi-void))))
|
||||
((or (memq 'compile when-list)
|
||||
(memq 'expand when-list)
|
||||
(and (eq? m 'c&e) (memq 'eval when-list)))
|
||||
(top-level-eval-hook
|
||||
(chi-top-sequence body r w s 'e '(eval) mod)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue