Nim icon indicating copy to clipboard operation
Nim copied to clipboard

Invalid generic type deduction with distinct, static

Open arnetheduck opened this issue 1 year ago • 4 comments

Description

A variation on https://github.com/nim-lang/Nim/issues/23419, where the workaround of adding an empty field cannot be used.

As a bonus on top, this shows how it breaks with a static int generic parameter - an important use case for several of our libraries.

import sequtils

type F[T; I: static int] = distinct int

proc start(v: int): F[void, 22] = discard
proc stop(v: int): F[void, 33] = discard

var a = mapIt([1, 2, 3], start(it))

assert $type(a) == "seq[F[system.void, 22]]", $type(a)

var b = mapIt([1, 2, 3], stop(it))

assert $type(b) == "seq[F[system.void, 33]]", $type(b)

Nim Version

1.6, devel

Current Output

testit.nim(14, 8) `$type(b) == "seq[F[system.void, 33]]"` seq[F[system.void, 22]] [AssertionDefect]

Expected Output

No response

Possible Solution

No response

Additional Information

No response

arnetheduck avatar Mar 27 '24 08:03 arnetheduck

Reduced:


template mapIt*(s: typed, op: untyped): untyped =
  type OutType = typeof((
    block:
      var it{.inject.}: typeof(items(s), typeOfIter);
      op), typeOfProc)
  newSeq[OutType](s.len)

type F[T; I: static int] = distinct int

proc start(v: int): F[void, 22] = discard
proc stop(v: int): F[void, 33] = discard

var a = mapIt([1, 2, 3], start(it))

assert $type(a) == "seq[F[system.void, 22]]", $type(a)

var b = mapIt([1, 2, 3], stop(it))

assert $type(b) == "seq[F[system.void, 33]]", $type(b)

Araq avatar Mar 27 '24 20:03 Araq

Further reduced:


template mapIt*(): untyped =
  type OutType = typeof(stop(9), typeOfProc)
  newSeq[OutType](5)

type F[T; I: static int] = distinct int

proc stop(v: int): F[void, 33] = discard

discard newSeq[F[void, 22]]()

var b = mapIt()

assert $type(b) == "seq[F[system.void, 33]]", $type(b)

It needs the helper type section to fail.

Araq avatar Mar 27 '24 22:03 Araq

!nim c

template mapIt*(): untyped =
  type OutType = typeof(stop(9), typeOfProc)
  newSeq[OutType](5)

type F[T; I: static int] = distinct int
proc stop(v: int): F[void, 33] = discard
discard newSeq[F[void, 22]]()
var b = mapIt()
doAssert $type(b) == "seq[F[system.void, 33]]", $type(b)

juancarlospaco avatar Mar 28 '24 21:03 juancarlospaco

:penguin: Linux bisect by @juancarlospaco (collaborator)
devel :-1: FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints: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 temp
/home/runner/.choosenim/toolchains/nim-#devel/lib/std/assertions.nim failedAssertImpl
/home/runner/.choosenim/toolchains/nim-#devel/lib/std/assertions.nim raiseAssert
/home/runner/.choosenim/toolchains/nim-#devel/lib/system/fatal.nim sysFatal
Error: unhandled exception: /home/runner/work/Nim/Nim/temp.nim(8, 1) `$type(b) == "seq[F[system.void, 33]]"` seq[F[system.void, 22]] [AssertionDefect]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp'
assertions.nim(34)       raiseAssert
Error: unhandled exception: errGenerated [AssertionDefect]

IR

Compiled filesize 93.89 Kb (96,144 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#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) \
 FR_.line = n;
#define nimlf_(n, file) \
 FR_.line = n; FR_.filename = file;
typedef struct tySequence__qwqHTkRvwhrRyENtudHQ7g tySequence__qwqHTkRvwhrRyENtudHQ7g;
typedef struct tySequence__qwqHTkRvwhrRyENtudHQ7g_Content tySequence__qwqHTkRvwhrRyENtudHQ7g_Content;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
NI len; tySequence__qwqHTkRvwhrRyENtudHQ7g_Content* p;
};
struct NimStrPayload {
 NI cap;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
 NI len;
 NimStrPayload* p;
};
struct tySequence__qwqHTkRvwhrRyENtudHQ7g_Content { NI cap; NI data[SEQ_DECL_SIZE]; };
N_LIB_PRIVATE N_NIMCALL(tySequence__qwqHTkRvwhrRyENtudHQ7g, newSeq__temp_u109)(NI len_p0);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u254)(NimStringV2 msg_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u138)(tySequence__qwqHTkRvwhrRyENtudHQ7g dest_p0);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4608)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
static const struct {
NI cap; NIM_CHAR data[104+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_2 = { 104 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(8, 1) `$type(b) == \"seq[F[system.void, 33]]\"` seq[F[system.void, 22]]" };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_3 = {104, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_2};
N_LIB_PRIVATE tySequence__qwqHTkRvwhrRyENtudHQ7g b__temp_u179;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4392;
extern NIM_THREADVAR TFrame* framePtr__system_u2688;
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (&nimInErrorMode__system_u4392);
 return result;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u2688 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s_p0).calldepth = ((NI16)0);
 }
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u2688).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u2688;
 framePtr__system_u2688 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
  callDepthLimitReached__system_u4608();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u2688 = (*framePtr__system_u2688).prev;
}
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) {
#if 0
 void (*volatile inner)(void);
 inner = PreMainInner;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_Init000();
 (*inner)();
#else
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_Init000();
 PreMainInner();
#endif
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
 NimMainModule();
}
N_CDECL(void, NimMain)(void) {
#if 0
 void (*volatile inner)(void);
 PreMain();
 inner = NimMainInner;
 (*inner)();
#else
 PreMain();
 NimMainInner();
#endif
}
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) {
{
 tySequence__qwqHTkRvwhrRyENtudHQ7g colontmpD_;
NIM_BOOL* nimErr_;
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimErr_ = nimErrorFlag();
 colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
 colontmpD_ = newSeq__temp_u109(((NI)0));
 (void)(colontmpD_);
 b__temp_u179 = newSeq__temp_u109(((NI)5));
 {
  if (!NIM_TRUE) goto LA3_;
  failedAssertImpl__stdZassertions_u254(TM__SRd76hP9cMfCzdUO857UhQQ_3);
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }
LA3_: ;
 eqdestroy___temp_u138(colontmpD_);
 eqdestroy___temp_u138(b__temp_u179);
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}

Stats

  • Started 2024-03-28T21:34:45
  • Finished 2024-03-28T21:34:46
  • Duration 1 minutes

AST

nnkStmtList.newTree(
  nnkTemplateDef.newTree(
    nnkPostfix.newTree(
      newIdentNode("*"),
      newIdentNode("mapIt")
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newIdentNode("untyped")
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkTypeSection.newTree(
        nnkTypeDef.newTree(
          newIdentNode("OutType"),
          newEmptyNode(),
          nnkCall.newTree(
            newIdentNode("typeof"),
            nnkCall.newTree(
              newIdentNode("stop"),
              newLit(9)
            ),
            newIdentNode("typeOfProc")
          )
        )
      ),
      nnkCall.newTree(
        nnkBracketExpr.newTree(
          newIdentNode("newSeq"),
          newIdentNode("OutType")
        ),
        newLit(5)
      )
    )
  ),
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("F"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newEmptyNode(),
          newEmptyNode()
        ),
        nnkIdentDefs.newTree(
          newIdentNode("I"),
          nnkCommand.newTree(
            newIdentNode("static"),
            newIdentNode("int")
          ),
          newEmptyNode()
        )
      ),
      nnkDistinctTy.newTree(
        newIdentNode("int")
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("stop"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("F"),
        newIdentNode("void"),
        newLit(33)
      ),
      nnkIdentDefs.newTree(
        newIdentNode("v"),
        newIdentNode("int"),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkDiscardStmt.newTree(
    nnkCall.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("newSeq"),
        nnkBracketExpr.newTree(
          newIdentNode("F"),
          newIdentNode("void"),
          newLit(22)
        )
      )
    )
  ),
  nnkVarSection.newTree(
    nnkIdentDefs.newTree(
      newIdentNode("b"),
      newEmptyNode(),
      nnkCall.newTree(
        newIdentNode("mapIt")
      )
    )
  ),
  nnkCommand.newTree(
    newIdentNode("doAssert"),
    nnkInfix.newTree(
      newIdentNode("=="),
      nnkPrefix.newTree(
        newIdentNode("$"),
        nnkCall.newTree(
          newIdentNode("type"),
          newIdentNode("b")
        )
      ),
      newLit("seq[F[system.void, 33]]")
    ),
    nnkPrefix.newTree(
      newIdentNode("$"),
      nnkCall.newTree(
        newIdentNode("type"),
        newIdentNode("b")
      )
    )
  )
)
stable :-1: FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints: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 temp
/home/runner/.choosenim/toolchains/nim-2.0.2/lib/std/assertions.nim failedAssertImpl
/home/runner/.choosenim/toolchains/nim-2.0.2/lib/std/assertions.nim raiseAssert
/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system/fatal.nim sysFatal
Error: unhandled exception: /home/runner/work/Nim/Nim/temp.nim(8, 1) `$type(b) == "seq[F[system.void, 33]]"` seq[F[system.void, 22]] [AssertionDefect]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp'
assertions.nim(34)       raiseAssert
Error: unhandled exception: options.nim(681, 5) `false` errGenerated [AssertionDefect]

IR

Compiled filesize 91.82 Kb (94,024 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#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) \
 FR_.line = n;
#define nimlf_(n, file) \
 FR_.line = n; FR_.filename = file;
typedef struct tySequence__qwqHTkRvwhrRyENtudHQ7g tySequence__qwqHTkRvwhrRyENtudHQ7g;
typedef struct tySequence__qwqHTkRvwhrRyENtudHQ7g_Content tySequence__qwqHTkRvwhrRyENtudHQ7g_Content;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
NI len; tySequence__qwqHTkRvwhrRyENtudHQ7g_Content* p;
};
struct NimStrPayload {
 NI cap;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
 NI len;
 NimStrPayload* p;
};
struct tySequence__qwqHTkRvwhrRyENtudHQ7g_Content { NI cap; NI data[SEQ_DECL_SIZE]; };
N_LIB_PRIVATE N_NIMCALL(tySequence__qwqHTkRvwhrRyENtudHQ7g, newSeq__temp_u146)(NI len_p0);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u310)(NimStringV2 msg_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u157)(tySequence__qwqHTkRvwhrRyENtudHQ7g dest_p0);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4621)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
static const struct {
NI cap; NIM_CHAR data[104+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_2 = { 104 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(8, 1) `$type(b) == \"seq[F[system.void, 33]]\"` seq[F[system.void, 22]]" };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_3 = {104, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_2};
N_LIB_PRIVATE tySequence__qwqHTkRvwhrRyENtudHQ7g b__temp_u198;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4403;
extern NIM_THREADVAR TFrame* framePtr__system_u4020;
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (&nimInErrorMode__system_u4403);
 return result;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u4020 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s_p0).calldepth = ((NI16)0);
 }
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u4020).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u4020;
 framePtr__system_u4020 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
  callDepthLimitReached__system_u4621();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u4020 = (*framePtr__system_u4020).prev;
}
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) {
#if 0
 void (*volatile inner)(void);
 inner = PreMainInner;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_Init000();
 (*inner)();
#else
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_Init000();
 PreMainInner();
#endif
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
 NimMainModule();
}
N_CDECL(void, NimMain)(void) {
#if 0
 void (*volatile inner)(void);
 PreMain();
 inner = NimMainInner;
 (*inner)();
#else
 PreMain();
 NimMainInner();
#endif
}
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) {
{
 tySequence__qwqHTkRvwhrRyENtudHQ7g colontmpD_;
NIM_BOOL* nimErr_;
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimErr_ = nimErrorFlag();
 colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
 colontmpD_ = newSeq__temp_u146(((NI)0));
 (void)(colontmpD_);
 b__temp_u198 = newSeq__temp_u146(((NI)5));
 {
  if (!NIM_TRUE) goto LA3_;
  failedAssertImpl__stdZassertions_u310(TM__SRd76hP9cMfCzdUO857UhQQ_3);
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }
LA3_: ;
 eqdestroy___temp_u157(colontmpD_);
 eqdestroy___temp_u157(b__temp_u198);
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}

Stats

  • Started 2024-03-28T21:34:47
  • Finished 2024-03-28T21:34:47
  • Duration

AST

nnkStmtList.newTree(
  nnkTemplateDef.newTree(
    nnkPostfix.newTree(
      newIdentNode("*"),
      newIdentNode("mapIt")
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newIdentNode("untyped")
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkTypeSection.newTree(
        nnkTypeDef.newTree(
          newIdentNode("OutType"),
          newEmptyNode(),
          nnkCall.newTree(
            newIdentNode("typeof"),
            nnkCall.newTree(
              newIdentNode("stop"),
              newLit(9)
            ),
            newIdentNode("typeOfProc")
          )
        )
      ),
      nnkCall.newTree(
        nnkBracketExpr.newTree(
          newIdentNode("newSeq"),
          newIdentNode("OutType")
        ),
        newLit(5)
      )
    )
  ),
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("F"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newEmptyNode(),
          newEmptyNode()
        ),
        nnkIdentDefs.newTree(
          newIdentNode("I"),
          nnkCommand.newTree(
            newIdentNode("static"),
            newIdentNode("int")
          ),
          newEmptyNode()
        )
      ),
      nnkDistinctTy.newTree(
        newIdentNode("int")
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("stop"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("F"),
        newIdentNode("void"),
        newLit(33)
      ),
      nnkIdentDefs.newTree(
        newIdentNode("v"),
        newIdentNode("int"),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkDiscardStmt.newTree(
    nnkCall.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("newSeq"),
        nnkBracketExpr.newTree(
          newIdentNode("F"),
          newIdentNode("void"),
          newLit(22)
        )
      )
    )
  ),
  nnkVarSection.newTree(
    nnkIdentDefs.newTree(
      newIdentNode("b"),
      newEmptyNode(),
      nnkCall.newTree(
        newIdentNode("mapIt")
      )
    )
  ),
  nnkCommand.newTree(
    newIdentNode("doAssert"),
    nnkInfix.newTree(
      newIdentNode("=="),
      nnkPrefix.newTree(
        newIdentNode("$"),
        nnkCall.newTree(
          newIdentNode("type"),
          newIdentNode("b")
        )
      ),
      newLit("seq[F[system.void, 33]]")
    ),
    nnkPrefix.newTree(
      newIdentNode("$"),
      nnkCall.newTree(
        newIdentNode("type"),
        newIdentNode("b")
      )
    )
  )
)
2.0.2 :-1: FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints: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 temp
/home/runner/.choosenim/toolchains/nim-2.0.2/lib/std/assertions.nim failedAssertImpl
/home/runner/.choosenim/toolchains/nim-2.0.2/lib/std/assertions.nim raiseAssert
/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system/fatal.nim sysFatal
Error: unhandled exception: /home/runner/work/Nim/Nim/temp.nim(8, 1) `$type(b) == "seq[F[system.void, 33]]"` seq[F[system.void, 22]] [AssertionDefect]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp'
assertions.nim(34)       raiseAssert
Error: unhandled exception: options.nim(681, 5) `false` errGenerated [AssertionDefect]

IR

Compiled filesize 91.82 Kb (94,024 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#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) \
 FR_.line = n;
#define nimlf_(n, file) \
 FR_.line = n; FR_.filename = file;
typedef struct tySequence__qwqHTkRvwhrRyENtudHQ7g tySequence__qwqHTkRvwhrRyENtudHQ7g;
typedef struct tySequence__qwqHTkRvwhrRyENtudHQ7g_Content tySequence__qwqHTkRvwhrRyENtudHQ7g_Content;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
NI len; tySequence__qwqHTkRvwhrRyENtudHQ7g_Content* p;
};
struct NimStrPayload {
 NI cap;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
 NI len;
 NimStrPayload* p;
};
struct tySequence__qwqHTkRvwhrRyENtudHQ7g_Content { NI cap; NI data[SEQ_DECL_SIZE]; };
N_LIB_PRIVATE N_NIMCALL(tySequence__qwqHTkRvwhrRyENtudHQ7g, newSeq__temp_u146)(NI len_p0);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u310)(NimStringV2 msg_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u157)(tySequence__qwqHTkRvwhrRyENtudHQ7g dest_p0);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4621)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
static const struct {
NI cap; NIM_CHAR data[104+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_2 = { 104 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(8, 1) `$type(b) == \"seq[F[system.void, 33]]\"` seq[F[system.void, 22]]" };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_3 = {104, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_2};
N_LIB_PRIVATE tySequence__qwqHTkRvwhrRyENtudHQ7g b__temp_u198;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4403;
extern NIM_THREADVAR TFrame* framePtr__system_u4020;
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (&nimInErrorMode__system_u4403);
 return result;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u4020 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s_p0).calldepth = ((NI16)0);
 }
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u4020).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u4020;
 framePtr__system_u4020 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
  callDepthLimitReached__system_u4621();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u4020 = (*framePtr__system_u4020).prev;
}
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) {
#if 0
 void (*volatile inner)(void);
 inner = PreMainInner;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_Init000();
 (*inner)();
#else
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_Init000();
 PreMainInner();
#endif
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
 NimMainModule();
}
N_CDECL(void, NimMain)(void) {
#if 0
 void (*volatile inner)(void);
 PreMain();
 inner = NimMainInner;
 (*inner)();
#else
 PreMain();
 NimMainInner();
#endif
}
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) {
{
 tySequence__qwqHTkRvwhrRyENtudHQ7g colontmpD_;
NIM_BOOL* nimErr_;
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimErr_ = nimErrorFlag();
 colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
 colontmpD_ = newSeq__temp_u146(((NI)0));
 (void)(colontmpD_);
 b__temp_u198 = newSeq__temp_u146(((NI)5));
 {
  if (!NIM_TRUE) goto LA3_;
  failedAssertImpl__stdZassertions_u310(TM__SRd76hP9cMfCzdUO857UhQQ_3);
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }
LA3_: ;
 eqdestroy___temp_u157(colontmpD_);
 eqdestroy___temp_u157(b__temp_u198);
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}

Stats

  • Started 2024-03-28T21:34:48
  • Finished 2024-03-28T21:34:48
  • Duration

AST

nnkStmtList.newTree(
  nnkTemplateDef.newTree(
    nnkPostfix.newTree(
      newIdentNode("*"),
      newIdentNode("mapIt")
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newIdentNode("untyped")
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkTypeSection.newTree(
        nnkTypeDef.newTree(
          newIdentNode("OutType"),
          newEmptyNode(),
          nnkCall.newTree(
            newIdentNode("typeof"),
            nnkCall.newTree(
              newIdentNode("stop"),
              newLit(9)
            ),
            newIdentNode("typeOfProc")
          )
        )
      ),
      nnkCall.newTree(
        nnkBracketExpr.newTree(
          newIdentNode("newSeq"),
          newIdentNode("OutType")
        ),
        newLit(5)
      )
    )
  ),
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("F"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newEmptyNode(),
          newEmptyNode()
        ),
        nnkIdentDefs.newTree(
          newIdentNode("I"),
          nnkCommand.newTree(
            newIdentNode("static"),
            newIdentNode("int")
          ),
          newEmptyNode()
        )
      ),
      nnkDistinctTy.newTree(
        newIdentNode("int")
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("stop"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("F"),
        newIdentNode("void"),
        newLit(33)
      ),
      nnkIdentDefs.newTree(
        newIdentNode("v"),
        newIdentNode("int"),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkDiscardStmt.newTree(
    nnkCall.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("newSeq"),
        nnkBracketExpr.newTree(
          newIdentNode("F"),
          newIdentNode("void"),
          newLit(22)
        )
      )
    )
  ),
  nnkVarSection.newTree(
    nnkIdentDefs.newTree(
      newIdentNode("b"),
      newEmptyNode(),
      nnkCall.newTree(
        newIdentNode("mapIt")
      )
    )
  ),
  nnkCommand.newTree(
    newIdentNode("doAssert"),
    nnkInfix.newTree(
      newIdentNode("=="),
      nnkPrefix.newTree(
        newIdentNode("$"),
        nnkCall.newTree(
          newIdentNode("type"),
          newIdentNode("b")
        )
      ),
      newLit("seq[F[system.void, 33]]")
    ),
    nnkPrefix.newTree(
      newIdentNode("$"),
      nnkCall.newTree(
        newIdentNode("type"),
        newIdentNode("b")
      )
    )
  )
)
1.6.14 :-1: FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints: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 temp
/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system/assertions.nim failedAssertImpl
/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system/assertions.nim raiseAssert
/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system/fatal.nim sysFatal
Error: unhandled exception: /home/runner/work/Nim/Nim/temp.nim(8, 10) `$type(b) == "seq[F[system.void, 33]]"` seq[F[system.void, 22]] [AssertionDefect]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp '
fatal.nim(54)            sysFatal
Error: unhandled exception: options.nim(645, 14) `false` errGenerated [AssertionDefect]

IR

