diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2022-10-17 08:12:10 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2022-10-17 08:12:10 -0700 |
commit | 8357dd0ce75b5cace504acfcef2c31ee83a35e9c (patch) | |
tree | 4487382d7fd86c7132bccf80ba26b3fab8af8db3 /tests/012/oop-dsc.tl | |
parent | 74ea4ee2f89457adbe5cf6facadd8e8b389517ab (diff) | |
download | txr-8357dd0ce75b5cace504acfcef2c31ee83a35e9c.tar.gz txr-8357dd0ce75b5cace504acfcef2c31ee83a35e9c.tar.bz2 txr-8357dd0ce75b5cace504acfcef2c31ee83a35e9c.zip |
defstruct: new :inherit clause.
The :inherit clause allows custom struct clauses to
inject inherited bases.
* stdlib/struct.tl (defstruct): Recognize :inherit clause,
adding symbol arguments to extra list of supers that
get appended to the list coming from defstruct's
seconda rgument.
(define-struct-clause): Disallow :inherit clause name.
* tests/012/oop-dsc.tl: New tests.
* txr.1: Documented.
Diffstat (limited to 'tests/012/oop-dsc.tl')
-rw-r--r-- | tests/012/oop-dsc.tl | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/012/oop-dsc.tl b/tests/012/oop-dsc.tl index c0b6068b..7885f386 100644 --- a/tests/012/oop-dsc.tl +++ b/tests/012/oop-dsc.tl @@ -63,3 +63,18 @@ [s3.b-hash 3].a "three") (call-finalizers s3) (test [s3.a-hash "one"] nil)) + +(define-struct-clause :s3 () + '((:inherit s3) + (:inherit passwd group))) + +(defstruct s4 (time) + (:s3)) + +(let ((s4 (new s4 a "x" b 999))) + (mtest + [s4.a-hash "two"].a "two" + [s4.a-hash "x"].a "x" + [s4.b-hash 999].a "x" + s4.uid nil + s4.gid nil)) |