Nim icon indicating copy to clipboard operation
Nim copied to clipboard

ICE "param not init" with templates and callbacks

Open arnetheduck opened this issue 5 years ago • 3 comments

Example

type
  Result[T, E] = object

  DataProc = proc(val: openArray[byte])
  GetProc = proc (onData: DataProc): Result[bool, cstring]

func get[T, E](self: Result[T, E]): T =
  discard

template `[]`[T, E](self: Result[T, E]): T =
  self.get()

proc testKVStore() =
  var v: seq[byte]
  var p: GetProc

  discard p(proc(data: openArray[byte]) =
      v = @data
    )[]

testKVStore()

Current Output

/home/arnetheduck/status/nim-beacon-chain/beacon_chain/test.nim(18, 12) Error: internal error: expr: param not init data_17356077
[arnetheduck@tempus nim-beacon-chain]$ nim -v
Nim Compiler Version 1.3.1 [Linux: amd64]
Compiled at 2020-04-21
Copyright (c) 2006-2020 by Andreas Rumpf

git hash: b4e9f8e814373fc38741736197d88475663ce758
active boot switches: -d:release

arnetheduck avatar Apr 22 '20 10:04 arnetheduck

An existing work-around is to avoid the usage of an anonymous function:

type
  Result[T, E] = object

  DataProc = proc(val: openArray[byte])
  GetProc = proc (onData: DataProc): Result[bool, cstring]

func get[T, E](self: Result[T, E]): T =
  discard

template `[]`[T, E](self: Result[T, E]): T =
  self.get()

proc testKVStore() =
  var v: seq[byte]
  var p: GetProc

  proc callback(data: openArray[byte]) =
    v = @data

  discard p(callback)[]

testKVStore()

zah avatar Apr 22 '20 10:04 zah

!nim c

type
  Result[T, E] = object

  DataProc = proc(val: openArray[byte])
  GetProc = proc (onData: DataProc): Result[bool, cstring]

func get[T, E](self: Result[T, E]): T =
  discard

template `[]`[T, E](self: Result[T, E]): T =
  self.get()

proc testKVStore() =
  var v: seq[byte]
  var p: GetProc

  discard p(proc(data: openArray[byte]) =
      v = @data
    )[]

testKVStore()

bung87 avatar Aug 27 '23 13:08 bung87

@bung87 (collaborator)

devel :-1: FAIL

Output

Error: Command failed: nim c --run  -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --warnings:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim(14, 6) template/generic instantiation of `[]` from here
/home/runner/work/Nim/Nim/temp.nim(12, 17) Error: redefinition of ':anonymous'; previous declaration here: /home/runner/work/Nim/Nim/temp.nim(12, 17)

Stats

  • Started 2023-08-27T13:52:43
  • Finished 2023-08-27T13:52:44
  • Duration

IR

Compiled filesize 0 bytes (0 bytes)

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("Result"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newIdentNode("E"),
          newEmptyNode(),
          newEmptyNode()
        )
      ),
      nnkObjectTy.newTree(
        newEmptyNode(),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("DataProc"),
      newEmptyNode(),
      nnkProcTy.newTree(
        nnkFormalParams.newTree(
          newEmptyNode(),
          nnkIdentDefs.newTree(
            newIdentNode("val"),
            nnkBracketExpr.newTree(
              newIdentNode("openArray"),
              newIdentNode("byte")
            ),
            newEmptyNode()
          )
        ),
        newEmptyNode()
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("GetProc"),
      newEmptyNode(),
      nnkProcTy.newTree(
        nnkFormalParams.newTree(
          nnkBracketExpr.newTree(
            newIdentNode("Result"),
            newIdentNode("bool"),
            newIdentNode("cstring")
          ),
          nnkIdentDefs.newTree(
            newIdentNode("onData"),
            newIdentNode("DataProc"),
            newEmptyNode()
          )
        ),
        newEmptyNode()
      )
    )
  ),
  nnkFuncDef.newTree(
    newIdentNode("get"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("self"),
        nnkBracketExpr.newTree(
          newIdentNode("Result"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkTemplateDef.newTree(
    nnkAccQuoted.newTree(
      newIdentNode("[]")
    ),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("self"),
        nnkBracketExpr.newTree(
          newIdentNode("Result"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkCall.newTree(
        nnkDotExpr.newTree(
          newIdentNode("self"),
          newIdentNode("get")
        )
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("testKVStore"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkVarSection.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("v"),
          nnkBracketExpr.newTree(
            newIdentNode("seq"),
            newIdentNode("byte")
          ),
          newEmptyNode()
        )
      ),
      nnkVarSection.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("p"),
          newIdentNode("GetProc"),
          newEmptyNode()
        )
      ),
      nnkDiscardStmt.newTree(
        nnkBracketExpr.newTree(
          nnkCall.newTree(
            newIdentNode("p"),
            nnkLambda.newTree(
              newEmptyNode(),
              newEmptyNode(),
              newEmptyNode(),
              nnkFormalParams.newTree(
                newEmptyNode(),
                nnkIdentDefs.newTree(
                  newIdentNode("data"),
                  nnkBracketExpr.newTree(
                    newIdentNode("openArray"),
                    newIdentNode("byte")
                  ),
                  newEmptyNode()
                )
              ),
              newEmptyNode(),
              newEmptyNode(),
              nnkStmtList.newTree(
                nnkAsgn.newTree(
                  newIdentNode("v"),
                  nnkPrefix.newTree(
                    newIdentNode("@"),
                    newIdentNode("data")
                  )
                )
              )
            )
          )
        )
      )
    )
  ),
  nnkCall.newTree(
    newIdentNode("testKVStore")
  )
)
stable :-1: FAIL

Output

Error: Command failed: nim c --run  -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --warnings:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim(14, 6) template/generic instantiation of `[]` from here
/home/runner/work/Nim/Nim/temp.nim(12, 17) Error: redefinition of ':anonymous'; previous declaration here: /home/runner/work/Nim/Nim/temp.nim(12, 17)

Stats

  • Started 2023-08-27T13:52:45
  • Finished 2023-08-27T13:52:45
  • Duration

IR

Compiled filesize 0 bytes (0 bytes)

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("Result"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newIdentNode("E"),
          newEmptyNode(),
          newEmptyNode()
        )
      ),
      nnkObjectTy.newTree(
        newEmptyNode(),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("DataProc"),
      newEmptyNode(),
      nnkProcTy.newTree(
        nnkFormalParams.newTree(
          newEmptyNode(),
          nnkIdentDefs.newTree(
            newIdentNode("val"),
            nnkBracketExpr.newTree(
              newIdentNode("openArray"),
              newIdentNode("byte")
            ),
            newEmptyNode()
          )
        ),
        newEmptyNode()
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("GetProc"),
      newEmptyNode(),
      nnkProcTy.newTree(
        nnkFormalParams.newTree(
          nnkBracketExpr.newTree(
            newIdentNode("Result"),
            newIdentNode("bool"),
            newIdentNode("cstring")
          ),
          nnkIdentDefs.newTree(
            newIdentNode("onData"),
            newIdentNode("DataProc"),
            newEmptyNode()
          )
        ),
        newEmptyNode()
      )
    )
  ),
  nnkFuncDef.newTree(
    newIdentNode("get"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("self"),
        nnkBracketExpr.newTree(
          newIdentNode("Result"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkTemplateDef.newTree(
    nnkAccQuoted.newTree(
      newIdentNode("[]")
    ),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("self"),
        nnkBracketExpr.newTree(
          newIdentNode("Result"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkCall.newTree(
        nnkDotExpr.newTree(
          newIdentNode("self"),
          newIdentNode("get")
        )
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("testKVStore"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkVarSection.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("v"),
          nnkBracketExpr.newTree(
            newIdentNode("seq"),
            newIdentNode("byte")
          ),
          newEmptyNode()
        )
      ),
      nnkVarSection.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("p"),
          newIdentNode("GetProc"),
          newEmptyNode()
        )
      ),
      nnkDiscardStmt.newTree(
        nnkBracketExpr.newTree(
          nnkCall.newTree(
            newIdentNode("p"),
            nnkLambda.newTree(
              newEmptyNode(),
              newEmptyNode(),
              newEmptyNode(),
              nnkFormalParams.newTree(
                newEmptyNode(),
                nnkIdentDefs.newTree(
                  newIdentNode("data"),
                  nnkBracketExpr.newTree(
                    newIdentNode("openArray"),
                    newIdentNode("byte")
                  ),
                  newEmptyNode()
                )
              ),
              newEmptyNode(),
              newEmptyNode(),
              nnkStmtList.newTree(
                nnkAsgn.newTree(
                  newIdentNode("v"),
                  nnkPrefix.newTree(
                    newIdentNode("@"),
                    newIdentNode("data")
                  )
                )
              )
            )
          )
        )
      )
    )
  ),
  nnkCall.newTree(
    newIdentNode("testKVStore")
  )
)
2.0.0 :-1: FAIL

Output

Error: Command failed: nim c --run  -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --warnings:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim(14, 6) template/generic instantiation of `[]` from here
/home/runner/work/Nim/Nim/temp.nim(12, 17) Error: redefinition of ':anonymous'; previous declaration here: /home/runner/work/Nim/Nim/temp.nim(12, 17)

Stats

  • Started 2023-08-27T13:52:45
  • Finished 2023-08-27T13:52:45
  • Duration

IR

Compiled filesize 0 bytes (0 bytes)

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("Result"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newIdentNode("E"),
          newEmptyNode(),
          newEmptyNode()
        )
      ),
      nnkObjectTy.newTree(
        newEmptyNode(),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("DataProc"),
      newEmptyNode(),
      nnkProcTy.newTree(
        nnkFormalParams.newTree(
          newEmptyNode(),
          nnkIdentDefs.newTree(
            newIdentNode("val"),
            nnkBracketExpr.newTree(
              newIdentNode("openArray"),
              newIdentNode("byte")
            ),
            newEmptyNode()
          )
        ),
        newEmptyNode()
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("GetProc"),
      newEmptyNode(),
      nnkProcTy.newTree(
        nnkFormalParams.newTree(
          nnkBracketExpr.newTree(
            newIdentNode("Result"),
            newIdentNode("bool"),
            newIdentNode("cstring")
          ),
          nnkIdentDefs.newTree(
            newIdentNode("onData"),
            newIdentNode("DataProc"),
            newEmptyNode()
          )
        ),
        newEmptyNode()
      )
    )
  ),
  nnkFuncDef.newTree(
    newIdentNode("get"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("self"),
        nnkBracketExpr.newTree(
          newIdentNode("Result"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkTemplateDef.newTree(
    nnkAccQuoted.newTree(
      newIdentNode("[]")
    ),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("self"),
        nnkBracketExpr.newTree(
          newIdentNode("Result"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkCall.newTree(
        nnkDotExpr.newTree(
          newIdentNode("self"),
          newIdentNode("get")
        )
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("testKVStore"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkVarSection.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("v"),
          nnkBracketExpr.newTree(
            newIdentNode("seq"),
            newIdentNode("byte")
          ),
          newEmptyNode()
        )
      ),
      nnkVarSection.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("p"),
          newIdentNode("GetProc"),
          newEmptyNode()
        )
      ),
      nnkDiscardStmt.newTree(
        nnkBracketExpr.newTree(
          nnkCall.newTree(
            newIdentNode("p"),
            nnkLambda.newTree(
              newEmptyNode(),
              newEmptyNode(),
              newEmptyNode(),
              nnkFormalParams.newTree(
                newEmptyNode(),
                nnkIdentDefs.newTree(
                  newIdentNode("data"),
                  nnkBracketExpr.newTree(
                    newIdentNode("openArray"),
                    newIdentNode("byte")
                  ),
                  newEmptyNode()
                )
              ),
              newEmptyNode(),
              newEmptyNode(),
              nnkStmtList.newTree(
                nnkAsgn.newTree(
                  newIdentNode("v"),
                  nnkPrefix.newTree(
                    newIdentNode("@"),
                    newIdentNode("data")
                  )
                )
              )
            )
          )
        )
      )
    )
  ),
  nnkCall.newTree(
    newIdentNode("testKVStore")
  )
)
1.6.0 :-1: FAIL

Output

Error: Command failed: nim c --run  -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --warnings:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim(14, 6) template/generic instantiation of `[]` from here
/home/runner/work/Nim/Nim/temp.nim(12, 13) Error: redefinition of ':anonymous'; previous declaration here: /home/runner/work/Nim/Nim/temp.nim(12, 13)

Stats

  • Started 2023-08-27T13:52:48
  • Finished 2023-08-27T13:52:49
  • Duration

IR

Compiled filesize 0 bytes (0 bytes)

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("Result"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newIdentNode("E"),
          newEmptyNode(),
          newEmptyNode()
        )
      ),
      nnkObjectTy.newTree(
        newEmptyNode(),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("DataProc"),
      newEmptyNode(),
      nnkProcTy.newTree(
        nnkFormalParams.newTree(
          newEmptyNode(),
          nnkIdentDefs.newTree(
            newIdentNode("val"),
            nnkBracketExpr.newTree(
              newIdentNode("openArray"),
              newIdentNode("byte")
            ),
            newEmptyNode()
          )
        ),
        newEmptyNode()
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("GetProc"),
      newEmptyNode(),
      nnkProcTy.newTree(
        nnkFormalParams.newTree(
          nnkBracketExpr.newTree(
            newIdentNode("Result"),
            newIdentNode("bool"),
            newIdentNode("cstring")
          ),
          nnkIdentDefs.newTree(
            newIdentNode("onData"),
            newIdentNode("DataProc"),
            newEmptyNode()
          )
        ),
        newEmptyNode()
      )
    )
  ),
  nnkFuncDef.newTree(
    newIdentNode("get"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("self"),
        nnkBracketExpr.newTree(
          newIdentNode("Result"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkTemplateDef.newTree(
    nnkAccQuoted.newTree(
      newIdentNode("[]")
    ),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("self"),
        nnkBracketExpr.newTree(
          newIdentNode("Result"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkCall.newTree(
        nnkDotExpr.newTree(
          newIdentNode("self"),
          newIdentNode("get")
        )
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("testKVStore"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkVarSection.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("v"),
          nnkBracketExpr.newTree(
            newIdentNode("seq"),
            newIdentNode("byte")
          ),
          newEmptyNode()
        )
      ),
      nnkVarSection.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("p"),
          newIdentNode("GetProc"),
          newEmptyNode()
        )
      ),
      nnkDiscardStmt.newTree(
        nnkBracketExpr.newTree(
          nnkCall.newTree(
            newIdentNode("p"),
            nnkLambda.newTree(
              newEmptyNode(),
              newEmptyNode(),
              newEmptyNode(),
              nnkFormalParams.newTree(
                newEmptyNode(),
                nnkIdentDefs.newTree(
                  newIdentNode("data"),
                  nnkBracketExpr.newTree(
                    newIdentNode("openArray"),
                    newIdentNode("byte")
                  ),
                  newEmptyNode()
                )
              ),
              newEmptyNode(),
              newEmptyNode(),
              nnkStmtList.newTree(
                nnkAsgn.newTree(
                  newIdentNode("v"),
                  nnkPrefix.newTree(
                    newIdentNode("@"),
                    newIdentNode("data")
                  )
                )
              )
            )
          )
        )
      )
    )
  ),
  nnkCall.newTree(
    newIdentNode("testKVStore")
  )
)
1.4.0 :-1: FAIL

Output

Error: Command failed: nim c --run  -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --warnings:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
Traceback (most recent call last)
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/work/Nim/Nim/temp.nim testKVStore
SIGSEGV: Illegal storage access. (Attempt to read from nil?)
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp '

Stats

  • Started 2023-08-27T13:52:53
  • Finished 2023-08-27T13:52:53
  • Duration

IR

Compiled filesize 97.11 Kb (99,440 bytes)
#define NIM_INTBITS 64

#include "nimbase.h"
#include <string.h>
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix

  #  define nimfr_(proc, file) \
      TFrame FR_; \
      FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
  #  define nimfrs_(proc, file, slots, length) \
      struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR_; \
      FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
  #  define nimln_(n, file) \
      FR_.line = n; FR_.filename = file;

typedef struct tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tySequence__6H5Oh5UUvVCLiakt9aTwtUQ tySequence__6H5Oh5UUvVCLiakt9aTwtUQ;
typedef struct TGenericSeq TGenericSeq;
typedef struct tyObject_Result__766uXh31f8wK3EK1GTqTxg tyObject_Result__766uXh31f8wK3EK1GTqTxg;
typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
typedef struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;

typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
NI align;
tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw {
  RootObj Sup;
NI colonstate_;
tySequence__6H5Oh5UUvVCLiakt9aTwtUQ* v1;
};
typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct tyObject_Result__766uXh31f8wK3EK1GTqTxg {
char dummy;
};
typedef struct {
N_NIMCALL_PTR(void, ClP_0) (NU8* val, NI valLen_0, void* ClE_0);
void* ClE_0;
} tyProc__AmYyP09cVAnPVL9bYlOQH9chg;
typedef struct {
N_NIMCALL_PTR(tyObject_Result__766uXh31f8wK3EK1GTqTxg, ClP_0) (tyProc__AmYyP09cVAnPVL9bYlOQH9chg onData, void* ClE_0);
void* ClE_0;
} tyProc__kN7yrDxHs3iE9atYJGDxF1Q;
struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
NI refcount;
TNimType* typ;
};
struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
void* bottom;
};
struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
NI len;
NI cap;
tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
};
typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SPr7N6UKfuF549bNPiUvSRw[256];
typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
};
typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
tyArray__0aOLqZchNi8nWtMTi8ND8w link;
NI key;
NI upperBound;
NI level;
};
struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
NI Field1;
};
typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
NI len;
tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
};
struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
NI minLargeObj;
NI maxLargeObj;
tyArray__SPr7N6UKfuF549bNPiUvSRw freeSmallChunks;
NU32 flBitmap;
tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
NI currMem;
NI maxMem;
NI freeMem;
NI occ;
NI lastSize;
tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
NIM_BOOL locked;
NIM_BOOL blockChunkSizeIncrease;
NI nextChunkSize;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
};
struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
NI stackScans;
NI cycleCollections;
NI maxThreshold;
NI maxStackSize;
NI maxStackCells;
NI cycleTableSize;
NI64 maxPause;
};
struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
NI counter;
NI max;
tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
};
struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
NI cycleThreshold;
NI zctThreshold;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
NI recGcLock;
tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
NI gcThreadId;
};
typedef N_CLOSURE_PTR(tyObject_Result__766uXh31f8wK3EK1GTqTxg, TM__SRd76hP9cMfCzdUO857UhQQ_3) (tyProc__AmYyP09cVAnPVL9bYlOQH9chg onData);