Compiled filesize 100.40 Kb (102,808 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#  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 tySequence__qwqHTkRvwhrRyENtudHQ7g tySequence__qwqHTkRvwhrRyENtudHQ7g;
typedef struct TGenericSeq TGenericSeq;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q;
typedef struct tyObject_CellSeq__8bh1syZiHlRn5s9cNSwuRKg tyObject_CellSeq__8bh1syZiHlRn5s9cNSwuRKg;
typedef struct tyObject_GcHeap__TNN37TDOIST9cBHBYNA9bZrQ tyObject_GcHeap__TNN37TDOIST9cBHBYNA9bZrQ;
typedef struct tyObject_GcStack__kyxCHsHBs9aixKn7J6EMoKg tyObject_GcStack__kyxCHsHBs9aixKn7J6EMoKg;
typedef struct tyObject_MemRegion__kTihTuGP022tKEZ5qSTY4g tyObject_MemRegion__kTihTuGP022tKEZ5qSTY4g;
typedef struct tyObject_SmallChunk__sj9b0POpZpf2pwHAngQ4iuA tyObject_SmallChunk__sj9b0POpZpf2pwHAngQ4iuA;
typedef struct tyObject_BigChunk__n43IpccPD6dfYiSGXsXF0A tyObject_BigChunk__n43IpccPD6dfYiSGXsXF0A;
typedef struct tyObject_LLChunk__EAcyYaYsVdVpPDOJNXsVvA tyObject_LLChunk__EAcyYaYsVdVpPDOJNXsVvA;
typedef struct tyObject_IntSet__BjiVv2xFwTJmbeWeHvjYQw tyObject_IntSet__BjiVv2xFwTJmbeWeHvjYQw;
typedef struct tyObject_Trunk__N5u9b3R0O3g59awa8B9bs6qyg tyObject_Trunk__N5u9b3R0O3g59awa8B9bs6qyg;
typedef struct tyObject_AvlNode__OVssjMzF9b6dF0OdhUI9bjqg tyObject_AvlNode__OVssjMzF9b6dF0OdhUI9bjqg;
typedef struct tyObject_HeapLinks__vrDr51n9cXj8aHnS73vhJqw tyObject_HeapLinks__vrDr51n9cXj8aHnS73vhJqw;
typedef struct tyTuple__6nVTvmjorcAWafHl9cWGFuA tyTuple__6nVTvmjorcAWafHl9cWGFuA;
typedef struct tyObject_GcStat__yGmLruPXMhFV80y1jxAtjg tyObject_GcStat__yGmLruPXMhFV80y1jxAtjg;
typedef struct tyObject_CellSet__9co1sTf9aTPixSgG0AQ20mAA tyObject_CellSet__9co1sTf9aTPixSgG0AQ20mAA;
typedef struct tyObject_PageDesc__i0uwYov8PyHfnx0dx0lOMQ tyObject_PageDesc__i0uwYov8PyHfnx0dx0lOMQ;
typedef struct NimStringDesc NimStringDesc;
struct TGenericSeq {
NI len;
NI reserved;
};
typedef NU8 tyEnum_TNimKind__3rC59cFdCULJbp2tHLSZMXQ;
typedef NU8 tySet_tyEnum_TNimTypeFlag__z9aX9aBGjlpDIC58y9bKcsmzA;
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__3rC59cFdCULJbp2tHLSZMXQ kind;
tySet_tyEnum_TNimTypeFlag__z9aX9aBGjlpDIC58y9bKcsmzA flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU8 tyEnum_TNimNodeKind__XtzEyxd2A8uwMJcYYak9c7w;
struct TNimNode {
tyEnum_TNimNodeKind__XtzEyxd2A8uwMJcYYak9c7w kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
typedef N_NIMCALL_PTR(void, tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ) (void);
struct tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q {
NI refcount;
TNimType* typ;
};
struct tyObject_GcStack__kyxCHsHBs9aixKn7J6EMoKg {
void* bottom;
};
struct tyObject_CellSeq__8bh1syZiHlRn5s9cNSwuRKg {
NI len;
NI cap;
tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q** d;
};
typedef tyObject_SmallChunk__sj9b0POpZpf2pwHAngQ4iuA* tyArray__VYTQW7wK07xvH5Z4opKI1w[256];
typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
typedef tyObject_BigChunk__n43IpccPD6dfYiSGXsXF0A* tyArray__YkUf1j9c9b6JzhUdDj7S3KQA[32];
typedef tyArray__YkUf1j9c9b6JzhUdDj7S3KQA tyArray__MQbMf9bcijUF9a14VvUbfzqg[24];
typedef tyObject_Trunk__N5u9b3R0O3g59awa8B9bs6qyg* tyArray__sCQfOQF0EdBvLpqvNeg1Mg[256];
struct tyObject_IntSet__BjiVv2xFwTJmbeWeHvjYQw {
tyArray__sCQfOQF0EdBvLpqvNeg1Mg data;
};
typedef tyObject_AvlNode__OVssjMzF9b6dF0OdhUI9bjqg* tyArray__Wt2k1c1BbnQ6Nj3SrdvfCw[2];
struct tyObject_AvlNode__OVssjMzF9b6dF0OdhUI9bjqg {
tyArray__Wt2k1c1BbnQ6Nj3SrdvfCw link;
NI key;
NI upperBound;
NI level;
};
struct tyTuple__6nVTvmjorcAWafHl9cWGFuA {
tyObject_BigChunk__n43IpccPD6dfYiSGXsXF0A* Field0;
NI Field1;
};
typedef tyTuple__6nVTvmjorcAWafHl9cWGFuA tyArray__yUjlcLC9c9aIvr4MhTCDBnnA[30];
struct tyObject_HeapLinks__vrDr51n9cXj8aHnS73vhJqw {
NI len;
tyArray__yUjlcLC9c9aIvr4MhTCDBnnA chunks;
tyObject_HeapLinks__vrDr51n9cXj8aHnS73vhJqw* next;
};
struct tyObject_MemRegion__kTihTuGP022tKEZ5qSTY4g {
NI minLargeObj;
NI maxLargeObj;
tyArray__VYTQW7wK07xvH5Z4opKI1w freeSmallChunks;
NU32 flBitmap;
tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
tyArray__MQbMf9bcijUF9a14VvUbfzqg matrix;
tyObject_LLChunk__EAcyYaYsVdVpPDOJNXsVvA* llmem;
NI currMem;
NI maxMem;
NI freeMem;
NI occ;
NI lastSize;
tyObject_IntSet__BjiVv2xFwTJmbeWeHvjYQw chunkStarts;
tyObject_AvlNode__OVssjMzF9b6dF0OdhUI9bjqg* root;
tyObject_AvlNode__OVssjMzF9b6dF0OdhUI9bjqg* deleted;
tyObject_AvlNode__OVssjMzF9b6dF0OdhUI9bjqg* last;
tyObject_AvlNode__OVssjMzF9b6dF0OdhUI9bjqg* freeAvlNodes;
NIM_BOOL locked;
NIM_BOOL blockChunkSizeIncrease;
NI nextChunkSize;
tyObject_AvlNode__OVssjMzF9b6dF0OdhUI9bjqg bottomData;
tyObject_HeapLinks__vrDr51n9cXj8aHnS73vhJqw heapLinks;
};
struct tyObject_GcStat__yGmLruPXMhFV80y1jxAtjg {
NI stackScans;
NI cycleCollections;
NI maxThreshold;
NI maxStackSize;
NI maxStackCells;
NI cycleTableSize;
NI64 maxPause;
};
struct tyObject_CellSet__9co1sTf9aTPixSgG0AQ20mAA {
NI counter;
NI max;
tyObject_PageDesc__i0uwYov8PyHfnx0dx0lOMQ* head;
tyObject_PageDesc__i0uwYov8PyHfnx0dx0lOMQ** data;
};
struct tyObject_GcHeap__TNN37TDOIST9cBHBYNA9bZrQ {
tyObject_GcStack__kyxCHsHBs9aixKn7J6EMoKg stack;
NI cycleThreshold;
NI zctThreshold;
tyObject_CellSeq__8bh1syZiHlRn5s9cNSwuRKg zct;
tyObject_CellSeq__8bh1syZiHlRn5s9cNSwuRKg decStack;
tyObject_CellSeq__8bh1syZiHlRn5s9cNSwuRKg tempStack;
NI recGcLock;
tyObject_MemRegion__kTihTuGP022tKEZ5qSTY4g region;
tyObject_GcStat__yGmLruPXMhFV80y1jxAtjg stat;
tyObject_CellSet__9co1sTf9aTPixSgG0AQ20mAA marked;
tyObject_CellSeq__8bh1syZiHlRn5s9cNSwuRKg additionalRoots;
NI gcThreadId;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
TGenericSeq Sup;
NI data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(tySequence__qwqHTkRvwhrRyENtudHQ7g*, newSeq__temp_17)(NI len);
static N_NIMCALL(void, Marker_tySequence__qwqHTkRvwhrRyENtudHQ7g)(void* p, NI op);
N_LIB_PRIVATE N_NIMCALL(void, nimGCvisit)(void* d, NI op);
static N_NIMCALL(void, TM__SRd76hP9cMfCzdUO857UhQQ_2)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimRegisterGlobalMarker)(tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ markerProc);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incRef__system_5340)(tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q* c);
static N_INLINE(NI, pluspercent___system_696)(NI x, NI y);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_2997)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q*, usrToCell__system_5302)(void* usr);
static N_INLINE(NI, minuspercent___system_716)(NI x, NI y);
static N_INLINE(void, decRef__system_5347)(tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q* c);
static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y);
static N_INLINE(void, rtlAddZCT__system_5345)(tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q* c);
N_LIB_PRIVATE N_NOINLINE(void, addZCT__system_5296)(tyObject_CellSeq__8bh1syZiHlRn5s9cNSwuRKg* s, tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q* c);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__systemZassertions_56)(NimStringDesc* msg);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TNimType NTIint__rR5Bzr1D5krxoo1NcNyeMA_;
N_LIB_PRIVATE TNimType NTIseqLfLsystemOvoid_5050TT__qwqHTkRvwhrRyENtudHQ7g_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_3, "/home/runner/work/Nim/Nim/temp.nim(8, 10) `$type(b) == \"seq[F[system.void, 33]]\"` seq[F[system.void, 22]]", 105);
N_LIB_PRIVATE tySequence__qwqHTkRvwhrRyENtudHQ7g* b__temp_48;
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
extern tyObject_GcHeap__TNN37TDOIST9cBHBYNA9bZrQ gch__system_5249;
static N_NIMCALL(void, Marker_tySequence__qwqHTkRvwhrRyENtudHQ7g)(void* p, NI op) {
 tySequence__qwqHTkRvwhrRyENtudHQ7g* a;
 NI T1_;
 a = (tySequence__qwqHTkRvwhrRyENtudHQ7g*)p;
 T1_ = (NI)0;
}
static N_NIMCALL(void, TM__SRd76hP9cMfCzdUO857UhQQ_2)(void) {
 nimGCvisit((void*)b__temp_48, 0);
}
static N_INLINE(void, nimFrame)(TFrame* s) {
 {
  if (!(framePtr__system_2564 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s).calldepth = ((NI16) 0);
 }
 goto LA1_;
 LA3_: ;
 {
  (*s).calldepth = (NI16)((*framePtr__system_2564).calldepth + ((NI16) 1));
 }
 LA1_: ;
 (*s).prev = framePtr__system_2564;
 framePtr__system_2564 = s;
 {
  if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
  callDepthLimitReached__system_2997();
 }
 LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_2564 = (*framePtr__system_2564).prev;
}
static N_INLINE(NI, pluspercent___system_696)(NI x, NI y) {
 NI result;
 nimfr_("+%", "/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system/arithmetics.nim");
 result = (NI)0;
 result = ((NI) ((NU)((NU64)(((NU) (x))) + (NU64)(((NU) (y))))));
 popFrame();
 return result;
}
static N_INLINE(void, incRef__system_5340)(tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q* c) {
 nimfr_("incRef", "/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system/gc.nim");
 (*c).refcount = pluspercent___system_696((*c).refcount, ((NI) 8));
 popFrame();
}
static N_INLINE(NI, minuspercent___system_716)(NI x, NI y) {
 NI result;
 nimfr_("-%", "/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system/arithmetics.nim");
 result = (NI)0;
 result = ((NI) ((NU)((NU64)(((NU) (x))) - (NU64)(((NU) (y))))));
 popFrame();
 return result;
}
static N_INLINE(tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q*, usrToCell__system_5302)(void* usr) {
 tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q* result;
 NI T1_;
 nimfr_("usrToCell", "/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system/gc.nim");
 result = (tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q*)0;
 T1_ = (NI)0;
 T1_ = minuspercent___system_716(((NI) (ptrdiff_t) (usr)), ((NI) 16));
 result = ((tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q*) (T1_));
 popFrame();
 return result;
}
static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y) {
 NIM_BOOL result;
 nimfr_("<%", "/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system/comparisons.nim");
 result = (NIM_BOOL)0;
 result = ((NU64)(((NU) (x))) < (NU64)(((NU) (y))));
 popFrame();
 return result;
}
static N_INLINE(void, rtlAddZCT__system_5345)(tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q* c) {
 nimfr_("rtlAddZCT", "/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system/gc.nim");
 addZCT__system_5296((&gch__system_5249.zct), c);
 popFrame();
}
static N_INLINE(void, decRef__system_5347)(tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q* c) {
 nimfr_("decRef", "/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system/gc.nim");
 (*c).refcount = minuspercent___system_716((*c).refcount, ((NI) 8));
 {
  NIM_BOOL T3_;
  T3_ = (NIM_BOOL)0;
  T3_ = ltpercent___system_1005((*c).refcount, ((NI) 8));
  if (!T3_) goto LA4_;
  rtlAddZCT__system_5345(c);
 }
 LA4_: ;
 popFrame();
}
static N_INLINE(void, asgnRef)(void** dest, void* src) {
 nimfr_("asgnRef", "/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system/gc.nim");
 {
  tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q* T5_;
  if (!!((src == NIM_NIL))) goto LA3_;
  T5_ = (tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q*)0;
  T5_ = usrToCell__system_5302(src);
  incRef__system_5340(T5_);
 }
 LA3_: ;
 {
  tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q* T10_;
  if (!!(((*dest) == NIM_NIL))) goto LA8_;
  T10_ = (tyObject_Cell__vT0lLseQRZ19aq7BbaJzO4Q*)0;
  T10_ = usrToCell__system_5302((*dest));
  decRef__system_5347(T10_);
 }
 LA8_: ;
 (*dest) = src;
 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;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_DatInit000();
 initStackBottomWith((void *)&inner);
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_Init000();
 atmtempdotnim_DatInit000();
 (*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) {
{
 TFrame FR_; FR_.len = 0;
 nimRegisterGlobalMarker(TM__SRd76hP9cMfCzdUO857UhQQ_2);
}
{
 tySequence__qwqHTkRvwhrRyENtudHQ7g* T1_;
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 T1_ = NIM_NIL;
 T1_ = newSeq__temp_17(((NI) 0));
 (void)(T1_);
 asgnRef((void**) (&b__temp_48), newSeq__temp_17(((NI) 5)));
 {
  if (!NIM_TRUE) goto LA4_;
  failedAssertImpl__systemZassertions_56(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_3));
 }
 LA4_: ;
 popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void) {
NTIseqLfLsystemOvoid_5050TT__qwqHTkRvwhrRyENtudHQ7g_.size = sizeof(tySequence__qwqHTkRvwhrRyENtudHQ7g*);
NTIseqLfLsystemOvoid_5050TT__qwqHTkRvwhrRyENtudHQ7g_.align = NIM_ALIGNOF(tySequence__qwqHTkRvwhrRyENtudHQ7g*);
NTIseqLfLsystemOvoid_5050TT__qwqHTkRvwhrRyENtudHQ7g_.kind = 24;
NTIseqLfLsystemOvoid_5050TT__qwqHTkRvwhrRyENtudHQ7g_.base = (&NTIint__rR5Bzr1D5krxoo1NcNyeMA_);
NTIseqLfLsystemOvoid_5050TT__qwqHTkRvwhrRyENtudHQ7g_.flags = 2;
NTIseqLfLsystemOvoid_5050TT__qwqHTkRvwhrRyENtudHQ7g_.marker = Marker_tySequence__qwqHTkRvwhrRyENtudHQ7g;
}

Stats

  • Started 2024-03-28T21:34:51
  • Finished 2024-03-28T21:34:51
  • Duration

AST

nnkStmtList.newTree(
  nnkTemplateDef.newTree(
    nnkPostfix.newTree(
      newIdentNode("*"),
      newIdentNode("mapIt")
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newIdentNode("untyped")
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkTypeSection.newTree(
        nnkTypeDef.newTree(
          newIdentNode("OutType"),
          newEmptyNode(),
          nnkCall.newTree(
            newIdentNode("typeof"),
            nnkCall.newTree(
              newIdentNode("stop"),
              newLit(9)
            ),
            newIdentNode("typeOfProc")
          )
        )
      ),
      nnkCall.newTree(
        nnkBracketExpr.newTree(
          newIdentNode("newSeq"),
          newIdentNode("OutType")
        ),
        newLit(5)
      )
    )
  ),
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("F"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newEmptyNode(),
          newEmptyNode()
        ),
        nnkIdentDefs.newTree(
          newIdentNode("I"),
          nnkCommand.newTree(
            newIdentNode("static"),
            newIdentNode("int")
          ),
          newEmptyNode()
        )
      ),
      nnkDistinctTy.newTree(
        newIdentNode("int")
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("stop"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("F"),
        newIdentNode("void"),
        newLit(33)
      ),
      nnkIdentDefs.newTree(
        newIdentNode("v"),
        newIdentNode("int"),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkDiscardStmt.newTree(
    nnkCall.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("newSeq"),
        nnkBracketExpr.newTree(
          newIdentNode("F"),
          newIdentNode("void"),
          newLit(22)
        )
      )
    )
  ),
  nnkVarSection.newTree(
    nnkIdentDefs.newTree(
      newIdentNode("b"),
      newEmptyNode(),
      nnkCall.newTree(
        newIdentNode("mapIt")
      )
    )
  ),
  nnkCommand.newTree(
    newIdentNode("doAssert"),
    nnkInfix.newTree(
      newIdentNode("=="),
      nnkPrefix.newTree(
        newIdentNode("$"),
        nnkCall.newTree(
          newIdentNode("type"),
          newIdentNode("b")
        )
      ),
      newLit("seq[F[system.void, 33]]")
    ),
    nnkPrefix.newTree(
      newIdentNode("$"),
      nnkCall.newTree(
        newIdentNode("type"),
        newIdentNode("b")
      )
    )
  )
)
1.4.8 :-1: FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints: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 temp
/home/runner/.choosenim/toolchains/nim-1.4.8/lib/system/assertions.nim failedAssertImpl
/home/runner/.choosenim/toolchains/nim-1.4.8/lib/system/assertions.nim raiseAssert
/home/runner/.choosenim/toolchains/nim-1.4.8/lib/system/fatal.nim sysFatal
Error: unhandled exception: /home/runner/work/Nim/Nim/temp.nim(8, 10) `$type(b) == "seq[F[system.void, 33]]"` seq[F[system.void, 22]] [AssertionDefect]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp '

