diff options
author | Arun Isaac | 2021-10-04 16:34:55 +0530 |
---|---|---|
committer | Arun Isaac | 2021-10-04 16:34:55 +0530 |
commit | ffb909bf27158e10a032dc4df0d0c54bba37889b (patch) | |
tree | 880734d0c17fa383b046e008880e9a2b3d207077 /ccwl | |
parent | 2d9df0fc90e96a39ace2446341cf8cbf7be33c29 (diff) | |
download | ccwl-ffb909bf27158e10a032dc4df0d0c54bba37889b.tar.gz ccwl-ffb909bf27158e10a032dc4df0d0c54bba37889b.tar.lz ccwl-ffb909bf27158e10a032dc4df0d0c54bba37889b.zip |
ccwl: Error out on invalid keywords to lambda**.
* ccwl/utils.scm (lambda**): Error out on invalid keywords (that is,
keywords other than #:key, #:key* and #:allow-other-keys).
* tests/utils.scm ("lambda** should error out on unrecognized keywords
in arguments"): New test.
Diffstat (limited to 'ccwl')
-rw-r--r-- | ccwl/utils.scm | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/ccwl/utils.scm b/ccwl/utils.scm index d6ca964..4be2fe7 100644 --- a/ccwl/utils.scm +++ b/ccwl/utils.scm @@ -155,6 +155,14 @@ while that for n-ary arguments is the empty list. For example, (list))) (nary-arguments (or (plist-ref grouped-rest #:key*) (list)))) + (for-each (lambda (keyword) + (unless (memq keyword (list #:key #:key* #:allow-other-keys)) + (scm-error 'misc-error + #f + "Invalid keyword `~S' in `~S'" + (list keyword (syntax->datum args-spec)) + #f))) + (filter keyword? args-spec)) #`(apply (lambda* #,(append positionals (cons #:key unary-arguments) (map (lambda (x) |