struct tySequence__6H5Oh5UUvVCLiakt9aTwtUQ {
  TGenericSeq Sup;
  NU8 data[SEQ_DECL_SIZE];
};

N_LIB_PRIVATE N_NIMCALL(void, testKVStore__EzBZaa239as9bFx8yeHDoTOw)(void);
static N_NIMCALL(void, Marker_tySequence__6H5Oh5UUvVCLiakt9aTwtUQ)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(void, nimGCvisit)(void* d, NI op);
static N_NIMCALL(void, Marker_tyRef__FeYxBCZEdlHsWUmMa2IgOQ)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, get__4JI6uL8q8tB1ni44ORQufA)(tyObject_Result__766uXh31f8wK3EK1GTqTxg self);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_CLOSURE(void, colonanonymous___KjJw6RiPLZSg9aJsg9bUrfQw)(NU8* data, NI dataLen_0, void* ClE_0);
N_LIB_PRIVATE N_NIMCALL(tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*, at___FKhCG9aXnVoTuyjERVXzd2g)(NU8* a, NI aLen_0);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(NI, pluspercent___dgYAo7RfdUVVpvkfKDym8w_2system)(NI x, NI y);
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr);
static N_INLINE(NI, minuspercent___dgYAo7RfdUVVpvkfKDym8wsystem)(NI x, NI y);
static N_INLINE(void, decRef__AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(NIM_BOOL, ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem)(NI x, NI y);
static N_INLINE(void, rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NOINLINE(void, addZCT__Y66tOYFjgwJ0k4aLz4bc0Q)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);

extern TNimType NTI__ytyiCJqK439aF9cIibuRVpAg_;
N_LIB_PRIVATE TNimType NTI__e4OxAaaQRhlF79aYXYVJx9aw_;
extern TNimType NTI__xHTZrq9aYs6boc9bCba0JbpQ_;
extern TNimType NTI__k3HXouOuhqAKq0dx450lXQ_;
N_LIB_PRIVATE TNimType NTI__6H5Oh5UUvVCLiakt9aTwtUQ_;
N_LIB_PRIVATE TNimType NTI__FeYxBCZEdlHsWUmMa2IgOQ_;

extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__IcYaEuuWivYAS86vFMTS3Q;

static N_NIMCALL(void, Marker_tySequence__6H5Oh5UUvVCLiakt9aTwtUQ)(void* p, NI op) {
	tySequence__6H5Oh5UUvVCLiakt9aTwtUQ* a;
	NI T1_;
	a = (tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*)p;
	T1_ = (NI)0;
}
static N_NIMCALL(void, Marker_tyRef__FeYxBCZEdlHsWUmMa2IgOQ)(void* p, NI op) {
	tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw* a;
	a = (tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*)p;
	nimGCvisit((void*)(*a).v1, op);
}
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
	nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
static N_INLINE(void, nimFrame)(TFrame* s) {
	{
		if (!(framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw == NIM_NIL)) goto LA3_;
		(*s).calldepth = ((NI16) 0);
	}
	goto LA1_;
	LA3_: ;
	{
		(*s).calldepth = (NI16)((*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).calldepth + ((NI16) 1));
	}
	LA1_: ;
	(*s).prev = framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
	framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = s;
	{
		if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
		callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw();
	}
	LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
	framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = (*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).prev;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, get__4JI6uL8q8tB1ni44ORQufA)(tyObject_Result__766uXh31f8wK3EK1GTqTxg self) {
	NIM_BOOL result;
	nimfr_("get", "/home/runner/work/Nim/Nim/temp.nim");
	result = (NIM_BOOL)0;
	popFrame();
	return result;
}
static N_INLINE(NI, pluspercent___dgYAo7RfdUVVpvkfKDym8w_2system)(NI x, NI y) {
	NI result;
	nimfr_("+%", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/arithme"
"tics.nim");
	result = (NI)0;
	result = ((NI) ((NU)((NU64)(((NU) (x))) + (NU64)(((NU) (y))))));
	popFrame();
	return result;
}
static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	nimfr_("incRef", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	(*c).refcount = pluspercent___dgYAo7RfdUVVpvkfKDym8w_2system((*c).refcount, ((NI) 8));
	popFrame();
}
static N_INLINE(NI, minuspercent___dgYAo7RfdUVVpvkfKDym8wsystem)(NI x, NI y) {
	NI result;
	nimfr_("-%", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/arithme"
"tics.nim");
	result = (NI)0;
	result = ((NI) ((NU)((NU64)(((NU) (x))) - (NU64)(((NU) (y))))));
	popFrame();
	return result;
}
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr) {
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
	NI T1_;
	nimfr_("usrToCell", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
	T1_ = (NI)0;
	T1_ = minuspercent___dgYAo7RfdUVVpvkfKDym8wsystem(((NI) (ptrdiff_t) (usr)), ((NI) 16));
	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
	popFrame();
	return result;
}
static N_INLINE(NIM_BOOL, ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem)(NI x, NI y) {
	NIM_BOOL result;
	nimfr_("<%", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/compari"
"sons.nim");
	result = (NIM_BOOL)0;
	result = ((NU64)(((NU) (x))) < (NU64)(((NU) (y))));
	popFrame();
	return result;
}
static N_INLINE(void, rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	nimfr_("rtlAddZCT", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	addZCT__Y66tOYFjgwJ0k4aLz4bc0Q((&gch__IcYaEuuWivYAS86vFMTS3Q.zct), c);
	popFrame();
}
static N_INLINE(void, decRef__AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	nimfr_("decRef", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	(*c).refcount = minuspercent___dgYAo7RfdUVVpvkfKDym8wsystem((*c).refcount, ((NI) 8));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem((*c).refcount, ((NI) 8));
		if (!T3_) goto LA4_;
		rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_3system(c);
	}
	LA4_: ;
	popFrame();
}
static N_INLINE(void, asgnRef)(void** dest, void* src) {
	nimfr_("asgnRef", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T5_;
		if (!!((src == NIM_NIL))) goto LA3_;
		T5_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T5_ = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem(src);
		incRef__AT1eRuflKWyTTBdLjEDZbgsystem(T5_);
	}
	LA3_: ;
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T10_;
		if (!!(((*dest) == NIM_NIL))) goto LA8_;
		T10_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T10_ = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem((*dest));
		decRef__AT1eRuflKWyTTBdLjEDZbg_2system(T10_);
	}
	LA8_: ;
	(*dest) = src;
	popFrame();
}
N_LIB_PRIVATE N_CLOSURE(void, colonanonymous___KjJw6RiPLZSg9aJsg9bUrfQw)(NU8* data, NI dataLen_0, void* ClE_0) {
	tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw* colonenvP_;
	nimfr_(":anonymous", "/home/runner/work/Nim/Nim/temp.nim");
	colonenvP_ = (tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*) ClE_0;
	asgnRef((void**) (&(*colonenvP_).v1), at___FKhCG9aXnVoTuyjERVXzd2g(data, dataLen_0));
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, testKVStore__EzBZaa239as9bFx8yeHDoTOw)(void) {
	tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw* colonenv_;
	tyProc__kN7yrDxHs3iE9atYJGDxF1Q p;
	tyProc__AmYyP09cVAnPVL9bYlOQH9chg T1_;
	tyObject_Result__766uXh31f8wK3EK1GTqTxg T2_;
	NIM_BOOL T3_;
	nimfr_("testKVStore", "/home/runner/work/Nim/Nim/temp.nim");
	colonenv_ = (tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*)0;
	colonenv_ = (tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*) newObj((&NTI__FeYxBCZEdlHsWUmMa2IgOQ_), sizeof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw));
	(*colonenv_).Sup.m_type = (&NTI__e4OxAaaQRhlF79aYXYVJx9aw_);
	(*colonenv_).v1 = (tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*)0;
	nimZeroMem((void*)(&p), sizeof(tyProc__kN7yrDxHs3iE9atYJGDxF1Q));
	nimZeroMem((void*)(&T1_), sizeof(tyProc__AmYyP09cVAnPVL9bYlOQH9chg));
	T1_.ClP_0 = colonanonymous___KjJw6RiPLZSg9aJsg9bUrfQw; T1_.ClE_0 = colonenv_;
	T2_ = p.ClE_0? p.ClP_0(T1_, p.ClE_0):((TM__SRd76hP9cMfCzdUO857UhQQ_3)(p.ClP_0))(T1_);
	T3_ = (NIM_BOOL)0;
	T3_ = get__4JI6uL8q8tB1ni44ORQufA(T2_);
	(void)(T3_);
	popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
	nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
	void (*volatile inner)(void);
	inner = PreMainInner;
	systemDatInit000();
	initStackBottomWith((void *)&inner);
	systemInit000();
	tempDatInit000();
	(*inner)();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
	NimMainModule();
}
N_CDECL(void, NimMain)(void) {
	void (*volatile inner)(void);
	PreMain();
	inner = NimMainInner;
	initStackBottomWith((void *)&inner);
	(*inner)();
}
int main(int argc, char** args, char** env) {
	cmdLine = args;
	cmdCount = argc;
	gEnv = env;
	NimMain();
	return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
	nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
	testKVStore__EzBZaa239as9bFx8yeHDoTOw();
	popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void) {

static TNimNode* TM__SRd76hP9cMfCzdUO857UhQQ_2_2[2];
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[3];

NTI__e4OxAaaQRhlF79aYXYVJx9aw_.size = sizeof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw);
NTI__e4OxAaaQRhlF79aYXYVJx9aw_.align = NIM_ALIGNOF(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw);
NTI__e4OxAaaQRhlF79aYXYVJx9aw_.kind = 17;
NTI__e4OxAaaQRhlF79aYXYVJx9aw_.base = (&NTI__ytyiCJqK439aF9cIibuRVpAg_);
TM__SRd76hP9cMfCzdUO857UhQQ_2_2[0] = &TM__SRd76hP9cMfCzdUO857UhQQ_0[1];
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].offset = offsetof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw, colonstate_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].typ = (&NTI__xHTZrq9aYs6boc9bCba0JbpQ_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].name = ":state";
TM__SRd76hP9cMfCzdUO857UhQQ_2_2[1] = &TM__SRd76hP9cMfCzdUO857UhQQ_0[2];
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.size = sizeof(tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*);
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.align = NIM_ALIGNOF(tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*);
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.kind = 24;
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.base = (&NTI__k3HXouOuhqAKq0dx450lXQ_);
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.flags = 2;
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.marker = Marker_tySequence__6H5Oh5UUvVCLiakt9aTwtUQ;
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].offset = offsetof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw, v1);
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].typ = (&NTI__6H5Oh5UUvVCLiakt9aTwtUQ_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].name = "v1";
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].len = 2; TM__SRd76hP9cMfCzdUO857UhQQ_0[0].kind = 2; TM__SRd76hP9cMfCzdUO857UhQQ_0[0].sons = &TM__SRd76hP9cMfCzdUO857UhQQ_2_2[0];
NTI__e4OxAaaQRhlF79aYXYVJx9aw_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[0];
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.size = sizeof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*);
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.align = NIM_ALIGNOF(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*);
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.kind = 22;
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.base = (&NTI__e4OxAaaQRhlF79aYXYVJx9aw_);
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.marker = Marker_tyRef__FeYxBCZEdlHsWUmMa2IgOQ;
}

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("Result"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newIdentNode("E"),
          newEmptyNode(),
          newEmptyNode()
        )
      ),
      nnkObjectTy.newTree(
        newEmptyNode(),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("DataProc"),
      newEmptyNode(),
      nnkProcTy.newTree(
        nnkFormalParams.newTree(
          newEmptyNode(),
          nnkIdentDefs.newTree(
            newIdentNode("val"),
            nnkBracketExpr.newTree(
              newIdentNode("openArray"),
              newIdentNode("byte")
            ),
            newEmptyNode()
          )
        ),
        newEmptyNode()
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("GetProc"),
      newEmptyNode(),
      nnkProcTy.newTree(
        nnkFormalParams.newTree(
          nnkBracketExpr.newTree(
            newIdentNode("Result"),
            newIdentNode("bool"),
            newIdentNode("cstring")
          ),
          nnkIdentDefs.newTree(
            newIdentNode("onData"),
            newIdentNode("DataProc"),
            newEmptyNode()
          )
        ),
        newEmptyNode()
      )
    )
  ),
  nnkFuncDef.newTree(
    newIdentNode("get"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("self"),
        nnkBracketExpr.newTree(
          newIdentNode("Result"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkTemplateDef.newTree(
    nnkAccQuoted.newTree(
      newIdentNode("[]")
    ),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("self"),
        nnkBracketExpr.newTree(
          newIdentNode("Result"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkCall.newTree(
        nnkDotExpr.newTree(
          newIdentNode("self"),
          newIdentNode("get")
        )
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("testKVStore"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkVarSection.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("v"),
          nnkBracketExpr.newTree(
            newIdentNode("seq"),
            newIdentNode("byte")
          ),
          newEmptyNode()
        )
      ),
      nnkVarSection.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("p"),
          newIdentNode("GetProc"),
          newEmptyNode()
        )
      ),
      nnkDiscardStmt.newTree(
        nnkBracketExpr.newTree(
          nnkCall.newTree(
            newIdentNode("p"),
            nnkLambda.newTree(
              newEmptyNode(),
              newEmptyNode(),
              newEmptyNode(),
              nnkFormalParams.newTree(
                newEmptyNode(),
                nnkIdentDefs.newTree(
                  newIdentNode("data"),
                  nnkBracketExpr.newTree(
                    newIdentNode("openArray"),
                    newIdentNode("byte")
                  ),
                  newEmptyNode()
                )
              ),
              newEmptyNode(),
              newEmptyNode(),
              nnkStmtList.newTree(
                nnkAsgn.newTree(
                  newIdentNode("v"),
                  nnkPrefix.newTree(
                    newIdentNode("@"),
                    newIdentNode("data")
                  )
                )
              )
            )
          )
        )
      )
    )
  ),
  nnkCall.newTree(
    newIdentNode("testKVStore")
  )
)
1.2.0 :-1: FAIL

Output

Error: Command failed: nim c --run  -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --warnings:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim(13, 12) Error: internal error: expr: param not init data_3387066
No stack traceback available
To create a stacktrace, rerun compilation with ./koch temp c <file>

Stats

  • Started 2023-08-27T13:53:11
  • Finished 2023-08-27T13:53:11
  • Duration

IR

Compiled filesize 97.11 Kb (99,440 bytes)
#define NIM_INTBITS 64

#include "nimbase.h"
#include <string.h>
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix

  #  define nimfr_(proc, file) \
      TFrame FR_; \
      FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
  #  define nimfrs_(proc, file, slots, length) \
      struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR_; \
      FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
  #  define nimln_(n, file) \
      FR_.line = n; FR_.filename = file;

typedef struct tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tySequence__6H5Oh5UUvVCLiakt9aTwtUQ tySequence__6H5Oh5UUvVCLiakt9aTwtUQ;
typedef struct TGenericSeq TGenericSeq;
typedef struct tyObject_Result__766uXh31f8wK3EK1GTqTxg tyObject_Result__766uXh31f8wK3EK1GTqTxg;
typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
typedef struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;

typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
NI align;
tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw {
  RootObj Sup;
NI colonstate_;
tySequence__6H5Oh5UUvVCLiakt9aTwtUQ* v1;
};
typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct tyObject_Result__766uXh31f8wK3EK1GTqTxg {
char dummy;
};
typedef struct {
N_NIMCALL_PTR(void, ClP_0) (NU8* val, NI valLen_0, void* ClE_0);
void* ClE_0;
} tyProc__AmYyP09cVAnPVL9bYlOQH9chg;
typedef struct {
N_NIMCALL_PTR(tyObject_Result__766uXh31f8wK3EK1GTqTxg, ClP_0) (tyProc__AmYyP09cVAnPVL9bYlOQH9chg onData, void* ClE_0);
void* ClE_0;
} tyProc__kN7yrDxHs3iE9atYJGDxF1Q;
struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
NI refcount;
TNimType* typ;
};
struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
void* bottom;
};
struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
NI len;
NI cap;
tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
};
typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SPr7N6UKfuF549bNPiUvSRw[256];
typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
};
typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
tyArray__0aOLqZchNi8nWtMTi8ND8w link;
NI key;
NI upperBound;
NI level;
};
struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
NI Field1;
};
typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
NI len;
tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
};
struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
NI minLargeObj;
NI maxLargeObj;
tyArray__SPr7N6UKfuF549bNPiUvSRw freeSmallChunks;
NU32 flBitmap;
tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
NI currMem;
NI maxMem;
NI freeMem;
NI occ;
NI lastSize;
tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
NIM_BOOL locked;
NIM_BOOL blockChunkSizeIncrease;
NI nextChunkSize;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
};
struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
NI stackScans;
NI cycleCollections;
NI maxThreshold;
NI maxStackSize;
NI maxStackCells;
NI cycleTableSize;
NI64 maxPause;
};
struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
NI counter;
NI max;
tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
};
struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
NI cycleThreshold;
NI zctThreshold;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
NI recGcLock;
tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
NI gcThreadId;
};
typedef N_CLOSURE_PTR(tyObject_Result__766uXh31f8wK3EK1GTqTxg, TM__SRd76hP9cMfCzdUO857UhQQ_3) (tyProc__AmYyP09cVAnPVL9bYlOQH9chg onData);

