Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ICE "param not init" with templates and callbacks #14067

Open
arnetheduck opened this issue Apr 22, 2020 · 4 comments
Open

ICE "param not init" with templates and callbacks #14067

arnetheduck opened this issue Apr 22, 2020 · 4 comments

Comments

@arnetheduck
Copy link
Contributor

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
@zah
Copy link
Member

zah commented Apr 22, 2020

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()

@bung87
Copy link
Collaborator

bung87 commented Aug 27, 2023

!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()

@github-actions
Copy link
Contributor

@bung87 (collaborator)

devel 👎 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 👎 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 👎 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 👎 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 👎 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 👎 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 👎 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 👎 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

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

@metagn
Copy link
Collaborator

metagn commented Sep 5, 2024

Now gives "redefinition of :anonymous"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants