diff options
-rw-r--r-- | ccwl/ccwl.scm | 6 | ||||
-rw-r--r-- | tests/ccwl.scm | 10 |
2 files changed, 16 insertions, 0 deletions
diff --git a/ccwl/ccwl.scm b/ccwl/ccwl.scm index a476406..f9243aa 100644 --- a/ccwl/ccwl.scm +++ b/ccwl/ccwl.scm @@ -307,6 +307,12 @@ identifiers defined in the commands." ((prefix string-arg) (and (string? (syntax->datum #'prefix)) (string? (syntax->datum #'string-arg))) (list #'prefix #'string-arg)) + ;; Prefixes that are not strings + ((prefix _) + (raise-exception + (condition (ccwl-violation #'prefix) + (formatted-message "Invalid prefix ~a. Prefixes must be strings." + (syntax->datum #'prefix))))) (_ (raise-exception (condition (ccwl-violation x) diff --git a/tests/ccwl.scm b/tests/ccwl.scm index 7cbb2c0..b26e854 100644 --- a/tests/ccwl.scm +++ b/tests/ccwl.scm @@ -264,4 +264,14 @@ (test-assert "tolerate prefixed string arguments in command definitions" (command #:run "echo" ("-x" "foo"))) +(test-assert "command definitions with non-string prefixes in prefixed inputs must raise a &ccwl-violation condition" + (guard (exception + (else (and (ccwl-violation? exception) + (string=? (formatted-message-format exception) + "Invalid prefix ~a. Prefixes must be strings.")))) + (begin (macroexpand + '(command #:inputs (number #:type int) + #:run "echo" (-x number))) + #f))) + (test-end "ccwl") |