summaryrefslogtreecommitdiff
path: root/module/ice-9/psyntax.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2021-02-21 11:27:32 +0100
committerAndy Wingo <wingo@pobox.com>2021-02-21 11:35:12 +0100
commit1bba859000449a2b69c3c2872b11e8ddef5393c8 (patch)
treeda35cb2f9ea8240747b324f5f949589c3bc7eadd /module/ice-9/psyntax.scm
parent50d3dd83f0260f12f106ea6f4a4c95c917f420c1 (diff)
downloadguile-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.scm15
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