diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-10-13 06:51:20 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-10-13 06:51:20 -0700 |
commit | d94af272503d246929556087ae687d0fa8170611 (patch) | |
tree | 1fbff7b2f64a40db40f505ef0e56bdc72d660060 /tests | |
parent | 98466491da86fa8d1c5071beaefcd35c057a8e60 (diff) | |
download | txr-d94af272503d246929556087ae687d0fa8170611.tar.gz txr-d94af272503d246929556087ae687d0fa8170611.tar.bz2 txr-d94af272503d246929556087ae687d0fa8170611.zip |
Bugfix: sub and length on abstract sequences.
* lib.c (length_proper_list): New static function.
(length): Use length_proper_list for objects.
(sub): Call nullify on COBJ object before passing
to sub_list.
* tests/012/aseq.tl, tests/012/aseq.expected:
New files.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/012/aseq.expected | 0 | ||||
-rw-r--r-- | tests/012/aseq.tl | 15 |
2 files changed, 15 insertions, 0 deletions
diff --git a/tests/012/aseq.expected b/tests/012/aseq.expected new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/tests/012/aseq.expected diff --git a/tests/012/aseq.tl b/tests/012/aseq.tl new file mode 100644 index 00000000..7901c4ab --- /dev/null +++ b/tests/012/aseq.tl @@ -0,0 +1,15 @@ +(load "../common") + +(defstruct (add n list) nil + n list + (:method cdr (me) (if (cdr me.list) (new (add me.n (cdr me.list))))) + (:method car (me) (+ me.n (car me.list))) + (:method nullify (me) (if me.list me)) + (:method lambda (me i) (ref me i))) + +(defvarl o (new (add 3 (range 10 100 10)))) + +(test (car o) 13) +(test (cadr o) 23) +(test [o 4] 53) +(test (cadr (last o)) nil) |