IR

Compiled filesize 96.19 Kb (98,496 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#  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 tySequence__qwqHTkRvwhrRyENtudHQ7g tySequence__qwqHTkRvwhrRyENtudHQ7g;
typedef struct TGenericSeq TGenericSeq;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
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 struct NimStringDesc NimStringDesc;
struct TGenericSeq {
NI len;
NI reserved;
};
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;
};
typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
typedef N_NIMCALL_PTR(void, tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ) (void);
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;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
TGenericSeq Sup;
NI data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(tySequence__qwqHTkRvwhrRyENtudHQ7g*, newSeq__TPqGUOX4dw7EA4RwKY3QFQ)(NI len);
N_LIB_PRIVATE N_NIMCALL(void, nimGCvisit)(void* d, NI op);
static N_NIMCALL(void, TM__SRd76hP9cMfCzdUO857UhQQ_2)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimRegisterGlobalMarker)(tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ markerProc);
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(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
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);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
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, NimMainModule)(void);
extern TNimType NTI__qwqHTkRvwhrRyENtudHQ7g_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_3, "/home/runner/work/Nim/Nim/temp.nim(8, 10) `$type(b) == \"seq[F[s"
"ystem.void, 33]]\"` seq[F[system.void, 22]]", 105);
N_LIB_PRIVATE tySequence__qwqHTkRvwhrRyENtudHQ7g* b__iHlVDQBNmXEkRnHxFLlelA;
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, TM__SRd76hP9cMfCzdUO857UhQQ_2)(void) {
 nimGCvisit((void*)b__iHlVDQBNmXEkRnHxFLlelA, 0);
}
static N_INLINE(void, nimFrame)(TFrame* s) {
 {
  if (!(framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw == ((TFrame*) 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;
}
static N_INLINE(NI, pluspercent___dgYAo7RfdUVVpvkfKDym8w_2system)(NI x, NI y) {
 NI result;
 nimfr_("+%", "/home/runner/.choosenim/toolchains/nim-1.4.8/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.8/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.8/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.8/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.8/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.8/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.8/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.8/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();
}
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();
 (*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) {
{
 TFrame FR_; FR_.len = 0;
 nimRegisterGlobalMarker(TM__SRd76hP9cMfCzdUO857UhQQ_2);
}
{
 tySequence__qwqHTkRvwhrRyENtudHQ7g* T1_;
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 T1_ = (tySequence__qwqHTkRvwhrRyENtudHQ7g*)0;
 T1_ = newSeq__TPqGUOX4dw7EA4RwKY3QFQ(((NI) 0));
 (void)(T1_);
 asgnRef((void**) (&b__iHlVDQBNmXEkRnHxFLlelA), newSeq__TPqGUOX4dw7EA4RwKY3QFQ(((NI) 5)));
 {
  if (!NIM_TRUE) goto LA4_;
  failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_3));
 }
 LA4_: ;
 popFrame();
}
}

Stats

  • Started 2024-03-28T21:34:55
  • Finished 2024-03-28T21:34:55
  • Duration

AST

nnkStmtList.newTree(
  nnkTemplateDef.newTree(
    nnkPostfix.newTree(
      newIdentNode("*"),
      newIdentNode("mapIt")
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newIdentNode("untyped")
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkTypeSection.newTree(
        nnkTypeDef.newTree(
          newIdentNode("OutType"),
          newEmptyNode(),
          nnkCall.newTree(
            newIdentNode("typeof"),
            nnkCall.newTree(
              newIdentNode("stop"),
              newLit(9)
            ),
            newIdentNode("typeOfProc")
          )
        )
      ),
      nnkCall.newTree(
        nnkBracketExpr.newTree(
          newIdentNode("newSeq"),
          newIdentNode("OutType")
        ),
        newLit(5)
      )
    )
  ),
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("F"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newEmptyNode(),
          newEmptyNode()
        ),
        nnkIdentDefs.newTree(
          newIdentNode("I"),
          nnkCommand.newTree(
            newIdentNode("static"),
            newIdentNode("int")
          ),
          newEmptyNode()
        )
      ),
      nnkDistinctTy.newTree(
        newIdentNode("int")
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("stop"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("F"),
        newIdentNode("void"),
        newLit(33)
      ),
      nnkIdentDefs.newTree(
        newIdentNode("v"),
        newIdentNode("int"),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkDiscardStmt.newTree(
    nnkCall.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("newSeq"),
        nnkBracketExpr.newTree(
          newIdentNode("F"),
          newIdentNode("void"),
          newLit(22)
        )
      )
    )
  ),
  nnkVarSection.newTree(
    nnkIdentDefs.newTree(
      newIdentNode("b"),
      newEmptyNode(),
      nnkCall.newTree(
        newIdentNode("mapIt")
      )
    )
  ),
  nnkCommand.newTree(
    newIdentNode("doAssert"),
    nnkInfix.newTree(
      newIdentNode("=="),
      nnkPrefix.newTree(
        newIdentNode("$"),
        nnkCall.newTree(
          newIdentNode("type"),
          newIdentNode("b")
        )
      ),
      newLit("seq[F[system.void, 33]]")
    ),
    nnkPrefix.newTree(
      newIdentNode("$"),
      nnkCall.newTree(
        newIdentNode("type"),
        newIdentNode("b")
      )
    )
  )
)
1.2.18 :-1: FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints: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 temp
/home/runner/.choosenim/toolchains/nim-1.2.18/lib/system/assertions.nim failedAssertImpl
/home/runner/.choosenim/toolchains/nim-1.2.18/lib/system/assertions.nim raiseAssert
/home/runner/.choosenim/toolchains/nim-1.2.18/lib/system/fatal.nim sysFatal
Error: unhandled exception: /home/runner/work/Nim/Nim/temp.nim(8, 10) `$type(b) == "seq[F[system.void, 33]]"` seq[F[system.void, 22]] [AssertionError]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp '

IR

Compiled filesize 91.91 Kb (94,120 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#  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 tySequence__qwqHTkRvwhrRyENtudHQ7g tySequence__qwqHTkRvwhrRyENtudHQ7g;
typedef struct TGenericSeq TGenericSeq;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
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 struct NimStringDesc NimStringDesc;
struct TGenericSeq {
NI len;
NI reserved;
};
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;
tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
typedef N_NIMCALL_PTR(void, tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ) (void);
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__SiRwrEKZdLgxqz9a9aoVBglg[512];
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__SiRwrEKZdLgxqz9a9aoVBglg 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;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
TGenericSeq Sup;
NI data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(tySequence__qwqHTkRvwhrRyENtudHQ7g*, newSeq__TPqGUOX4dw7EA4RwKY3QFQ)(NI len);
N_LIB_PRIVATE N_NIMCALL(void, nimGCvisit)(void* d, NI op);
static N_NIMCALL(void, TM__SRd76hP9cMfCzdUO857UhQQ_2)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimRegisterGlobalMarker)(tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ markerProc);
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(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
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);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
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, NimMainModule)(void);
extern TNimType NTI__qwqHTkRvwhrRyENtudHQ7g_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_3, "/home/runner/work/Nim/Nim/temp.nim(8, 10) `$type(b) == \"seq[F[s"
"ystem.void, 33]]\"` seq[F[system.void, 22]]", 105);
N_LIB_PRIVATE tySequence__qwqHTkRvwhrRyENtudHQ7g* b__iHlVDQBNmXEkRnHxFLlelA;
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, TM__SRd76hP9cMfCzdUO857UhQQ_2)(void) {
 nimGCvisit((void*)b__iHlVDQBNmXEkRnHxFLlelA, 0);
}
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) (((NI) 2000))))) goto LA8_;
  callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw();
 }
 LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = (*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).prev;
}
static N_INLINE(NI, pluspercent___dgYAo7RfdUVVpvkfKDym8w_2system)(NI x, NI y) {
 NI result;
 nimfr_("+%", "/home/runner/.choosenim/toolchains/nim-1.2.18/lib/system/arithm"
"etics.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.2.18/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.2.18/lib/system/arithm"
"etics.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.2.18/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.2.18/lib/system/compar"
"isons.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.2.18/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.2.18/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.2.18/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();
}
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();
 (*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) {
{
 TFrame FR_; FR_.len = 0;
 nimRegisterGlobalMarker(TM__SRd76hP9cMfCzdUO857UhQQ_2);
}
{
 tySequence__qwqHTkRvwhrRyENtudHQ7g* T1_;
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 T1_ = NIM_NIL;
 T1_ = newSeq__TPqGUOX4dw7EA4RwKY3QFQ(((NI) 0));
 (void)(T1_);
 asgnRef((void**) (&b__iHlVDQBNmXEkRnHxFLlelA), newSeq__TPqGUOX4dw7EA4RwKY3QFQ(((NI) 5)));
 {
  if (!NIM_TRUE) goto LA4_;
  failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_3));
 }
 LA4_: ;
 popFrame();
}
}

