mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-17 09:10:22 +02:00
Improve error messages for invalid record definitions.
* module/srfi/srfi-9.scm (%define-record-type): Accept additional 'form' parameter which contains the original form of 'define-record-type' or 'define-immutable-record-type'. Add elaborate pattern guard which raises descriptive syntax errors for specific errors, and a fallback pattern to catch anything else. (define-record-type): Pass 'form' parameter to %define-record-type. * module/srfi/srfi-9/gnu.scm (define-immutable-record-type): Pass 'form' parameter to %define-record-type. * test-suite/tests/srfi-9.test: Add tests.
This commit is contained in:
parent
dfba1025e5
commit
f31a076232
3 changed files with 146 additions and 8 deletions
|
@ -34,7 +34,9 @@
|
|||
(struct-set! type vtable-index-printer thunk))
|
||||
|
||||
(define-syntax-rule (define-immutable-record-type name ctor pred fields ...)
|
||||
((@@ (srfi srfi-9) %define-record-type) #t name ctor pred fields ...))
|
||||
((@@ (srfi srfi-9) %define-record-type)
|
||||
#t (define-immutable-record-type name ctor pred fields ...)
|
||||
name ctor pred fields ...))
|
||||
|
||||
(define-syntax-rule (set-field (getter ...) s expr)
|
||||
(%set-fields #t (set-field (getter ...) s expr) ()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue