diff options
Diffstat (limited to 'tests/018/close-delegate.tl')
-rw-r--r-- | tests/018/close-delegate.tl | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/018/close-delegate.tl b/tests/018/close-delegate.tl index 4cf1d650..64a1dc91 100644 --- a/tests/018/close-delegate.tl +++ b/tests/018/close-delegate.tl @@ -18,3 +18,23 @@ (get-lines s)) len prinl) + +(defstruct refcount-close-alt stream-wrap + stream + (count 1) + + (:method close (me throw-on-error-p) + (put-line `close called, count @{me.count}`) + (when (plusp me.count) + (if (zerop (dec me.count)) + (close-stream me.stream throw-on-error-p) + :)))) + +(flow + (with-stream (s (make-struct-delegate-stream + (new refcount-close-alt + count 2 + stream (open-file *load-path*)))) + (get-lines s)) + len + prinl) |