Stats

  • Started 2024-03-28T21:34:57
  • Finished 2024-03-28T21:34:57
  • Duration

AST

nnkStmtList.newTree(
  nnkTemplateDef.newTree(
    nnkPostfix.newTree(
      newIdentNode("*"),
      newIdentNode("mapIt")
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newIdentNode("untyped")
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkTypeSection.newTree(
        nnkTypeDef.newTree(
          newIdentNode("OutType"),
          newEmptyNode(),
          nnkCall.newTree(
            newIdentNode("typeof"),
            nnkCall.newTree(
              newIdentNode("stop"),
              newLit(9)
            ),
            newIdentNode("typeOfProc")
          )
        )
      ),
      nnkCall.newTree(
        nnkBracketExpr.newTree(
          newIdentNode("newSeq"),
          newIdentNode("OutType")
        ),
        newLit(5)
      )
    )
  ),
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("F"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newEmptyNode(),
          newEmptyNode()
        ),
        nnkIdentDefs.newTree(
          newIdentNode("I"),
          nnkCommand.newTree(
            newIdentNode("static"),
            newIdentNode("int")
          ),
          newEmptyNode()
        )
      ),
      nnkDistinctTy.newTree(
        newIdentNode("int")
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("stop"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("F"),
        newIdentNode("void"),
        newLit(33)
      ),
      nnkIdentDefs.newTree(
        newIdentNode("v"),
        newIdentNode("int"),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkDiscardStmt.newTree(
    nnkCall.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("newSeq"),
        nnkBracketExpr.newTree(
          newIdentNode("F"),
          newIdentNode("void"),
          newLit(22)
        )
      )
    )
  ),
  nnkVarSection.newTree(
    nnkIdentDefs.newTree(
      newIdentNode("b"),
      newEmptyNode(),
      nnkCall.newTree(
        newIdentNode("mapIt")
      )
    )
  ),
  nnkCommand.newTree(
    newIdentNode("doAssert"),
    nnkInfix.newTree(
      newIdentNode("=="),
      nnkPrefix.newTree(
        newIdentNode("$"),
        nnkCall.newTree(
          newIdentNode("type"),
          newIdentNode("b")
        )
      ),
      newLit("seq[F[system.void, 33]]")
    ),
    nnkPrefix.newTree(
      newIdentNode("$"),
      nnkCall.newTree(
        newIdentNode("type"),
        newIdentNode("b")
      )
    )
  )
)
1.0.10 :-1: FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints: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 temp
/home/runner/.choosenim/toolchains/nim-1.0.10/lib/system/assertions.nim failedAssertImpl
/home/runner/.choosenim/toolchains/nim-1.0.10/lib/system/assertions.nim raiseAssert
/home/runner/.choosenim/toolchains/nim-1.0.10/lib/system/fatal.nim sysFatal
Error: unhandled exception: /home/runner/work/Nim/Nim/temp.nim(8, 10) `$type(b) == "seq[F[system.void, 33]]"` seq[F[system.void, 22]] [AssertionError]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp '

