diff options
Diffstat (limited to 'tests/018')
-rw-r--r-- | tests/018/close-delegate.expected | 3 | ||||
-rw-r--r-- | tests/018/close-delegate.tl | 20 |
2 files changed, 23 insertions, 0 deletions
diff --git a/tests/018/close-delegate.expected b/tests/018/close-delegate.expected new file mode 100644 index 00000000..227f9f67 --- /dev/null +++ b/tests/018/close-delegate.expected @@ -0,0 +1,3 @@ +close called, count 2 +close called, count 1 +20 diff --git a/tests/018/close-delegate.tl b/tests/018/close-delegate.tl new file mode 100644 index 00000000..4cf1d650 --- /dev/null +++ b/tests/018/close-delegate.tl @@ -0,0 +1,20 @@ +(load "../common") + +(defstruct refcount-close 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 + count 2 + stream (open-file *load-path*)))) + (get-lines s)) + len + prinl) |