From: Josselin Poiret via Guix-patches via <guix-patches@gnu.org>
To: 51922@debbugs.gnu.org
Cc: Josselin Poiret <dev@jpoiret.xyz>
Subject: [bug#51922] [PATCH 1/2] guix: Add syntax to capture arguments' syntax-properties.
Date: Wed, 17 Nov 2021 14:43:47 +0000 [thread overview]
Message-ID: <20211117144348.17090-1-dev@jpoiret.xyz> (raw)
In-Reply-To: <20211117144028.16722-1-dev@jpoiret.xyz>
* guix/diagnostics.scm (define-with-syntax-properties): Add it.
---
guix/diagnostics.scm | 38 +++++++++++++++++++++++++++++++++++++-
1 file changed, 37 insertions(+), 1 deletion(-)
diff --git a/guix/diagnostics.scm b/guix/diagnostics.scm
index 6a792febd4..337a73c1a2 100644
--- a/guix/diagnostics.scm
+++ b/guix/diagnostics.scm
@@ -54,7 +54,9 @@ (define-module (guix diagnostics)
condition-fix-hint
guix-warning-port
- program-name))
+ program-name
+
+ define-with-syntax-properties))
;;; Commentary:
;;;
@@ -331,3 +333,37 @@ (define guix-warning-port
(define program-name
;; Name of the command-line program currently executing, or #f.
(make-parameter #f))
+
+\f
+(define-syntax define-with-syntax-properties
+ (lambda (x)
+ "Define BINDING to be a syntax form replacing each VALUE-IDENTIFIER and
+SYNTAX-PROPERTIES-IDENTIFIER in body by the syntax and syntax-properties,
+respectively, of each ensuing syntax object."
+ (syntax-case x ()
+ ((_ (binding (value-identifier syntax-properties-identifier)
+ ...)
+ body ...)
+ (and (and-map identifier? #'(value-identifier ...))
+ (and-map identifier? #'(syntax-properties-identifier ...)))
+ #'(define-syntax binding
+ (lambda (y)
+ (with-ellipsis :::
+ (syntax-case y ()
+ ((_ value-identifier ...)
+ (with-syntax ((syntax-properties-identifier
+ #`'#,(datum->syntax y
+ (syntax-source
+ #'value-identifier)))
+ ...)
+ #'(begin body ...)))
+ (_
+ (syntax-violation #f (format #f
+ "Expected (~a~{ ~a~})"
+ 'binding
+ '(value-identifier ...))
+ y)))))))
+ (_
+ (syntax-violation #f "Expected a definition of the form \
+(define-with-syntax-properties (binding (value syntax-properties) \
+...) body ...)" x)))))
--
2.33.1
next prev parent reply other threads:[~2021-11-17 14:45 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-17 14:40 [bug#51922] [PATCH 0/2] Improve the reported location of configuration warnings Josselin Poiret via Guix-patches via
2021-11-17 14:43 ` Josselin Poiret via Guix-patches via [this message]
2021-11-17 14:43 ` [bug#51922] [PATCH 2/2] gnu: system: Improve location of some " Josselin Poiret via Guix-patches via
2021-11-17 16:58 ` bug#51922: [PATCH 0/2] Improve the reported location of " Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211117144348.17090-1-dev@jpoiret.xyz \
--to=guix-patches@gnu.org \
--cc=51922@debbugs.gnu.org \
--cc=dev@jpoiret.xyz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.