diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2022-07-09 23:18:16 +0200 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2022-07-09 23:20:00 +0200 |
commit | deee127a0e7d1803436033ff40d62f9bdf478c35 (patch) | |
tree | a315364bb5767fbda13776d6454f862871a07bc2 /module | |
parent | Merge typecheck macro into c-parser. (diff) | |
download | calp-deee127a0e7d1803436033ff40d62f9bdf478c35.tar.gz calp-deee127a0e7d1803436033ff40d62f9bdf478c35.tar.xz |
Extend type-clauses with not.
Diffstat (limited to '')
-rw-r--r-- | module/c/cpp-environment.scm | 2 | ||||
-rw-r--r-- | module/hnh/util/type.scm | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/module/c/cpp-environment.scm b/module/c/cpp-environment.scm index d6c86f7a..51f16168 100644 --- a/module/c/cpp-environment.scm +++ b/module/c/cpp-environment.scm @@ -77,7 +77,7 @@ (cpp-if-status type: (list-of (memv '(outside active-if inactive-if))) default: '(outside)) (cpp-variables type: hash-table? default: (make-hash-table)) - (cpp-file-stack type: (and ((negate null?)) + (cpp-file-stack type: (and (not null?) (list-of (pair-of string? exact-integer?))) default: '(("*outside*" . 1)))) diff --git a/module/hnh/util/type.scm b/module/hnh/util/type.scm index 800834e5..f35f7839 100644 --- a/module/hnh/util/type.scm +++ b/module/hnh/util/type.scm @@ -22,9 +22,10 @@ ;; DSL for specifying type predicates ;; Basically a procedure body, but the variable to test is implicit. (define-syntax build-validator-body - (syntax-rules (and or list-of) + (syntax-rules (and or not) ((_ variable (and clauses ...)) (and (build-validator-body variable clauses) ...)) ((_ variable (or clauses ...)) (or (build-validator-body variable clauses) ...)) + ((_ variable (not clause)) (not (build-validator-body variable clause))) ((_ variable (proc args ...)) (proc variable args ...)) ((_ variable proc) (proc variable)))) |