diff options
author | Ludovic Courtès <ludo@gnu.org> | 2019-03-29 22:40:55 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2019-03-30 11:08:39 +0100 |
commit | d2be7e3c4ba8d6d0dde9b4c0bff623ab85637424 (patch) | |
tree | a9be7eae8e45656e1d6fe9943d4f7e29fe34944a /tests | |
parent | ec12e53736f212d700587e096ebee15ffc118c46 (diff) | |
download | guix-d2be7e3c4ba8d6d0dde9b4c0bff623ab85637424.tar guix-d2be7e3c4ba8d6d0dde9b4c0bff623ab85637424.tar.gz |
records: Support custom 'this' identifiers.
This lets record users choose an identifier other than 'this-record'.
* guix/records.scm (make-syntactic-constructor): Add #:this-identifier.
[wrap-field-value]: Honor it.
(define-record-type*): Add form with extra THIS-IDENTIFIER and honor
it.
* tests/records.scm ("define-record-type* & thunked & inherit & custom this"):
New test.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/records.scm | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/records.scm b/tests/records.scm index 45614093a0..16b7a9c35e 100644 --- a/tests/records.scm +++ b/tests/records.scm @@ -210,6 +210,24 @@ (= 40 (foo-bar z)) (= -2 (foo-baz z)))))) +(test-assert "define-record-type* & thunked & inherit & custom this" + (let () + (define-record-type* <foo> foo make-foo + foo? this-foo + (thing foo-thing (thunked))) + (define-record-type* <bar> bar make-bar + bar? this-bar + (baz bar-baz (thunked))) + + ;; Nest records and test the two self references. + (let* ((x (foo (thing (bar (baz (list this-bar this-foo)))))) + (y (foo-thing x))) + (match (bar-baz y) + ((first second) + (and (eq? second x) + (bar? first) + (eq? first y))))))) + (test-assert "define-record-type* & delayed" (begin (define-record-type* <foo> foo make-foo |