commit 049d09d310acc8ec50b9340090423244bafc304a map588 <map588@pitt.edu> 2026-09-27 02:29:01 -0400 Fix defstruct template and make the Lisp read check syntax-only cl/defstruct had one close parenthesis too many. The read check now binds *read-suppress*, so a package-qualified symbol or a #. form does not fail the check. CI found all three.
cl/defstruct | 3 +-- tests/read-forms.lisp | 5 ++++- 2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/cl/defstruct b/cl/defstruct index 105d462..ec9d783 100644 --- a/cl/defstruct +++ b/cl/defstruct @@ -1,5 +1,4 @@ ;; defstruct with options and one slot (defstruct (<++> :<++> <++>) ; name and options* "<++>" - (<++> <++> :<++> <++>) ; name initform options* - )) + (<++> <++> :<++> <++>)) ; name initform options* diff --git a/tests/read-forms.lisp b/tests/read-forms.lisp index dd5d7cf..e719e85 100644 --- a/tests/read-forms.lisp +++ b/tests/read-forms.lisp @@ -1,5 +1,8 @@ ;; Read every form in the file named on the command line. Exit 1 on a read error. -(let ((path (second sb-ext:*posix-argv*))) +;; *read-suppress* makes the reader check syntax only: it does not intern +;; symbols in packages that do not exist and does not evaluate #. forms. +(let ((path (second sb-ext:*posix-argv*)) + (*read-suppress* t)) (handler-case (with-open-file (in path) (loop for form = (read in nil in)