struct tySequence__6H5Oh5UUvVCLiakt9aTwtUQ {
  TGenericSeq Sup;
  NU8 data[SEQ_DECL_SIZE];
};

N_LIB_PRIVATE N_NIMCALL(void, testKVStore__EzBZaa239as9bFx8yeHDoTOw)(void);
static N_NIMCALL(void, Marker_tySequence__6H5Oh5UUvVCLiakt9aTwtUQ)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(void, nimGCvisit)(void* d, NI op);
static N_NIMCALL(void, Marker_tyRef__FeYxBCZEdlHsWUmMa2IgOQ)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, get__4JI6uL8q8tB1ni44ORQufA)(tyObject_Result__766uXh31f8wK3EK1GTqTxg self);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_CLOSURE(void, colonanonymous___KjJw6RiPLZSg9aJsg9bUrfQw)(NU8* data, NI dataLen_0, void* ClE_0);
N_LIB_PRIVATE N_NIMCALL(tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*, at___FKhCG9aXnVoTuyjERVXzd2g)(NU8* a, NI aLen_0);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(NI, pluspercent___dgYAo7RfdUVVpvkfKDym8w_2system)(NI x, NI y);
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr);
static N_INLINE(NI, minuspercent___dgYAo7RfdUVVpvkfKDym8wsystem)(NI x, NI y);
static N_INLINE(void, decRef__AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(NIM_BOOL, ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem)(NI x, NI y);
static N_INLINE(void, rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NOINLINE(void, addZCT__Y66tOYFjgwJ0k4aLz4bc0Q)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);

extern TNimType NTI__ytyiCJqK439aF9cIibuRVpAg_;
N_LIB_PRIVATE TNimType NTI__e4OxAaaQRhlF79aYXYVJx9aw_;
extern TNimType NTI__xHTZrq9aYs6boc9bCba0JbpQ_;
extern TNimType NTI__k3HXouOuhqAKq0dx450lXQ_;
N_LIB_PRIVATE TNimType NTI__6H5Oh5UUvVCLiakt9aTwtUQ_;
N_LIB_PRIVATE TNimType NTI__FeYxBCZEdlHsWUmMa2IgOQ_;

extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__IcYaEuuWivYAS86vFMTS3Q;

static N_NIMCALL(void, Marker_tySequence__6H5Oh5UUvVCLiakt9aTwtUQ)(void* p, NI op) {
	tySequence__6H5Oh5UUvVCLiakt9aTwtUQ* a;
	NI T1_;
	a = (tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*)p;
	T1_ = (NI)0;
}
static N_NIMCALL(void, Marker_tyRef__FeYxBCZEdlHsWUmMa2IgOQ)(void* p, NI op) {
	tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw* a;
	a = (tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*)p;
	nimGCvisit((void*)(*a).v1, op);
}
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
	nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
static N_INLINE(void, nimFrame)(TFrame* s) {
	{
		if (!(framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw == NIM_NIL)) goto LA3_;
		(*s).calldepth = ((NI16) 0);
	}
	goto LA1_;
	LA3_: ;
	{
		(*s).calldepth = (NI16)((*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).calldepth + ((NI16) 1));
	}
	LA1_: ;
	(*s).prev = framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
	framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = s;
	{
		if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
		callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw();
	}
	LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
	framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = (*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).prev;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, get__4JI6uL8q8tB1ni44ORQufA)(tyObject_Result__766uXh31f8wK3EK1GTqTxg self) {
	NIM_BOOL result;
	nimfr_("get", "/home/runner/work/Nim/Nim/temp.nim");
	result = (NIM_BOOL)0;
	popFrame();
	return result;
}
static N_INLINE(NI, pluspercent___dgYAo7RfdUVVpvkfKDym8w_2system)(NI x, NI y) {
	NI result;
	nimfr_("+%", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/arithme"
"tics.nim");
	result = (NI)0;
	result = ((NI) ((NU)((NU64)(((NU) (x))) + (NU64)(((NU) (y))))));
	popFrame();
	return result;
}
static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	nimfr_("incRef", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	(*c).refcount = pluspercent___dgYAo7RfdUVVpvkfKDym8w_2system((*c).refcount, ((NI) 8));
	popFrame();
}
static N_INLINE(NI, minuspercent___dgYAo7RfdUVVpvkfKDym8wsystem)(NI x, NI y) {
	NI result;
	nimfr_("-%", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/arithme"
"tics.nim");
	result = (NI)0;
	result = ((NI) ((NU)((NU64)(((NU) (x))) - (NU64)(((NU) (y))))));
	popFrame();
	return result;
}
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr) {
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
	NI T1_;
	nimfr_("usrToCell", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
	T1_ = (NI)0;
	T1_ = minuspercent___dgYAo7RfdUVVpvkfKDym8wsystem(((NI) (ptrdiff_t) (usr)), ((NI) 16));
	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
	popFrame();
	return result;
}
static N_INLINE(NIM_BOOL, ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem)(NI x, NI y) {
	NIM_BOOL result;
	nimfr_("<%", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/compari"
"sons.nim");
	result = (NIM_BOOL)0;
	result = ((NU64)(((NU) (x))) < (NU64)(((NU) (y))));
	popFrame();
	return result;
}
static N_INLINE(void, rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	nimfr_("rtlAddZCT", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	addZCT__Y66tOYFjgwJ0k4aLz4bc0Q((&gch__IcYaEuuWivYAS86vFMTS3Q.zct), c);
	popFrame();
}
static N_INLINE(void, decRef__AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	nimfr_("decRef", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	(*c).refcount = minuspercent___dgYAo7RfdUVVpvkfKDym8wsystem((*c).refcount, ((NI) 8));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem((*c).refcount, ((NI) 8));
		if (!T3_) goto LA4_;
		rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_3system(c);
	}
	LA4_: ;
	popFrame();
}
static N_INLINE(void, asgnRef)(void** dest, void* src) {
	nimfr_("asgnRef", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T5_;
		if (!!((src == NIM_NIL))) goto LA3_;
		T5_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T5_ = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem(src);
		incRef__AT1eRuflKWyTTBdLjEDZbgsystem(T5_);
	}
	LA3_: ;
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T10_;
		if (!!(((*dest) == NIM_NIL))) goto LA8_;
		T10_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T10_ = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem((*dest));
		decRef__AT1eRuflKWyTTBdLjEDZbg_2system(T10_);
	}
	LA8_: ;
	(*dest) = src;
	popFrame();
}
N_LIB_PRIVATE N_CLOSURE(void, colonanonymous___KjJw6RiPLZSg9aJsg9bUrfQw)(NU8* data, NI dataLen_0, void* ClE_0) {
	tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw* colonenvP_;
	nimfr_(":anonymous", "/home/runner/work/Nim/Nim/temp.nim");
	colonenvP_ = (tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*) ClE_0;
	asgnRef((void**) (&(*colonenvP_).v1), at___FKhCG9aXnVoTuyjERVXzd2g(data, dataLen_0));
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, testKVStore__EzBZaa239as9bFx8yeHDoTOw)(void) {
	tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw* colonenv_;
	tyProc__kN7yrDxHs3iE9atYJGDxF1Q p;
	tyProc__AmYyP09cVAnPVL9bYlOQH9chg T1_;
	tyObject_Result__766uXh31f8wK3EK1GTqTxg T2_;
	NIM_BOOL T3_;
	nimfr_("testKVStore", "/home/runner/work/Nim/Nim/temp.nim");
	colonenv_ = (tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*)0;
	colonenv_ = (tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*) newObj((&NTI__FeYxBCZEdlHsWUmMa2IgOQ_), sizeof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw));
	(*colonenv_).Sup.m_type = (&NTI__e4OxAaaQRhlF79aYXYVJx9aw_);
	(*colonenv_).v1 = (tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*)0;
	nimZeroMem((void*)(&p), sizeof(tyProc__kN7yrDxHs3iE9atYJGDxF1Q));
	nimZeroMem((void*)(&T1_), sizeof(tyProc__AmYyP09cVAnPVL9bYlOQH9chg));
	T1_.ClP_0 = colonanonymous___KjJw6RiPLZSg9aJsg9bUrfQw; T1_.ClE_0 = colonenv_;
	T2_ = p.ClE_0? p.ClP_0(T1_, p.ClE_0):((TM__SRd76hP9cMfCzdUO857UhQQ_3)(p.ClP_0))(T1_);
	T3_ = (NIM_BOOL)0;
	T3_ = get__4JI6uL8q8tB1ni44ORQufA(T2_);
	(void)(T3_);
	popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
	nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
	void (*volatile inner)(void);
	inner = PreMainInner;
	systemDatInit000();
	initStackBottomWith((void *)&inner);
	systemInit000();
	tempDatInit000();
	(*inner)();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
	NimMainModule();
}
N_CDECL(void, NimMain)(void) {
	void (*volatile inner)(void);
	PreMain();
	inner = NimMainInner;
	initStackBottomWith((void *)&inner);
	(*inner)();
}
int main(int argc, char** args, char** env) {
	cmdLine = args;
	cmdCount = argc;
	gEnv = env;
	NimMain();
	return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
	nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
	testKVStore__EzBZaa239as9bFx8yeHDoTOw();
	popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void) {

static TNimNode* TM__SRd76hP9cMfCzdUO857UhQQ_2_2[2];
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[3];

NTI__e4OxAaaQRhlF79aYXYVJx9aw_.size = sizeof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw);
NTI__e4OxAaaQRhlF79aYXYVJx9aw_.align = NIM_ALIGNOF(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw);
NTI__e4OxAaaQRhlF79aYXYVJx9aw_.kind = 17;
NTI__e4OxAaaQRhlF79aYXYVJx9aw_.base = (&NTI__ytyiCJqK439aF9cIibuRVpAg_);
TM__SRd76hP9cMfCzdUO857UhQQ_2_2[0] = &TM__SRd76hP9cMfCzdUO857UhQQ_0[1];
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].offset = offsetof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw, colonstate_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].typ = (&NTI__xHTZrq9aYs6boc9bCba0JbpQ_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].name = ":state";
TM__SRd76hP9cMfCzdUO857UhQQ_2_2[1] = &TM__SRd76hP9cMfCzdUO857UhQQ_0[2];
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.size = sizeof(tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*);
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.align = NIM_ALIGNOF(tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*);
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.kind = 24;
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.base = (&NTI__k3HXouOuhqAKq0dx450lXQ_);
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.flags = 2;
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.marker = Marker_tySequence__6H5Oh5UUvVCLiakt9aTwtUQ;
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].offset = offsetof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw, v1);
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].typ = (&NTI__6H5Oh5UUvVCLiakt9aTwtUQ_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].name = "v1";
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].len = 2; TM__SRd76hP9cMfCzdUO857UhQQ_0[0].kind = 2; TM__SRd76hP9cMfCzdUO857UhQQ_0[0].sons = &TM__SRd76hP9cMfCzdUO857UhQQ_2_2[0];
NTI__e4OxAaaQRhlF79aYXYVJx9aw_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[0];
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.size = sizeof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*);
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.align = NIM_ALIGNOF(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*);
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.kind = 22;
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.base = (&NTI__e4OxAaaQRhlF79aYXYVJx9aw_);
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.marker = Marker_tyRef__FeYxBCZEdlHsWUmMa2IgOQ;
}

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("Result"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newIdentNode("E"),
          newEmptyNode(),
          newEmptyNode()
        )
      ),
      nnkObjectTy.newTree(
        newEmptyNode(),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("DataProc"),
      newEmptyNode(),
      nnkProcTy.newTree(
        nnkFormalParams.newTree(
          newEmptyNode(),
          nnkIdentDefs.newTree(
            newIdentNode("val"),
            nnkBracketExpr.newTree(
              newIdentNode("openArray"),
              newIdentNode("byte")
            ),
            newEmptyNode()
          )
        ),
        newEmptyNode()
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("GetProc"),
      newEmptyNode(),
      nnkProcTy.newTree(
        nnkFormalParams.newTree(
          nnkBracketExpr.newTree(
            newIdentNode("Result"),
            newIdentNode("bool"),
            newIdentNode("cstring")
          ),
          nnkIdentDefs.newTree(
            newIdentNode("onData"),
            newIdentNode("DataProc"),
            newEmptyNode()
          )
        ),
        newEmptyNode()
      )
    )
  ),
  nnkFuncDef.newTree(
    newIdentNode("get"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("self"),
        nnkBracketExpr.newTree(
          newIdentNode("Result"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkTemplateDef.newTree(
    nnkAccQuoted.newTree(
      newIdentNode("[]")
    ),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("self"),
        nnkBracketExpr.newTree(
          newIdentNode("Result"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkCall.newTree(
        nnkDotExpr.newTree(
          newIdentNode("self"),
          newIdentNode("get")
        )
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("testKVStore"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkVarSection.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("v"),
          nnkBracketExpr.newTree(
            newIdentNode("seq"),
            newIdentNode("byte")
          ),
          newEmptyNode()
        )
      ),
      nnkVarSection.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("p"),
          newIdentNode("GetProc"),
          newEmptyNode()
        )
      ),
      nnkDiscardStmt.newTree(
        nnkBracketExpr.newTree(
          nnkCall.newTree(
            newIdentNode("p"),
            nnkLambda.newTree(
              newEmptyNode(),
              newEmptyNode(),
              newEmptyNode(),
              nnkFormalParams.newTree(
                newEmptyNode(),
                nnkIdentDefs.newTree(
                  newIdentNode("data"),
                  nnkBracketExpr.newTree(
                    newIdentNode("openArray"),
                    newIdentNode("byte")
                  ),
                  newEmptyNode()
                )
              ),
              newEmptyNode(),
              newEmptyNode(),
              nnkStmtList.newTree(
                nnkAsgn.newTree(
                  newIdentNode("v"),
                  nnkPrefix.newTree(
                    newIdentNode("@"),
                    newIdentNode("data")
                  )
                )
              )
            )
          )
        )
      )
    )
  ),
  nnkCall.newTree(
    newIdentNode("testKVStore")
  )
)
1.0.0 :-1: FAIL

Output

Error: Command failed: nim c --run  -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --warnings:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim(13, 12) Error: internal error: expr: param not init data_133066
No stack traceback available
To create a stacktrace, rerun compilation with ./koch temp c <file>

Stats

  • Started 2023-08-27T13:53:22
  • Finished 2023-08-27T13:53:22
  • Duration

IR

Compiled filesize 97.11 Kb (99,440 bytes)
#define NIM_INTBITS 64

#include "nimbase.h"
#include <string.h>
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix

  #  define nimfr_(proc, file) \
      TFrame FR_; \
      FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
  #  define nimfrs_(proc, file, slots, length) \
      struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR_; \
      FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
  #  define nimln_(n, file) \
      FR_.line = n; FR_.filename = file;

typedef struct tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tySequence__6H5Oh5UUvVCLiakt9aTwtUQ tySequence__6H5Oh5UUvVCLiakt9aTwtUQ;
typedef struct TGenericSeq TGenericSeq;
typedef struct tyObject_Result__766uXh31f8wK3EK1GTqTxg tyObject_Result__766uXh31f8wK3EK1GTqTxg;
typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
typedef struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;

typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
NI align;
tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw {
  RootObj Sup;
NI colonstate_;
tySequence__6H5Oh5UUvVCLiakt9aTwtUQ* v1;
};
typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct tyObject_Result__766uXh31f8wK3EK1GTqTxg {
char dummy;
};
typedef struct {
N_NIMCALL_PTR(void, ClP_0) (NU8* val, NI valLen_0, void* ClE_0);
void* ClE_0;
} tyProc__AmYyP09cVAnPVL9bYlOQH9chg;
typedef struct {
N_NIMCALL_PTR(tyObject_Result__766uXh31f8wK3EK1GTqTxg, ClP_0) (tyProc__AmYyP09cVAnPVL9bYlOQH9chg onData, void* ClE_0);
void* ClE_0;
} tyProc__kN7yrDxHs3iE9atYJGDxF1Q;
struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
NI refcount;
TNimType* typ;
};
struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
void* bottom;
};
struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
NI len;
NI cap;
tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
};
typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SPr7N6UKfuF549bNPiUvSRw[256];
typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
};
typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
tyArray__0aOLqZchNi8nWtMTi8ND8w link;
NI key;
NI upperBound;
NI level;
};
struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
NI Field1;
};
typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
NI len;
tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
};
struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
NI minLargeObj;
NI maxLargeObj;
tyArray__SPr7N6UKfuF549bNPiUvSRw freeSmallChunks;
NU32 flBitmap;
tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
NI currMem;
NI maxMem;
NI freeMem;
NI occ;
NI lastSize;
tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
NIM_BOOL locked;
NIM_BOOL blockChunkSizeIncrease;
NI nextChunkSize;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
};
struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
NI stackScans;
NI cycleCollections;
NI maxThreshold;
NI maxStackSize;
NI maxStackCells;
NI cycleTableSize;
NI64 maxPause;
};
struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
NI counter;
NI max;
tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
};
struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
NI cycleThreshold;
NI zctThreshold;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
NI recGcLock;
tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
NI gcThreadId;
};
typedef N_CLOSURE_PTR(tyObject_Result__766uXh31f8wK3EK1GTqTxg, TM__SRd76hP9cMfCzdUO857UhQQ_3) (tyProc__AmYyP09cVAnPVL9bYlOQH9chg onData);