IR

Compiled filesize 86.90 Kb (88,984 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#  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 tySequence__qwqHTkRvwhrRyENtudHQ7g tySequence__qwqHTkRvwhrRyENtudHQ7g;
typedef struct TGenericSeq TGenericSeq;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
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 struct NimStringDesc NimStringDesc;
struct TGenericSeq {
NI len;
NI reserved;
};
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;
tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
typedef N_NIMCALL_PTR(void, tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ) (void);
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__SiRwrEKZdLgxqz9a9aoVBglg[512];
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__SiRwrEKZdLgxqz9a9aoVBglg 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;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
TGenericSeq Sup;
NI data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(tySequence__qwqHTkRvwhrRyENtudHQ7g*, newSeq__TPqGUOX4dw7EA4RwKY3QFQ)(NI len);
N_NIMCALL(void, nimGCvisit)(void* d, NI op);
static N_NIMCALL(void, TM__SRd76hP9cMfCzdUO857UhQQ_2)(void);
N_NIMCALL(void, nimRegisterGlobalMarker)(tyProc__T4eqaYlFJYZUv9aG9b1TV0bQ markerProc);
static N_INLINE(void, asgnRef)(void** dest, void* src);
static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr);
static N_INLINE(void, decRef__AT1eRuflKWyTTBdLjEDZbg_2system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
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);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
static N_INLINE(void, initStackBottomWith)(void* locals);
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, NimMainModule)(void);
tySequence__qwqHTkRvwhrRyENtudHQ7g* b__iHlVDQBNmXEkRnHxFLlelA;
extern TNimType NTI__qwqHTkRvwhrRyENtudHQ7g_;
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;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_3, "/home/runner/work/Nim/Nim/temp.nim(8, 10) `$type(b) == \"seq[F[s"
"ystem.void, 33]]\"` seq[F[system.void, 22]]", 105);
static N_NIMCALL(void, TM__SRd76hP9cMfCzdUO857UhQQ_2)(void) {
 nimGCvisit((void*)b__iHlVDQBNmXEkRnHxFLlelA, 0);
}
static N_INLINE(void, nimFrame)(TFrame* s) {	NI T1_;
 T1_ = (NI)0;
 {
  if (!(framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw == NIM_NIL)) goto LA4_;
  T1_ = ((NI) 0);
 }
 goto LA2_;
 LA4_: ;
 {
  T1_ = ((NI) ((NI16)((*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).calldepth + ((NI16) 1))));
 }
 LA2_: ;
 (*s).calldepth = ((NI16) (T1_));
 (*s).prev = framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
 framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = s;
 {
  if (!((*s).calldepth == ((NI16) (((NI) 2000))))) goto LA9_;
  callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw();
 }
 LA9_: ;
}
static N_INLINE(void, popFrame)(void) {	framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = (*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).prev;
}
static N_INLINE(void, incRef__AT1eRuflKWyTTBdLjEDZbgsystem)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {	nimfr_("incRef", "/home/runner/.choosenim/toolchains/nim-1.0.10/lib/system/gc.nim");
 (*c).refcount = (NI)((NU64)((*c).refcount) + (NU64)(((NI) 8)));
 popFrame();
}
static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__QFQqcLB3lgOdwipkv9a60xwsystem)(void* usr) {	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
 nimfr_("usrToCell", "/home/runner/.choosenim/toolchains/nim-1.0.10/lib/system/gc.nim");
 result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
 result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) ((NI)((NU64)(((NI) (ptrdiff_t) (usr))) - (NU64)(((NI) 16)))));
 popFrame();
 return result;
}
static N_INLINE(void, rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_3system)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {	nimfr_("rtlAddZCT", "/home/runner/.choosenim/toolchains/nim-1.0.10/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.0.10/lib/system/gc.nim");
 (*c).refcount = (NI)((NU64)((*c).refcount) - (NU64)(((NI) 8)));
 {
  if (!((NU64)((*c).refcount) < (NU64)(((NI) 8)))) goto LA3_;
  rtlAddZCT__AT1eRuflKWyTTBdLjEDZbg_3system(c);
 }
 LA3_: ;
 popFrame();
}
static N_INLINE(void, asgnRef)(void** dest, void* src) {	nimfr_("asgnRef", "/home/runner/.choosenim/toolchains/nim-1.0.10/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();
}
static N_INLINE(void, initStackBottomWith)(void* locals) {	nimGC_setStackBottom(locals);
}
void PreMainInner(void) {
}
int cmdCount;
char** cmdLine;
char** gEnv;
void PreMain(void) {
 void (*volatile inner)(void);
 inner = PreMainInner;
 systemDatInit000();
 initStackBottomWith((void *)&inner);
 systemInit000();
 (*inner)();
}
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) {
{
 tySequence__qwqHTkRvwhrRyENtudHQ7g* T1_;
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 nimRegisterGlobalMarker(TM__SRd76hP9cMfCzdUO857UhQQ_2);
 T1_ = (tySequence__qwqHTkRvwhrRyENtudHQ7g*)0;
 T1_ = newSeq__TPqGUOX4dw7EA4RwKY3QFQ(((NI) 0));
 (void)(T1_);
 asgnRef((void**) (&b__iHlVDQBNmXEkRnHxFLlelA), newSeq__TPqGUOX4dw7EA4RwKY3QFQ(((NI) 5)));
 {
  if (!NIM_TRUE) goto LA4_;
  failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_3));
 }
 LA4_: ;
 popFrame();
}
}

