re:
result.setLen(ms.size) doesn't compile with experimental:strictDefs anyway
(the default for the Nim compiler itself).
Run
Interesting... I would have thought the implicit _result_ was defined at proc
invocation...so I'm not sure of the purpose of the generated **warning** (_yes
_warning_ see below_).
My primary concern is the **IndexDefect**
The following revised test case is provided for your _enjoyment_ :-)
**Test harness**
{.experimental: "strictDefs".}
import memfiles
when defined ORIGINAL: # as per v2.0.8 distribution
proc `$`*(ms: MemSlice): string {.inline.} =
## Return a Nim string built from a MemSlice.
result.setLen(ms.size)
copyMem(addr(result[0]), ms.data, ms.size)
when defined FIX_STRICT:
proc `$`*(ms: MemSlice): string {.inline.} =
## Return a Nim string built from a MemSlice.
var stringCopy = newStringofCap(ms.size)
copyMem(addr(stringCopy[0]), ms.data, ms.size)
return stringCopy
when defined FIX_STRICT_AND_INDEX_DEFECT:
## Return a Nim string built from a MemSlice.
proc `$`*(ms: MemSlice): string {.inline.} =
var stringCopy = newStringofCap(ms.size)
copyMem(cast[pointer](stringCopy.cstring), ms.data, ms.size)
return stringCopy
var memSlice: MemSlice
echo '"', memSlice, '"'
Run
**Run outputs** :
dennismisener@Denniss-iMac nim % nim r --hints:off -d:ORIGINAL test.nim
/Users/dennismisener/work/Nim/test.nim(30, 5) Warning: use explicit
initialization of 'result' for clarity [Uninit]
/Users/dennismisener/work/Nim/test.nim(48) test
/Users/dennismisener/work/Nim/test.nim(31) $
/Users/dennismisener/.choosenim/toolchains/nim-2.0.8/lib/system/fatal.nim(53)
sysFatal
Error: unhandled exception: index out of bounds, the container is empty
[IndexDefect]
Error: execution of an external program failed:
'/Users/dennismisener/.cache/nim/test_d/test_8CCE2A0870ED811731F82CA462C0169516801EBE'
dennismisener@Denniss-iMac nim % nim r --hints:off -d:FIX_STRICT test.nim
/Users/dennismisener/work/Nim/test.nim(48) test
/Users/dennismisener/work/Nim/test.nim(37) $
/Users/dennismisener/.choosenim/toolchains/nim-2.0.8/lib/system/fatal.nim(53)
sysFatal
Error: unhandled exception: index out of bounds, the container is empty
[IndexDefect]
Error: execution of an external program failed:
'/Users/dennismisener/.cache/nim/test_d/test_0456A2BEC846E58ECC3E8ADAFE7FAF30EFE9A87D'
dennismisener@Denniss-iMac nim % nim r --hints:off
-d:FIX_STRICT_AND_INDEX_DEFECT test.nim
""
Run