diff options
author | Arun Isaac | 2023-11-18 23:50:12 +0000 |
---|---|---|
committer | Arun Isaac | 2023-11-18 23:50:12 +0000 |
commit | 1d28ca4c90fef799c024d8631f95c4c3d0d748d4 (patch) | |
tree | fcda9f34ecb626b45abf320cec532f339179a54a | |
parent | cd2be030233d529d0319a4b73dd9dbc0eea007f3 (diff) | |
download | ccwl-1d28ca4c90fef799c024d8631f95c4c3d0d748d4.tar.gz ccwl-1d28ca4c90fef799c024d8631f95c4c3d0d748d4.tar.lz ccwl-1d28ca4c90fef799c024d8631f95c4c3d0d748d4.zip |
ccwl: Error out if arguments have been supplied more than once.
* ccwl/ccwl.scm (collect-steps): Error out if arguments have been
supplied more than once.
-rw-r--r-- | ccwl/ccwl.scm | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/ccwl/ccwl.scm b/ccwl/ccwl.scm index 558161c..b106c6d 100644 --- a/ccwl/ccwl.scm +++ b/ccwl/ccwl.scm @@ -695,6 +695,18 @@ represented by <step> objects." (syntax->datum value) input-key-symbols)))))) (pairify #'(args ...))) + ;; Test for arguments that have been supplied more than once. + (fold (match-lambda* + (((key-syntax . _) seen) + (let ((key (syntax->datum key-syntax))) + (when (memq key seen) + (raise-exception + (condition (ccwl-violation key-syntax) + (formatted-message "~a argument already supplied" + key)))) + (cons key seen)))) + (list) + (pairify #'(args ...))) (let ((symbolic-arguments literal-arguments (partition (match-lambda |