struct tySequence__6H5Oh5UUvVCLiakt9aTwtUQ {
  TGenericSeq Sup;
  NU8 data[SEQ_DECL_SIZE];
};

N_LIB_PRIVATE N_NIMCALL(void, testKVStore__EzBZaa239as9bFx8yeHDoTOw)(void);
static N_NIMCALL(void, Marker_tySequence__6H5Oh5UUvVCLiakt9aTwtUQ)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(void, nimGCvisit)(void* d, NI op);
static N_NIMCALL(void, Marker_tyRef__FeYxBCZEdlHsWUmMa2IgOQ)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, get__4JI6uL8q8tB1ni44ORQufA)(tyObject_Result__766uXh31f8wK3EK1GTqTxg self);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_CLOSURE(void, colonanonymous___KjJw6RiPLZSg9aJsg9bUrfQw)(NU8* data, NI dataLen_0, void* ClE_0);
N_LIB_PRIVATE N_NIMCALL(tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*, at___FKhCG9aXnVoTuyjERVXzd2g)(NU8* a, NI aLen_0);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(NI, pluspercent___dgYAo7RfdUVVpvkfKDym8w_2system)(NI x, NI y);
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr);
static N_INLINE(NI, minuspercent___dgYAo7RfdUVVpvkfKDym8wsystem)(NI x, NI y);
static N_INLINE(void, decRef__AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(NIM_BOOL, ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem)(NI x, NI y);
static N_INLINE(void, rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NOINLINE(void, addZCT__Y66tOYFjgwJ0k4aLz4bc0Q)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);

extern TNimType NTI__ytyiCJqK439aF9cIibuRVpAg_;
N_LIB_PRIVATE TNimType NTI__e4OxAaaQRhlF79aYXYVJx9aw_;
extern TNimType NTI__xHTZrq9aYs6boc9bCba0JbpQ_;
extern TNimType NTI__k3HXouOuhqAKq0dx450lXQ_;
N_LIB_PRIVATE TNimType NTI__6H5Oh5UUvVCLiakt9aTwtUQ_;
N_LIB_PRIVATE TNimType NTI__FeYxBCZEdlHsWUmMa2IgOQ_;

extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__IcYaEuuWivYAS86vFMTS3Q;

static N_NIMCALL(void, Marker_tySequence__6H5Oh5UUvVCLiakt9aTwtUQ)(void* p, NI op) {
	tySequence__6H5Oh5UUvVCLiakt9aTwtUQ* a;
	NI T1_;
	a = (tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*)p;
	T1_ = (NI)0;
}
static N_NIMCALL(void, Marker_tyRef__FeYxBCZEdlHsWUmMa2IgOQ)(void* p, NI op) {
	tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw* a;
	a = (tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*)p;
	nimGCvisit((void*)(*a).v1, op);
}
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
	nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
static N_INLINE(void, nimFrame)(TFrame* s) {
	{
		if (!(framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw == NIM_NIL)) goto LA3_;
		(*s).calldepth = ((NI16) 0);
	}
	goto LA1_;
	LA3_: ;
	{
		(*s).calldepth = (NI16)((*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).calldepth + ((NI16) 1));
	}
	LA1_: ;
	(*s).prev = framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
	framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = s;
	{
		if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
		callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw();
	}
	LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
	framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = (*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).prev;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, get__4JI6uL8q8tB1ni44ORQufA)(tyObject_Result__766uXh31f8wK3EK1GTqTxg self) {
	NIM_BOOL result;
	nimfr_("get", "/home/runner/work/Nim/Nim/temp.nim");
	result = (NIM_BOOL)0;
	popFrame();
	return result;
}
static N_INLINE(NI, pluspercent___dgYAo7RfdUVVpvkfKDym8w_2system)(NI x, NI y) {
	NI result;
	nimfr_("+%", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/arithme"
"tics.nim");
	result = (NI)0;
	result = ((NI) ((NU)((NU64)(((NU) (x))) + (NU64)(((NU) (y))))));
	popFrame();
	return result;
}
static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	nimfr_("incRef", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	(*c).refcount = pluspercent___dgYAo7RfdUVVpvkfKDym8w_2system((*c).refcount, ((NI) 8));
	popFrame();
}
static N_INLINE(NI, minuspercent___dgYAo7RfdUVVpvkfKDym8wsystem)(NI x, NI y) {
	NI result;
	nimfr_("-%", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/arithme"
"tics.nim");
	result = (NI)0;
	result = ((NI) ((NU)((NU64)(((NU) (x))) - (NU64)(((NU) (y))))));
	popFrame();
	return result;
}
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr) {
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
	NI T1_;
	nimfr_("usrToCell", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
	T1_ = (NI)0;
	T1_ = minuspercent___dgYAo7RfdUVVpvkfKDym8wsystem(((NI) (ptrdiff_t) (usr)), ((NI) 16));
	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
	popFrame();
	return result;
}
static N_INLINE(NIM_BOOL, ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem)(NI x, NI y) {
	NIM_BOOL result;
	nimfr_("<%", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/compari"
"sons.nim");
	result = (NIM_BOOL)0;
	result = ((NU64)(((NU) (x))) < (NU64)(((NU) (y))));
	popFrame();
	return result;
}
static N_INLINE(void, rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	nimfr_("rtlAddZCT", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	addZCT__Y66tOYFjgwJ0k4aLz4bc0Q((&gch__IcYaEuuWivYAS86vFMTS3Q.zct), c);
	popFrame();
}
static N_INLINE(void, decRef__AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	nimfr_("decRef", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	(*c).refcount = minuspercent___dgYAo7RfdUVVpvkfKDym8wsystem((*c).refcount, ((NI) 8));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem((*c).refcount, ((NI) 8));
		if (!T3_) goto LA4_;
		rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_3system(c);
	}
	LA4_: ;
	popFrame();
}
static N_INLINE(void, asgnRef)(void** dest, void* src) {
	nimfr_("asgnRef", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T5_;
		if (!!((src == NIM_NIL))) goto LA3_;
		T5_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T5_ = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem(src);
		incRef__AT1eRuflKWyTTBdLjEDZbgsystem(T5_);
	}
	LA3_: ;
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T10_;
		if (!!(((*dest) == NIM_NIL))) goto LA8_;
		T10_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T10_ = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem((*dest));
		decRef__AT1eRuflKWyTTBdLjEDZbg_2system(T10_);
	}
	LA8_: ;
	(*dest) = src;
	popFrame();
}
N_LIB_PRIVATE N_CLOSURE(void, colonanonymous___KjJw6RiPLZSg9aJsg9bUrfQw)(NU8* data, NI dataLen_0, void* ClE_0) {
	tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw* colonenvP_;
	nimfr_(":anonymous", "/home/runner/work/Nim/Nim/temp.nim");
	colonenvP_ = (tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*) ClE_0;
	asgnRef((void**) (&(*colonenvP_).v1), at___FKhCG9aXnVoTuyjERVXzd2g(data, dataLen_0));
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, testKVStore__EzBZaa239as9bFx8yeHDoTOw)(void) {
	tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw* colonenv_;
	tyProc__kN7yrDxHs3iE9atYJGDxF1Q p;
	tyProc__AmYyP09cVAnPVL9bYlOQH9chg T1_;
	tyObject_Result__766uXh31f8wK3EK1GTqTxg T2_;
	NIM_BOOL T3_;
	nimfr_("testKVStore", "/home/runner/work/Nim/Nim/temp.nim");
	colonenv_ = (tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*)0;
	colonenv_ = (tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*) newObj((&NTI__FeYxBCZEdlHsWUmMa2IgOQ_), sizeof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw));
	(*colonenv_).Sup.m_type = (&NTI__e4OxAaaQRhlF79aYXYVJx9aw_);
	(*colonenv_).v1 = (tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*)0;
	nimZeroMem((void*)(&p), sizeof(tyProc__kN7yrDxHs3iE9atYJGDxF1Q));
	nimZeroMem((void*)(&T1_), sizeof(tyProc__AmYyP09cVAnPVL9bYlOQH9chg));
	T1_.ClP_0 = colonanonymous___KjJw6RiPLZSg9aJsg9bUrfQw; T1_.ClE_0 = colonenv_;
	T2_ = p.ClE_0? p.ClP_0(T1_, p.ClE_0):((TM__SRd76hP9cMfCzdUO857UhQQ_3)(p.ClP_0))(T1_);
	T3_ = (NIM_BOOL)0;
	T3_ = get__4JI6uL8q8tB1ni44ORQufA(T2_);
	(void)(T3_);
	popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
	nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
	void (*volatile inner)(void);
	inner = PreMainInner;
	systemDatInit000();
	initStackBottomWith((void *)&inner);
	systemInit000();
	tempDatInit000();
	(*inner)();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
	NimMainModule();
}
N_CDECL(void, NimMain)(void) {
	void (*volatile inner)(void);
	PreMain();
	inner = NimMainInner;
	initStackBottomWith((void *)&inner);
	(*inner)();
}
int main(int argc, char** args, char** env) {
	cmdLine = args;
	cmdCount = argc;
	gEnv = env;
	NimMain();
	return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
	nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
	testKVStore__EzBZaa239as9bFx8yeHDoTOw();
	popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void) {

static TNimNode* TM__SRd76hP9cMfCzdUO857UhQQ_2_2[2];
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[3];

NTI__e4OxAaaQRhlF79aYXYVJx9aw_.size = sizeof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw);
NTI__e4OxAaaQRhlF79aYXYVJx9aw_.align = NIM_ALIGNOF(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw);
NTI__e4OxAaaQRhlF79aYXYVJx9aw_.kind = 17;
NTI__e4OxAaaQRhlF79aYXYVJx9aw_.base = (&NTI__ytyiCJqK439aF9cIibuRVpAg_);
TM__SRd76hP9cMfCzdUO857UhQQ_2_2[0] = &TM__SRd76hP9cMfCzdUO857UhQQ_0[1];
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].offset = offsetof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw, colonstate_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].typ = (&NTI__xHTZrq9aYs6boc9bCba0JbpQ_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].name = ":state";
TM__SRd76hP9cMfCzdUO857UhQQ_2_2[1] = &TM__SRd76hP9cMfCzdUO857UhQQ_0[2];
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.size = sizeof(tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*);
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.align = NIM_ALIGNOF(tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*);
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.kind = 24;
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.base = (&NTI__k3HXouOuhqAKq0dx450lXQ_);
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.flags = 2;
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.marker = Marker_tySequence__6H5Oh5UUvVCLiakt9aTwtUQ;
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].offset = offsetof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw, v1);
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].typ = (&NTI__6H5Oh5UUvVCLiakt9aTwtUQ_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].name = "v1";
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].len = 2; TM__SRd76hP9cMfCzdUO857UhQQ_0[0].kind = 2; TM__SRd76hP9cMfCzdUO857UhQQ_0[0].sons = &TM__SRd76hP9cMfCzdUO857UhQQ_2_2[0];
NTI__e4OxAaaQRhlF79aYXYVJx9aw_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[0];
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.size = sizeof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*);
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.align = NIM_ALIGNOF(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*);
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.kind = 22;
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.base = (&NTI__e4OxAaaQRhlF79aYXYVJx9aw_);
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.marker = Marker_tyRef__FeYxBCZEdlHsWUmMa2IgOQ;
}

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("Result"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newIdentNode("E"),
          newEmptyNode(),
          newEmptyNode()
        )
      ),
      nnkObjectTy.newTree(
        newEmptyNode(),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("DataProc"),
      newEmptyNode(),
      nnkProcTy.newTree(
        nnkFormalParams.newTree(
          newEmptyNode(),
          nnkIdentDefs.newTree(
            newIdentNode("val"),
            nnkBracketExpr.newTree(
              newIdentNode("openArray"),
              newIdentNode("byte")
            ),
            newEmptyNode()
          )
        ),
        newEmptyNode()
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("GetProc"),
      newEmptyNode(),
      nnkProcTy.newTree(
        nnkFormalParams.newTree(
          nnkBracketExpr.newTree(
            newIdentNode("Result"),
            newIdentNode("bool"),
            newIdentNode("cstring")
          ),
          nnkIdentDefs.newTree(
            newIdentNode("onData"),
            newIdentNode("DataProc"),
            newEmptyNode()
          )
        ),
        newEmptyNode()
      )
    )
  ),
  nnkFuncDef.newTree(
    newIdentNode("get"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("self"),
        nnkBracketExpr.newTree(
          newIdentNode("Result"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkTemplateDef.newTree(
    nnkAccQuoted.newTree(
      newIdentNode("[]")
    ),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("self"),
        nnkBracketExpr.newTree(
          newIdentNode("Result"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkCall.newTree(
        nnkDotExpr.newTree(
          newIdentNode("self"),
          newIdentNode("get")
        )
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("testKVStore"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkVarSection.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("v"),
          nnkBracketExpr.newTree(
            newIdentNode("seq"),
            newIdentNode("byte")
          ),
          newEmptyNode()
        )
      ),
      nnkVarSection.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("p"),
          newIdentNode("GetProc"),
          newEmptyNode()
        )
      ),
      nnkDiscardStmt.newTree(
        nnkBracketExpr.newTree(
          nnkCall.newTree(
            newIdentNode("p"),
            nnkLambda.newTree(
              newEmptyNode(),
              newEmptyNode(),
              newEmptyNode(),
              nnkFormalParams.newTree(
                newEmptyNode(),
                nnkIdentDefs.newTree(
                  newIdentNode("data"),
                  nnkBracketExpr.newTree(
                    newIdentNode("openArray"),
                    newIdentNode("byte")
                  ),
                  newEmptyNode()
                )
              ),
              newEmptyNode(),
              newEmptyNode(),
              nnkStmtList.newTree(
                nnkAsgn.newTree(
                  newIdentNode("v"),
                  nnkPrefix.newTree(
                    newIdentNode("@"),
                    newIdentNode("data")
                  )
                )
              )
            )
          )
        )
      )
    )
  ),
  nnkCall.newTree(
    newIdentNode("testKVStore")
  )
)
0.20.2 :-1: FAIL

Output

Error: Command failed: nim c --run  -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --warnings:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim(13, 12) Error: internal error: expr: param not init data_133066
No stack traceback available
To create a stacktrace, rerun compilation with ./koch temp c <file>

Stats

  • Started 2023-08-27T13:53:33
  • Finished 2023-08-27T13:53:33
  • Duration

IR

Compiled filesize 97.11 Kb (99,440 bytes)
#define NIM_INTBITS 64

#include "nimbase.h"
#include <string.h>
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix

  #  define nimfr_(proc, file) \
      TFrame FR_; \
      FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
  #  define nimfrs_(proc, file, slots, length) \
      struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR_; \
      FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
  #  define nimln_(n, file) \
      FR_.line = n; FR_.filename = file;

typedef struct tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tySequence__6H5Oh5UUvVCLiakt9aTwtUQ tySequence__6H5Oh5UUvVCLiakt9aTwtUQ;
typedef struct TGenericSeq TGenericSeq;
typedef struct tyObject_Result__766uXh31f8wK3EK1GTqTxg tyObject_Result__766uXh31f8wK3EK1GTqTxg;
typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
typedef struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;

typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
NI align;
tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw {
  RootObj Sup;
NI colonstate_;
tySequence__6H5Oh5UUvVCLiakt9aTwtUQ* v1;
};
typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct tyObject_Result__766uXh31f8wK3EK1GTqTxg {
char dummy;
};
typedef struct {
N_NIMCALL_PTR(void, ClP_0) (NU8* val, NI valLen_0, void* ClE_0);
void* ClE_0;
} tyProc__AmYyP09cVAnPVL9bYlOQH9chg;
typedef struct {
N_NIMCALL_PTR(tyObject_Result__766uXh31f8wK3EK1GTqTxg, ClP_0) (tyProc__AmYyP09cVAnPVL9bYlOQH9chg onData, void* ClE_0);
void* ClE_0;
} tyProc__kN7yrDxHs3iE9atYJGDxF1Q;
struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
NI refcount;
TNimType* typ;
};
struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
void* bottom;
};
struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
NI len;
NI cap;
tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
};
typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SPr7N6UKfuF549bNPiUvSRw[256];
typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
};
typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
tyArray__0aOLqZchNi8nWtMTi8ND8w link;
NI key;
NI upperBound;
NI level;
};
struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
NI Field1;
};
typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
NI len;
tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
};
struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
NI minLargeObj;
NI maxLargeObj;
tyArray__SPr7N6UKfuF549bNPiUvSRw freeSmallChunks;
NU32 flBitmap;
tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
NI currMem;
NI maxMem;
NI freeMem;
NI occ;
NI lastSize;
tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
NIM_BOOL locked;
NIM_BOOL blockChunkSizeIncrease;
NI nextChunkSize;
tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
};
struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
NI stackScans;
NI cycleCollections;
NI maxThreshold;
NI maxStackSize;
NI maxStackCells;
NI cycleTableSize;
NI64 maxPause;
};
struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
NI counter;
NI max;
tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
};
struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
NI cycleThreshold;
NI zctThreshold;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
NI recGcLock;
tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
NI gcThreadId;
};
typedef N_CLOSURE_PTR(tyObject_Result__766uXh31f8wK3EK1GTqTxg, TM__SRd76hP9cMfCzdUO857UhQQ_3) (tyProc__AmYyP09cVAnPVL9bYlOQH9chg onData);

