Merge pull request #768 from ashinn/syntax-rules-parser

Parse syntax-rules more strictly
This commit is contained in:
Alex Shinn 2021-08-04 00:11:58 +09:00 committed by GitHub
commit f1b8a5bce9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 4 deletions

View file

@ -1105,7 +1105,11 @@
_or
(append
(map
(lambda (clause) (expand-pattern (car clause) (cadr clause)))
(lambda (clause)
(if (and (list? clause) (= (length clause) 2))
(expand-pattern (car clause) (cadr clause))
(error "invalid syntax-rules clause, which must be of the form (pattern template) (note fenders are not supported)"
clause)))
forms)
(list
(list _cons

View file

@ -195,8 +195,7 @@
(syntax-rules ()
((define-c-int-type type)
(if (not (memq 'type *c-int-types*))
(set! *c-int-types* (cons 'type *c-int-types*)))
#f)))
(set! *c-int-types* (cons 'type *c-int-types*))))))
(define-syntax define-c-enum
;; TODO: support conversion to/from symbolic names
@ -640,7 +639,7 @@
(let ((e (x->string errno)))
(string-append " case " e ": return \"" e "\";\n")))
errnos)
" }
snprintf(buf, 64, \"unknown error: %d\", err);
return buf;