Stats

  • Started 2024-03-28T21:35:00
  • Finished 2024-03-28T21:35:00
  • Duration

AST

nnkStmtList.newTree(
  nnkTemplateDef.newTree(
    nnkPostfix.newTree(
      newIdentNode("*"),
      newIdentNode("mapIt")
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newIdentNode("untyped")
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkTypeSection.newTree(
        nnkTypeDef.newTree(
          newIdentNode("OutType"),
          newEmptyNode(),
          nnkCall.newTree(
            newIdentNode("typeof"),
            nnkCall.newTree(
              newIdentNode("stop"),
              newLit(9)
            ),
            newIdentNode("typeOfProc")
          )
        )
      ),
      nnkCall.newTree(
        nnkBracketExpr.newTree(
          newIdentNode("newSeq"),
          newIdentNode("OutType")
        ),
        newLit(5)
      )
    )
  ),
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("F"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newEmptyNode(),
          newEmptyNode()
        ),
        nnkIdentDefs.newTree(
          newIdentNode("I"),
          nnkCommand.newTree(
            newIdentNode("static"),
            newIdentNode("int")
          ),
          newEmptyNode()
        )
      ),
      nnkDistinctTy.newTree(
        newIdentNode("int")
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("stop"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("F"),
        newIdentNode("void"),
        newLit(33)
      ),
      nnkIdentDefs.newTree(
        newIdentNode("v"),
        newIdentNode("int"),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkDiscardStmt.newTree(
    nnkCall.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("newSeq"),
        nnkBracketExpr.newTree(
          newIdentNode("F"),
          newIdentNode("void"),
          newLit(22)
        )
      )
    )
  ),
  nnkVarSection.newTree(
    nnkIdentDefs.newTree(
      newIdentNode("b"),
      newEmptyNode(),
      nnkCall.newTree(
        newIdentNode("mapIt")
      )
    )
  ),
  nnkCommand.newTree(
    newIdentNode("doAssert"),
    nnkInfix.newTree(
      newIdentNode("=="),
      nnkPrefix.newTree(
        newIdentNode("$"),
        nnkCall.newTree(
          newIdentNode("type"),
          newIdentNode("b")
        )
      ),
      newLit("seq[F[system.void, 33]]")
    ),
    nnkPrefix.newTree(
      newIdentNode("$"),
      nnkCall.newTree(
        newIdentNode("type"),
        newIdentNode("b")
      )
    )
  )
)
Stats
  • GCC 11.4.0
  • Clang 14.0.0
  • NodeJS 19.1
  • Created 2024-03-28T21:34:15Z
  • Comments 3
  • Commands nim c --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim

:robot: Bug found in 19 minutes bisecting 7 commits at 0 commits per second

github-actions[bot] avatar Mar 28 '24 21:03 github-actions[bot]