diff options
author | Andy Wingo <wingo@pobox.com> | 2021-02-21 11:27:32 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2021-02-21 11:35:12 +0100 |
commit | 1bba859000449a2b69c3c2872b11e8ddef5393c8 (patch) | |
tree | da35cb2f9ea8240747b324f5f949589c3bc7eadd /module/ice-9/psyntax.scm | |
parent | 50d3dd83f0260f12f106ea6f4a4c95c917f420c1 (diff) | |
download | guile-1bba859000449a2b69c3c2872b11e8ddef5393c8.tar.gz |
Document datum->syntax extensions
* doc/ref/api-macros.texi (Syntax Case): Document that template-id can
be false, and document srcloc.
* module/ice-9/psyntax-pp.scm: Regenerate.
* module/ice-9/psyntax.scm (syntax?): Allow the lexical context to be
null. Allow srcloc to be a source properties alist. Inspired by
Racket.
Diffstat (limited to 'module/ice-9/psyntax.scm')
-rw-r--r-- | module/ice-9/psyntax.scm | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/module/ice-9/psyntax.scm b/module/ice-9/psyntax.scm index f0c1f03bb..c5c85fde5 100644 --- a/module/ice-9/psyntax.scm +++ b/module/ice-9/psyntax.scm @@ -2764,10 +2764,17 @@ (set! datum->syntax (lambda* (id datum #:optional srcloc) - (make-syntax datum (syntax-wrap id) (syntax-module id) - (if srcloc - (syntax-source srcloc) - (source-properties datum))))) + (make-syntax datum + (if id + (syntax-wrap id) + top-wrap) + (if id + (syntax-module id) + (cons 'hygiene (module-name (current-module)))) + (cond + ((not srcloc) (source-properties datum)) + ((and (list? srcloc) (and-map pair? srcloc)) srcloc) + (else (syntax-source srcloc)))))) (set! syntax->datum ;; accepts any object, since syntax objects may consist partially |