diff options
author | Mark H Weaver <mhw@netris.org> | 2012-11-09 03:22:40 -0500 |
---|---|---|
committer | Mark H Weaver <mhw@netris.org> | 2012-11-09 23:05:42 -0500 |
commit | f31a0762328b9cffa328ce1540ceaa6f1497e083 (patch) | |
tree | 2644cbfe0d38285b2d575bdfcdeb26b6af48c859 /module/srfi/srfi-9 | |
parent | dfba1025e56245f55bdda85639e5b59682e7ad47 (diff) | |
download | guile-f31a0762328b9cffa328ce1540ceaa6f1497e083.tar.gz |
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.
Diffstat (limited to 'module/srfi/srfi-9')
-rw-r--r-- | module/srfi/srfi-9/gnu.scm | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/module/srfi/srfi-9/gnu.scm b/module/srfi/srfi-9/gnu.scm index fa091fe86..4f3a6634c 100644 --- a/module/srfi/srfi-9/gnu.scm +++ b/module/srfi/srfi-9/gnu.scm @@ -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) () |