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

Reply via email to