mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-07 21:43:33 +00:00
allow deferred close of nil stream (#20706)
* allow deferred close of nil stream * improve example
This commit is contained in:
@@ -173,10 +173,20 @@ proc close*(s: Stream) =
|
||||
## See also:
|
||||
## * `flush proc <#flush,Stream>`_
|
||||
runnableExamples:
|
||||
var strm = newStringStream("The first line\nthe second line\nthe third line")
|
||||
## do something...
|
||||
strm.close()
|
||||
if not isNil(s.closeImpl): s.closeImpl(s)
|
||||
block:
|
||||
let strm = newStringStream("The first line\nthe second line\nthe third line")
|
||||
## do something...
|
||||
strm.close()
|
||||
|
||||
block:
|
||||
let strm = newFileStream("amissingfile.txt")
|
||||
# deferring works even if newFileStream fails
|
||||
defer: strm.close()
|
||||
if not isNil(strm):
|
||||
## do something...
|
||||
|
||||
if not isNil(s) and not isNil(s.closeImpl):
|
||||
s.closeImpl(s)
|
||||
|
||||
proc atEnd*(s: Stream): bool =
|
||||
## Checks if more data can be read from `s`. Returns ``true`` if all data has
|
||||
|
||||
@@ -50,6 +50,12 @@ block tstreams3:
|
||||
echo line
|
||||
s.close
|
||||
|
||||
|
||||
block:
|
||||
let fs = newFileStream("amissingfile.txt")
|
||||
defer: fs.close()
|
||||
doAssert isNil(fs)
|
||||
|
||||
# bug #12410
|
||||
|
||||
var a = newStringStream "hehohihahuhyh"
|
||||
|
||||
Reference in New Issue
Block a user