struct tySequence__6H5Oh5UUvVCLiakt9aTwtUQ {
  TGenericSeq Sup;
  NU8 data[SEQ_DECL_SIZE];
};

N_LIB_PRIVATE N_NIMCALL(void, testKVStore__EzBZaa239as9bFx8yeHDoTOw)(void);
static N_NIMCALL(void, Marker_tySequence__6H5Oh5UUvVCLiakt9aTwtUQ)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(void, nimGCvisit)(void* d, NI op);
static N_NIMCALL(void, Marker_tyRef__FeYxBCZEdlHsWUmMa2IgOQ)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(void*, newObj)(TNimType* typ, NI size);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, get__4JI6uL8q8tB1ni44ORQufA)(tyObject_Result__766uXh31f8wK3EK1GTqTxg self);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_CLOSURE(void, colonanonymous___KjJw6RiPLZSg9aJsg9bUrfQw)(NU8* data, NI dataLen_0, void* ClE_0);
N_LIB_PRIVATE N_NIMCALL(tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*, at___FKhCG9aXnVoTuyjERVXzd2g)(NU8* a, NI aLen_0);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(NI, pluspercent___dgYAo7RfdUVVpvkfKDym8w_2system)(NI x, NI y);
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr);
static N_INLINE(NI, minuspercent___dgYAo7RfdUVVpvkfKDym8wsystem)(NI x, NI y);
static N_INLINE(void, decRef__AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(NIM_BOOL, ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem)(NI x, NI y);
static N_INLINE(void, rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
N_LIB_PRIVATE N_NOINLINE(void, addZCT__Y66tOYFjgwJ0k4aLz4bc0Q)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);

extern TNimType NTI__ytyiCJqK439aF9cIibuRVpAg_;
N_LIB_PRIVATE TNimType NTI__e4OxAaaQRhlF79aYXYVJx9aw_;
extern TNimType NTI__xHTZrq9aYs6boc9bCba0JbpQ_;
extern TNimType NTI__k3HXouOuhqAKq0dx450lXQ_;
N_LIB_PRIVATE TNimType NTI__6H5Oh5UUvVCLiakt9aTwtUQ_;
N_LIB_PRIVATE TNimType NTI__FeYxBCZEdlHsWUmMa2IgOQ_;

extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__IcYaEuuWivYAS86vFMTS3Q;

static N_NIMCALL(void, Marker_tySequence__6H5Oh5UUvVCLiakt9aTwtUQ)(void* p, NI op) {
	tySequence__6H5Oh5UUvVCLiakt9aTwtUQ* a;
	NI T1_;
	a = (tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*)p;
	T1_ = (NI)0;
}
static N_NIMCALL(void, Marker_tyRef__FeYxBCZEdlHsWUmMa2IgOQ)(void* p, NI op) {
	tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw* a;
	a = (tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*)p;
	nimGCvisit((void*)(*a).v1, op);
}
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {
	void* T1_;
	T1_ = (void*)0;
	T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
	nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
static N_INLINE(void, nimFrame)(TFrame* s) {
	{
		if (!(framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw == NIM_NIL)) goto LA3_;
		(*s).calldepth = ((NI16) 0);
	}
	goto LA1_;
	LA3_: ;
	{
		(*s).calldepth = (NI16)((*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).calldepth + ((NI16) 1));
	}
	LA1_: ;
	(*s).prev = framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
	framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = s;
	{
		if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
		callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw();
	}
	LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
	framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = (*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).prev;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, get__4JI6uL8q8tB1ni44ORQufA)(tyObject_Result__766uXh31f8wK3EK1GTqTxg self) {
	NIM_BOOL result;
	nimfr_("get", "/home/runner/work/Nim/Nim/temp.nim");
	result = (NIM_BOOL)0;
	popFrame();
	return result;
}
static N_INLINE(NI, pluspercent___dgYAo7RfdUVVpvkfKDym8w_2system)(NI x, NI y) {
	NI result;
	nimfr_("+%", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/arithme"
"tics.nim");
	result = (NI)0;
	result = ((NI) ((NU)((NU64)(((NU) (x))) + (NU64)(((NU) (y))))));
	popFrame();
	return result;
}
static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	nimfr_("incRef", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	(*c).refcount = pluspercent___dgYAo7RfdUVVpvkfKDym8w_2system((*c).refcount, ((NI) 8));
	popFrame();
}
static N_INLINE(NI, minuspercent___dgYAo7RfdUVVpvkfKDym8wsystem)(NI x, NI y) {
	NI result;
	nimfr_("-%", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/arithme"
"tics.nim");
	result = (NI)0;
	result = ((NI) ((NU)((NU64)(((NU) (x))) - (NU64)(((NU) (y))))));
	popFrame();
	return result;
}
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr) {
	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
	NI T1_;
	nimfr_("usrToCell", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
	T1_ = (NI)0;
	T1_ = minuspercent___dgYAo7RfdUVVpvkfKDym8wsystem(((NI) (ptrdiff_t) (usr)), ((NI) 16));
	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
	popFrame();
	return result;
}
static N_INLINE(NIM_BOOL, ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem)(NI x, NI y) {
	NIM_BOOL result;
	nimfr_("<%", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/compari"
"sons.nim");
	result = (NIM_BOOL)0;
	result = ((NU64)(((NU) (x))) < (NU64)(((NU) (y))));
	popFrame();
	return result;
}
static N_INLINE(void, rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	nimfr_("rtlAddZCT", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	addZCT__Y66tOYFjgwJ0k4aLz4bc0Q((&gch__IcYaEuuWivYAS86vFMTS3Q.zct), c);
	popFrame();
}
static N_INLINE(void, decRef__AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
	nimfr_("decRef", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	(*c).refcount = minuspercent___dgYAo7RfdUVVpvkfKDym8wsystem((*c).refcount, ((NI) 8));
	{
		NIM_BOOL T3_;
		T3_ = (NIM_BOOL)0;
		T3_ = ltpercent___hPljn3JCDQ00ua1R07X9bxQsystem((*c).refcount, ((NI) 8));
		if (!T3_) goto LA4_;
		rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_3system(c);
	}
	LA4_: ;
	popFrame();
}
static N_INLINE(void, asgnRef)(void** dest, void* src) {
	nimfr_("asgnRef", "/home/runner/.choosenim/toolchains/nim-1.4.0/lib/system/gc.nim");
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T5_;
		if (!!((src == NIM_NIL))) goto LA3_;
		T5_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T5_ = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem(src);
		incRef__AT1eRuflKWyTTBdLjEDZbgsystem(T5_);
	}
	LA3_: ;
	{
		tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T10_;
		if (!!(((*dest) == NIM_NIL))) goto LA8_;
		T10_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
		T10_ = usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem((*dest));
		decRef__AT1eRuflKWyTTBdLjEDZbg_2system(T10_);
	}
	LA8_: ;
	(*dest) = src;
	popFrame();
}
N_LIB_PRIVATE N_CLOSURE(void, colonanonymous___KjJw6RiPLZSg9aJsg9bUrfQw)(NU8* data, NI dataLen_0, void* ClE_0) {
	tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw* colonenvP_;
	nimfr_(":anonymous", "/home/runner/work/Nim/Nim/temp.nim");
	colonenvP_ = (tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*) ClE_0;
	asgnRef((void**) (&(*colonenvP_).v1), at___FKhCG9aXnVoTuyjERVXzd2g(data, dataLen_0));
	popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, testKVStore__EzBZaa239as9bFx8yeHDoTOw)(void) {
	tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw* colonenv_;
	tyProc__kN7yrDxHs3iE9atYJGDxF1Q p;
	tyProc__AmYyP09cVAnPVL9bYlOQH9chg T1_;
	tyObject_Result__766uXh31f8wK3EK1GTqTxg T2_;
	NIM_BOOL T3_;
	nimfr_("testKVStore", "/home/runner/work/Nim/Nim/temp.nim");
	colonenv_ = (tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*)0;
	colonenv_ = (tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*) newObj((&NTI__FeYxBCZEdlHsWUmMa2IgOQ_), sizeof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw));
	(*colonenv_).Sup.m_type = (&NTI__e4OxAaaQRhlF79aYXYVJx9aw_);
	(*colonenv_).v1 = (tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*)0;
	nimZeroMem((void*)(&p), sizeof(tyProc__kN7yrDxHs3iE9atYJGDxF1Q));
	nimZeroMem((void*)(&T1_), sizeof(tyProc__AmYyP09cVAnPVL9bYlOQH9chg));
	T1_.ClP_0 = colonanonymous___KjJw6RiPLZSg9aJsg9bUrfQw; T1_.ClE_0 = colonenv_;
	T2_ = p.ClE_0? p.ClP_0(T1_, p.ClE_0):((TM__SRd76hP9cMfCzdUO857UhQQ_3)(p.ClP_0))(T1_);
	T3_ = (NIM_BOOL)0;
	T3_ = get__4JI6uL8q8tB1ni44ORQufA(T2_);
	(void)(T3_);
	popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
	nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
	void (*volatile inner)(void);
	inner = PreMainInner;
	systemDatInit000();
	initStackBottomWith((void *)&inner);
	systemInit000();
	tempDatInit000();
	(*inner)();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
	NimMainModule();
}
N_CDECL(void, NimMain)(void) {
	void (*volatile inner)(void);
	PreMain();
	inner = NimMainInner;
	initStackBottomWith((void *)&inner);
	(*inner)();
}
int main(int argc, char** args, char** env) {
	cmdLine = args;
	cmdCount = argc;
	gEnv = env;
	NimMain();
	return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
	nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
	testKVStore__EzBZaa239as9bFx8yeHDoTOw();
	popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void) {

static TNimNode* TM__SRd76hP9cMfCzdUO857UhQQ_2_2[2];
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[3];

NTI__e4OxAaaQRhlF79aYXYVJx9aw_.size = sizeof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw);
NTI__e4OxAaaQRhlF79aYXYVJx9aw_.align = NIM_ALIGNOF(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw);
NTI__e4OxAaaQRhlF79aYXYVJx9aw_.kind = 17;
NTI__e4OxAaaQRhlF79aYXYVJx9aw_.base = (&NTI__ytyiCJqK439aF9cIibuRVpAg_);
TM__SRd76hP9cMfCzdUO857UhQQ_2_2[0] = &TM__SRd76hP9cMfCzdUO857UhQQ_0[1];
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].offset = offsetof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw, colonstate_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].typ = (&NTI__xHTZrq9aYs6boc9bCba0JbpQ_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].name = ":state";
TM__SRd76hP9cMfCzdUO857UhQQ_2_2[1] = &TM__SRd76hP9cMfCzdUO857UhQQ_0[2];
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.size = sizeof(tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*);
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.align = NIM_ALIGNOF(tySequence__6H5Oh5UUvVCLiakt9aTwtUQ*);
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.kind = 24;
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.base = (&NTI__k3HXouOuhqAKq0dx450lXQ_);
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.flags = 2;
NTI__6H5Oh5UUvVCLiakt9aTwtUQ_.marker = Marker_tySequence__6H5Oh5UUvVCLiakt9aTwtUQ;
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].offset = offsetof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw, v1);
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].typ = (&NTI__6H5Oh5UUvVCLiakt9aTwtUQ_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].name = "v1";
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].len = 2; TM__SRd76hP9cMfCzdUO857UhQQ_0[0].kind = 2; TM__SRd76hP9cMfCzdUO857UhQQ_0[0].sons = &TM__SRd76hP9cMfCzdUO857UhQQ_2_2[0];
NTI__e4OxAaaQRhlF79aYXYVJx9aw_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[0];
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.size = sizeof(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*);
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.align = NIM_ALIGNOF(tyObject_Env_tempdotnim_testKVStore___e4OxAaaQRhlF79aYXYVJx9aw*);
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.kind = 22;
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.base = (&NTI__e4OxAaaQRhlF79aYXYVJx9aw_);
NTI__FeYxBCZEdlHsWUmMa2IgOQ_.marker = Marker_tyRef__FeYxBCZEdlHsWUmMa2IgOQ;
}

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("Result"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newIdentNode("E"),
          newEmptyNode(),
          newEmptyNode()
        )
      ),
      nnkObjectTy.newTree(
        newEmptyNode(),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("DataProc"),
      newEmptyNode(),
      nnkProcTy.newTree(
        nnkFormalParams.newTree(
          newEmptyNode(),
          nnkIdentDefs.newTree(
            newIdentNode("val"),
            nnkBracketExpr.newTree(
              newIdentNode("openArray"),
              newIdentNode("byte")
            ),
            newEmptyNode()
          )
        ),
        newEmptyNode()
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("GetProc"),
      newEmptyNode(),
      nnkProcTy.newTree(
        nnkFormalParams.newTree(
          nnkBracketExpr.newTree(
            newIdentNode("Result"),
            newIdentNode("bool"),
            newIdentNode("cstring")
          ),
          nnkIdentDefs.newTree(
            newIdentNode("onData"),
            newIdentNode("DataProc"),
            newEmptyNode()
          )
        ),
        newEmptyNode()
      )
    )
  ),
  nnkFuncDef.newTree(
    newIdentNode("get"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("self"),
        nnkBracketExpr.newTree(
          newIdentNode("Result"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkTemplateDef.newTree(
    nnkAccQuoted.newTree(
      newIdentNode("[]")
    ),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("self"),
        nnkBracketExpr.newTree(
          newIdentNode("Result"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkCall.newTree(
        nnkDotExpr.newTree(
          newIdentNode("self"),
          newIdentNode("get")
        )
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("testKVStore"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkVarSection.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("v"),
          nnkBracketExpr.newTree(
            newIdentNode("seq"),
            newIdentNode("byte")
          ),
          newEmptyNode()
        )
      ),
      nnkVarSection.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("p"),
          newIdentNode("GetProc"),
          newEmptyNode()
        )
      ),
      nnkDiscardStmt.newTree(
        nnkBracketExpr.newTree(
          nnkCall.newTree(
            newIdentNode("p"),
            nnkLambda.newTree(
              newEmptyNode(),
              newEmptyNode(),
              newEmptyNode(),
              nnkFormalParams.newTree(
                newEmptyNode(),
                nnkIdentDefs.newTree(
                  newIdentNode("data"),
                  nnkBracketExpr.newTree(
                    newIdentNode("openArray"),
                    newIdentNode("byte")
                  ),
                  newEmptyNode()
                )
              ),
              newEmptyNode(),
              newEmptyNode(),
              nnkStmtList.newTree(
                nnkAsgn.newTree(
                  newIdentNode("v"),
                  nnkPrefix.newTree(
                    newIdentNode("@"),
                    newIdentNode("data")
                  )
                )
              )
            )
          )
        )
      )
    )
  ),
  nnkCall.newTree(
    newIdentNode("testKVStore")
  )
)
Stats
  • GCC 11.4.0
  • LibC 2.35
  • Valgrind 3.18.1
  • NodeJS 17.1
  • Linux 5.15.0
  • Created 2023-08-27T13:37:54Z
  • Comments 2
  • Commands nim c --run -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --warnings:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim

:robot: Bug found in 57 minutes bisecting 8 commits at 0 commits per second.

github-actions[bot] avatar Aug 27 '23 13:08 github-actions[bot]

Now gives "redefinition of :anonymous"

metagn avatar Sep 05 '24 22:09 metagn