Nim icon indicating copy to clipboard operation
Nim copied to clipboard

SIGSEGV: Compiler emits unitialized variable in the string slice operator

Open gcr opened this issue 1 year ago • 8 comments
trafficstars

Description

  • Nim version: v2.0.2, arm64-native version
  • OS: MacOS Sonoma 14.2.1

Inside proc [][Idx, T](a: var array[Idx, T]; i: BackwardsIndex): var T, codegen contains an unitialized variable. In the middle of signaling a range error, the caller crashes before the traceback can be fully printed by dereferencing the uninitialized result.

Here's a minimal example:

proc foo() =
  for _ in @[1, 3, 5]:
    discard "abcde"[25..<10]
    break
  echo "Passed"

when isMainModule:
  foo()

Nim Version

$ nim --version
Nim Compiler Version 2.0.2 [MacOSX: arm64]
Compiled at 2023-12-15
Copyright (c) 2006-2023 by Andreas Rumpf

active boot switches: -d:release -d:nimUseLinenoise

Current Output

$ nim c test
Hint: used config file '/opt/homebrew/Cellar/nim/2.0.2/nim/config/nim.cfg' [Conf]
Hint: used config file '/opt/homebrew/Cellar/nim/2.0.2/nim/config/config.nims' [Conf]
......................................................................
Hint:  [Link]
Hint: mm: orc; threads: on; opt: none (DEBUG BUILD, `-d:release` generates faster code)
27618 lines; 0.178s; 30.352MiB peakmem; proj: /private/tmp/stuff/test; out: /private/tmp/stuff/test [SuccessX]
$ file test
test: Mach-O 64-bit executable arm64
$ ./test
Traceback (most recent call last)
/private/tmp/stuff/test.nim(8) test
/opt/homebrew/Cellar/nim/2.0.2/nim/lib/system.nim(370) foo
SIGSEGV: Illegal storage access. (Attempt to read from nil?)
fish: Job 1, './test' terminated by signal SIGSEGV (Address boundary error)

Expected Output

Should throw an unhandled exception, not SIGSEGV:

/private/tmp/stuff/test.nim(8) test
/private/tmp/stuff/test.nim(2) foo
/opt/homebrew/Cellar/nim/2.0.2/nim/lib/system/indices.nim(85) []
/opt/homebrew/Cellar/nim/2.0.2/nim/lib/system/fatal.nim(53) sysFatal
Error: unhandled exception: value out of range: -15 notin 0 .. 9223372036854775807 [RangeDefect]
Error: execution of an external program failed: '/Users/kimmy/.cache/nim/test_d/test_FFA6C1D31EF4FF0BF49E574367D1CFEF1CB99BEC'

Possible Solution

See my comment below about break.

Additional Information

Watching the crash from the debugger's view, we have:

$ nim c -c --nimcache:. test; cc -g *.c; lldb ./a.out
Hint: used config file '/opt/homebrew/Cellar/nim/2.0.2/nim/config/nim.cfg' [Conf]
Hint: used config file '/opt/homebrew/Cellar/nim/2.0.2/nim/config/config.nims' [Conf]
......................................................................
Hint: mm: orc; threads: on; opt: none (DEBUG BUILD, `-d:release` generates faster code)
27618 lines; 0.116s; 30.352MiB peakmem; proj: /private/tmp/stuff/test; out: /private/tmp/stuff/test.json [SuccessX]
(lldb) target create "./a.out"
Current executable set to '/private/tmp/stuff/a.out' (arm64).
(lldb) r
Process 67319 launched: '/private/tmp/stuff/a.out' (arm64)
Process 67319 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x9)
    frame #0: 0x000000010000e834 a.out`foo__test_u1 at @mtest.nim.c:285:112
   282 						LA6_:;
   283 					}
   284 					{
-> 285 						nimlf_(370, "/opt/homebrew/Cellar/nim/2.0.2/nim/lib/system.nim"); if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
   286 	 deallocShared(colontmpD_.p);
   287 	}
   288 					}
Target 0: (a.out) stopped.

At this point, colontmpD_ happens to contain the last thing in stack. Looks like some earlier slice object:

(lldb) p colontmpD_
(NimStringV2) {
  len = 25
  p = 0x0000000000000009
}
(lldb)

colontmpD_ originates from the codegen for proc [][Idx, T](a: var array[Idx, T]; i: BackwardsIndex): var T, called earlier. Ultimately, NimStringV2 result; is unitialized before the function returns prematurely to signal the range error:

static N_INLINE(NimStringV2, X5BX5D___test_u93)(NimStringV2 s_p0, tyObject_HSlice__ZWg9b9a9br09cvqTdM59aM3bQ9bw x_p1) {
	NimStringV2 result;
	NI a;
	NI L;
	NI TM__ipcYmBC9bj9a1BW35ABoB1Kw_2;
	NI TM__ipcYmBC9bj9a1BW35ABoB1Kw_3;
	nimfr_("[]", "/opt/homebrew/Cellar/nim/2.0.2/nim/lib/system/indices.nim");
{	nimln_(83);	a = x_p1.a;
	nimln_(84);	if (nimSubInt(x_p1.b, a, &TM__ipcYmBC9bj9a1BW35ABoB1Kw_2)) { raiseOverflow(); goto BeforeRet_;
	};
	if (nimAddInt((NI)(TM__ipcYmBC9bj9a1BW35ABoB1Kw_2), ((NI)1), &TM__ipcYmBC9bj9a1BW35ABoB1Kw_3)) { raiseOverflow(); goto BeforeRet_;
	};
	L = (NI)(TM__ipcYmBC9bj9a1BW35ABoB1Kw_3);
	nimln_(85);	if ((L) < ((NI)0) || (L) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI(L, ((NI)0), ((NI)IL64(9223372036854775807))); goto BeforeRet_;
	}
// ^ control exits here... result.p is 0x000000009 on my system

gcr avatar Mar 25 '24 02:03 gcr

Removing the break hides the issue.

The diff between the two generated codes is illuminating. Without the break, the flow jumps much farther to BeforeRet_ and the unitialized value isn't dereferenced at all.

gcr avatar Mar 25 '24 02:03 gcr

!nim c

proc foo() =
  for _ in @[1, 3, 5]:
    discard "abcde"[25..<10]
    break
  echo "Passed"

when isMainModule:
  foo()

gcr avatar Mar 25 '24 02:03 gcr

!nim c

proc foo() =
  for _ in @[1, 3, 5]:
    discard "abcde"[25..<10]
    break
  echo "Passed"

when isMainModule:
  foo()

ringabout avatar Mar 25 '24 02:03 ringabout

:penguin: Linux bisect by @ringabout (member)
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
Traceback (most recent call last)
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/work/Nim/Nim/temp.nim foo
SIGSEGV: Illegal storage access. (Attempt to read from nil?)
Segmentation fault (core dumped)
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 98.38 Kb (100,736 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;
typedef struct tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA;
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 tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA {
 NI a;
 NI b;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
struct tySequence__qwqHTkRvwhrRyENtudHQ7g_Content { NI cap; NI data[SEQ_DECL_SIZE]; };
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_u1)(void);
N_LIB_PRIVATE N_NIMCALL(void*, newSeqPayload)(NI cap_p0, NI elemSize_p1, NI elemAlign_p2);
N_LIB_PRIVATE N_NOINLINE(void, raiseIndexError2)(NI i_p0, NI n_p1);
static N_INLINE(NimStringV2, X5BX5D___temp_u91)(NimStringV2 s_p0, tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA x_p1);
N_LIB_PRIVATE N_NOINLINE(void, raiseOverflow)(void);
N_NIMCALL(NimStringV2, mnewString)(NI len_p0);
N_LIB_PRIVATE N_NOINLINE(void, raiseRangeErrorI)(NI64 i_p0, NI64 a_p1, NI64 b_p2);
static N_INLINE(void, nimPrepareStrMutationV2)(NimStringV2* s_p0);
N_LIB_PRIVATE N_NIMCALL(void, nimPrepareStrMutationImpl__system_u2413)(NimStringV2* s_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4608)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA, dotdot___temp_u34)(NI a_p0, NI b_p1);
N_LIB_PRIVATE N_NOCONV(void, deallocShared)(void* p_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u128)(tySequence__qwqHTkRvwhrRyENtudHQ7g dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u254)(NimStringV2 msg_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(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[5+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_6 = { 5 | NIM_STRLIT_FLAG, "abcde" };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_7 = {5, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_6};
static const struct {
NI cap; NIM_CHAR data[147+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_8 = { 147 | NIM_STRLIT_FLAG, "/home/runner/.choosenim/toolchains/nim-#devel/lib/system/iterators.nim(254, 11) `len(a) == L` the length of the seq changed while iterating over it" };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_9 = {147, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_8};
static const struct {
NI cap; NIM_CHAR data[6+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_11 = { 6 | NIM_STRLIT_FLAG, "Passed" };
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_10 = {{6, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_11}}
;
extern NIM_THREADVAR TFrame* framePtr__system_u2688;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4392;
static N_INLINE(void, nimPrepareStrMutationV2)(NimStringV2* s_p0) {
 {
  NIM_BOOL T3_;
  T3_ = (NIM_BOOL)0;
  T3_ = !(((*s_p0).p == ((NimStrPayload*) NIM_NIL)));
  if (!(T3_)) goto LA4_;
  T3_ = ((NI)((*(*s_p0).p).cap & ((NI)IL64(4611686018427387904))) == ((NI)IL64(4611686018427387904)));
LA4_: ;
  if (!T3_) goto LA5_;
  nimPrepareStrMutationImpl__system_u2413(s_p0);
 }
LA5_: ;
}
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;
}
static N_INLINE(NimStringV2, X5BX5D___temp_u91)(NimStringV2 s_p0, tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA x_p1) {
 NimStringV2 result;
 NI a;
 NI L;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_2;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_3;
 nimfr_("[]", "/home/runner/.choosenim/toolchains/nim-#devel/lib/system/indices.nim");
{	a = x_p1.a;
 if (nimSubInt(x_p1.b, a, &TM__SRd76hP9cMfCzdUO857UhQQ_2)) { raiseOverflow(); goto BeforeRet_;
 };
 if (nimAddInt((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_2), ((NI)1), &TM__SRd76hP9cMfCzdUO857UhQQ_3)) { raiseOverflow(); goto BeforeRet_;
 };
 L = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_3);
 if ((L) < ((NI)0) || (L) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI(L, ((NI)0), ((NI)IL64(9223372036854775807))); goto BeforeRet_;
 }
 result = mnewString(((NI) (L)));
 {
  NI i;
  NI i_2;
  i = (NI)0;
  i_2 = ((NI)0);
  {
   while (1) {
    NI TM__SRd76hP9cMfCzdUO857UhQQ_4;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_5;
    if (!(i_2 < L)) goto LA3;
    i = i_2;
    if (i < 0 || i >= result.len){ raiseIndexError2(i,result.len-1); goto BeforeRet_;
    }
    nimPrepareStrMutationV2((&result));
    if (nimAddInt(i, a, &TM__SRd76hP9cMfCzdUO857UhQQ_4)) { raiseOverflow(); goto BeforeRet_;
    };
    if ((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4) < 0 || (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4) >= s_p0.len){ raiseIndexError2((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4),s_p0.len-1); goto BeforeRet_;
    }
    result.p->data[i] = s_p0.p->data[(NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4)];
    if (nimAddInt(i_2, ((NI)1), &TM__SRd76hP9cMfCzdUO857UhQQ_5)) { raiseOverflow(); goto BeforeRet_;
    };
    i_2 = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_5);
   } LA3: ;
  }
 }
 }BeforeRet_: ;
 popFrame();
 return result;
}
static N_INLINE(tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA, dotdot___temp_u34)(NI a_p0, NI b_p1) {
 tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA result;
 nimfr_("..", "/home/runner/.choosenim/toolchains/nim-#devel/lib/system.nim");
 result.a = a_p0;
 result.b = b_p1;
 popFrame();
 return result;
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (&nimInErrorMode__system_u4392);
 return result;
}
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_u1)(void) {
NIM_BOOL* nimErr_;
 nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 {
  tySequence__qwqHTkRvwhrRyENtudHQ7g colontmp_;
  NI* _;
  NI i;
  NI L;
  NI T3_;
  colontmp_.len = 0; colontmp_.p = NIM_NIL;
  _ = (NI*)0;
  colontmp_.len = 3; colontmp_.p = (tySequence__qwqHTkRvwhrRyENtudHQ7g_Content*) newSeqPayload(3, sizeof(NI), NIM_ALIGNOF(NI));
  colontmp_.p->data[0] = ((NI)1);
  colontmp_.p->data[1] = ((NI)3);
  colontmp_.p->data[2] = ((NI)5);
  i = ((NI)0);
  T3_ = colontmp_.len;
  L = T3_;
  {
   while (1) {
    NimStringV2 colontmpD_;
    tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA T7_;
    if (!(i < L)) goto LA5;
    colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
    if (i < 0 || i >= colontmp_.len){ raiseIndexError2(i,colontmp_.len-1); goto LA6_;
    }
    _ = (&colontmp_.p->data[i]);
    T7_ = dotdot___temp_u34(((NI)25), ((NI)9));
    colontmpD_ = X5BX5D___temp_u91(TM__SRd76hP9cMfCzdUO857UhQQ_7, T7_);
    if (NIM_UNLIKELY(*nimErr_)) goto LA6_;
    (void)(colontmpD_);
    if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD_.p);
}
    eqdestroy___temp_u128(colontmp_);
    goto LA1;
    i += ((NI)1);
    {
     NI T10_;
     T10_ = colontmp_.len;
     if (!!((T10_ == L))) goto LA11_;
     failedAssertImpl__stdZassertions_u254(TM__SRd76hP9cMfCzdUO857UhQQ_9);
     if (NIM_UNLIKELY(*nimErr_)) goto LA6_;
    }
LA11_: ;
    {
     LA6_:;
    }
    {
     if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD_.p);
}
    }
    if (NIM_UNLIKELY(*nimErr_)) goto LA2_;
   } LA5: ;
  }
  {
   LA2_:;
  }
  {
   eqdestroy___temp_u128(colontmp_);
  }
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 } LA1: ;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_10, 1);
 }BeforeRet_: ;
 popFrame();
}
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) {
{
NIM_BOOL* nimErr_;
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimErr_ = nimErrorFlag();
 foo__temp_u1();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}

Stats

  • Started 2024-03-25T02:44:57
  • Finished 2024-03-25T02:44:58
  • Duration

AST

nnkStmtList.newTree(
  nnkProcDef.newTree(
    newIdentNode("foo"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkForStmt.newTree(
        newIdentNode("_"),
        nnkPrefix.newTree(
          newIdentNode("@"),
          nnkBracket.newTree(
            newLit(1),
            newLit(3),
            newLit(5)
          )
        ),
        nnkStmtList.newTree(
          nnkDiscardStmt.newTree(
            nnkBracketExpr.newTree(
              newLit("abcde"),
              nnkInfix.newTree(
                newIdentNode("..<"),
                newLit(25),
                newLit(10)
              )
            )
          ),
          nnkBreakStmt.newTree(
            newEmptyNode()
          )
        )
      ),
      nnkCommand.newTree(
        newIdentNode("echo"),
        newLit("Passed")
      )
    )
  ),
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkCall.newTree(
          newIdentNode("foo")
        )
      )
    )
  )
)
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
Traceback (most recent call last)
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/work/Nim/Nim/temp.nim foo
SIGSEGV: Illegal storage access. (Attempt to read from nil?)
Segmentation fault (core dumped)
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 96.27 Kb (98,576 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;
typedef struct tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ;
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 tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ {
 NI a;
 NI b;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
struct tySequence__qwqHTkRvwhrRyENtudHQ7g_Content { NI cap; NI data[SEQ_DECL_SIZE]; };
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_u1)(void);
N_LIB_PRIVATE N_NIMCALL(void*, newSeqPayload)(NI cap_p0, NI elemSize_p1, NI elemAlign_p2);
N_LIB_PRIVATE N_NOINLINE(void, raiseIndexError2)(NI i_p0, NI n_p1);
static N_INLINE(NimStringV2, X5BX5D___temp_u93)(NimStringV2 s_p0, tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ x_p1);
N_LIB_PRIVATE N_NOINLINE(void, raiseOverflow)(void);
N_NIMCALL(NimStringV2, mnewString)(NI len_p0);
N_LIB_PRIVATE N_NOINLINE(void, raiseRangeErrorI)(NI64 i_p0, NI64 a_p1, NI64 b_p2);
static N_INLINE(void, nimPrepareStrMutationV2)(NimStringV2* s_p0);
N_LIB_PRIVATE N_NIMCALL(void, nimPrepareStrMutationImpl__system_u2440)(NimStringV2* s_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4621)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ, dotdot___temp_u36)(NI a_p0, NI b_p1);
N_LIB_PRIVATE N_NOCONV(void, deallocShared)(void* p_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u130)(tySequence__qwqHTkRvwhrRyENtudHQ7g dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u310)(NimStringV2 msg_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(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[5+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_6 = { 5 | NIM_STRLIT_FLAG, "abcde" };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_7 = {5, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_6};
static const struct {
NI cap; NIM_CHAR data[146+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_9 = { 146 | NIM_STRLIT_FLAG, "/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system/iterators.nim(246, 11) `len(a) == L` the length of the seq changed while iterating over it" };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_10 = {146, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_9};
static const struct {
NI cap; NIM_CHAR data[6+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_12 = { 6 | NIM_STRLIT_FLAG, "Passed" };
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_11 = {{6, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_12}}
;
extern NIM_THREADVAR TFrame* framePtr__system_u4020;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4403;
static N_INLINE(void, nimPrepareStrMutationV2)(NimStringV2* s_p0) {
 {
  NIM_BOOL T3_;
  T3_ = (NIM_BOOL)0;
  T3_ = !(((*s_p0).p == ((NimStrPayload*) NIM_NIL)));
  if (!(T3_)) goto LA4_;
  T3_ = ((NI)((*(*s_p0).p).cap & ((NI)IL64(4611686018427387904))) == ((NI)IL64(4611686018427387904)));
LA4_: ;
  if (!T3_) goto LA5_;
  nimPrepareStrMutationImpl__system_u2440(s_p0);
 }
LA5_: ;
}
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;
}
static N_INLINE(NimStringV2, X5BX5D___temp_u93)(NimStringV2 s_p0, tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ x_p1) {
 NimStringV2 result;
 NI a;
 NI L;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_2;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_3;
 nimfr_("[]", "/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system/indices.nim");
{	a = x_p1.a;
 if (nimSubInt(x_p1.b, a, &TM__SRd76hP9cMfCzdUO857UhQQ_2)) { raiseOverflow(); goto BeforeRet_;
 };
 if (nimAddInt((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_2), ((NI)1), &TM__SRd76hP9cMfCzdUO857UhQQ_3)) { raiseOverflow(); goto BeforeRet_;
 };
 L = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_3);
 if ((L) < ((NI)0) || (L) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI(L, ((NI)0), ((NI)IL64(9223372036854775807))); goto BeforeRet_;
 }
 result = mnewString(((NI) (L)));
 {
  NI i;
  NI i_2;
  i = (NI)0;
  i_2 = ((NI)0);
  {
   while (1) {
    NI TM__SRd76hP9cMfCzdUO857UhQQ_4;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_5;
    if (!(i_2 < L)) goto LA3;
    i = i_2;
    if (i < 0 || i >= result.len){ raiseIndexError2(i,result.len-1); goto BeforeRet_;
    }
    nimPrepareStrMutationV2((&result));
    if (nimAddInt(i, a, &TM__SRd76hP9cMfCzdUO857UhQQ_4)) { raiseOverflow(); goto BeforeRet_;
    };
    if ((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4) < 0 || (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4) >= s_p0.len){ raiseIndexError2((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4),s_p0.len-1); goto BeforeRet_;
    }
    result.p->data[i] = s_p0.p->data[(NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4)];
    if (nimAddInt(i_2, ((NI)1), &TM__SRd76hP9cMfCzdUO857UhQQ_5)) { raiseOverflow(); goto BeforeRet_;
    };
    i_2 = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_5);
   } LA3: ;
  }
 }
 }BeforeRet_: ;
 popFrame();
 return result;
}
static N_INLINE(tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ, dotdot___temp_u36)(NI a_p0, NI b_p1) {
 tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ result;
 nimfr_("..", "/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system.nim");
 result.a = a_p0;
 result.b = b_p1;
 popFrame();
 return result;
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (&nimInErrorMode__system_u4403);
 return result;
}
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_u1)(void) {
NIM_BOOL* nimErr_;
 nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 {
  tySequence__qwqHTkRvwhrRyENtudHQ7g colontmp_;
  NI* _;
  NI i;
  NI L;
  NI T3_;
  colontmp_.len = 0; colontmp_.p = NIM_NIL;
  _ = (NI*)0;
  colontmp_.len = 3; colontmp_.p = (tySequence__qwqHTkRvwhrRyENtudHQ7g_Content*) newSeqPayload(3, sizeof(NI), NIM_ALIGNOF(NI));
  colontmp_.p->data[0] = ((NI)1);
  colontmp_.p->data[1] = ((NI)3);
  colontmp_.p->data[2] = ((NI)5);
  i = ((NI)0);
  T3_ = colontmp_.len;
  L = T3_;
  {
   while (1) {
    NimStringV2 colontmpD_;
    tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ T7_;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_8;
    if (!(i < L)) goto LA5;
    colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
    if (i < 0 || i >= colontmp_.len){ raiseIndexError2(i,colontmp_.len-1); goto LA6_;
    }
    _ = (&colontmp_.p->data[i]);
    T7_ = dotdot___temp_u36(((NI)25), ((NI)9));
    colontmpD_ = X5BX5D___temp_u93(TM__SRd76hP9cMfCzdUO857UhQQ_7, T7_);
    if (NIM_UNLIKELY(*nimErr_)) goto LA6_;
    (void)(colontmpD_);
    if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD_.p);
}
    eqdestroy___temp_u130(colontmp_);
    goto LA1;
    if (nimAddInt(i, ((NI)1), &TM__SRd76hP9cMfCzdUO857UhQQ_8)) { raiseOverflow(); goto LA6_;
    };
    i = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_8);
    {
     NI T10_;
     T10_ = colontmp_.len;
     if (!!((T10_ == L))) goto LA11_;
     failedAssertImpl__stdZassertions_u310(TM__SRd76hP9cMfCzdUO857UhQQ_10);
     if (NIM_UNLIKELY(*nimErr_)) goto LA6_;
    }
LA11_: ;
    {
     LA6_:;
    }
    {
     if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD_.p);
}
    }
    if (NIM_UNLIKELY(*nimErr_)) goto LA2_;
   } LA5: ;
  }
  {
   LA2_:;
  }
  {
   eqdestroy___temp_u130(colontmp_);
  }
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 } LA1: ;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_11, 1);
 }BeforeRet_: ;
 popFrame();
}
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) {
{
NIM_BOOL* nimErr_;
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimErr_ = nimErrorFlag();
 foo__temp_u1();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}

Stats

  • Started 2024-03-25T02:44:58
  • Finished 2024-03-25T02:44:59
  • Duration

AST

nnkStmtList.newTree(
  nnkProcDef.newTree(
    newIdentNode("foo"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkForStmt.newTree(
        newIdentNode("_"),
        nnkPrefix.newTree(
          newIdentNode("@"),
          nnkBracket.newTree(
            newLit(1),
            newLit(3),
            newLit(5)
          )
        ),
        nnkStmtList.newTree(
          nnkDiscardStmt.newTree(
            nnkBracketExpr.newTree(
              newLit("abcde"),
              nnkInfix.newTree(
                newIdentNode("..<"),
                newLit(25),
                newLit(10)
              )
            )
          ),
          nnkBreakStmt.newTree(
            newEmptyNode()
          )
        )
      ),
      nnkCommand.newTree(
        newIdentNode("echo"),
        newLit("Passed")
      )
    )
  ),
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkCall.newTree(
          newIdentNode("foo")
        )
      )
    )
  )
)
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
Traceback (most recent call last)
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/work/Nim/Nim/temp.nim foo
SIGSEGV: Illegal storage access. (Attempt to read from nil?)
Segmentation fault (core dumped)
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 96.27 Kb (98,576 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;
typedef struct tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ;
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 tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ {
 NI a;
 NI b;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
struct tySequence__qwqHTkRvwhrRyENtudHQ7g_Content { NI cap; NI data[SEQ_DECL_SIZE]; };
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_u1)(void);
N_LIB_PRIVATE N_NIMCALL(void*, newSeqPayload)(NI cap_p0, NI elemSize_p1, NI elemAlign_p2);
N_LIB_PRIVATE N_NOINLINE(void, raiseIndexError2)(NI i_p0, NI n_p1);
static N_INLINE(NimStringV2, X5BX5D___temp_u93)(NimStringV2 s_p0, tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ x_p1);
N_LIB_PRIVATE N_NOINLINE(void, raiseOverflow)(void);
N_NIMCALL(NimStringV2, mnewString)(NI len_p0);
N_LIB_PRIVATE N_NOINLINE(void, raiseRangeErrorI)(NI64 i_p0, NI64 a_p1, NI64 b_p2);
static N_INLINE(void, nimPrepareStrMutationV2)(NimStringV2* s_p0);
N_LIB_PRIVATE N_NIMCALL(void, nimPrepareStrMutationImpl__system_u2440)(NimStringV2* s_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4621)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ, dotdot___temp_u36)(NI a_p0, NI b_p1);
N_LIB_PRIVATE N_NOCONV(void, deallocShared)(void* p_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u130)(tySequence__qwqHTkRvwhrRyENtudHQ7g dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u310)(NimStringV2 msg_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(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[5+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_6 = { 5 | NIM_STRLIT_FLAG, "abcde" };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_7 = {5, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_6};
static const struct {
NI cap; NIM_CHAR data[146+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_9 = { 146 | NIM_STRLIT_FLAG, "/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system/iterators.nim(246, 11) `len(a) == L` the length of the seq changed while iterating over it" };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_10 = {146, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_9};
static const struct {
NI cap; NIM_CHAR data[6+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_12 = { 6 | NIM_STRLIT_FLAG, "Passed" };
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_11 = {{6, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_12}}
;
extern NIM_THREADVAR TFrame* framePtr__system_u4020;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4403;
static N_INLINE(void, nimPrepareStrMutationV2)(NimStringV2* s_p0) {
 {
  NIM_BOOL T3_;
  T3_ = (NIM_BOOL)0;
  T3_ = !(((*s_p0).p == ((NimStrPayload*) NIM_NIL)));
  if (!(T3_)) goto LA4_;
  T3_ = ((NI)((*(*s_p0).p).cap & ((NI)IL64(4611686018427387904))) == ((NI)IL64(4611686018427387904)));
LA4_: ;
  if (!T3_) goto LA5_;
  nimPrepareStrMutationImpl__system_u2440(s_p0);
 }
LA5_: ;
}
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;
}
static N_INLINE(NimStringV2, X5BX5D___temp_u93)(NimStringV2 s_p0, tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ x_p1) {
 NimStringV2 result;
 NI a;
 NI L;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_2;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_3;
 nimfr_("[]", "/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system/indices.nim");
{	a = x_p1.a;
 if (nimSubInt(x_p1.b, a, &TM__SRd76hP9cMfCzdUO857UhQQ_2)) { raiseOverflow(); goto BeforeRet_;
 };
 if (nimAddInt((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_2), ((NI)1), &TM__SRd76hP9cMfCzdUO857UhQQ_3)) { raiseOverflow(); goto BeforeRet_;
 };
 L = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_3);
 if ((L) < ((NI)0) || (L) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI(L, ((NI)0), ((NI)IL64(9223372036854775807))); goto BeforeRet_;
 }
 result = mnewString(((NI) (L)));
 {
  NI i;
  NI i_2;
  i = (NI)0;
  i_2 = ((NI)0);
  {
   while (1) {
    NI TM__SRd76hP9cMfCzdUO857UhQQ_4;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_5;
    if (!(i_2 < L)) goto LA3;
    i = i_2;
    if (i < 0 || i >= result.len){ raiseIndexError2(i,result.len-1); goto BeforeRet_;
    }
    nimPrepareStrMutationV2((&result));
    if (nimAddInt(i, a, &TM__SRd76hP9cMfCzdUO857UhQQ_4)) { raiseOverflow(); goto BeforeRet_;
    };
    if ((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4) < 0 || (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4) >= s_p0.len){ raiseIndexError2((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4),s_p0.len-1); goto BeforeRet_;
    }
    result.p->data[i] = s_p0.p->data[(NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4)];
    if (nimAddInt(i_2, ((NI)1), &TM__SRd76hP9cMfCzdUO857UhQQ_5)) { raiseOverflow(); goto BeforeRet_;
    };
    i_2 = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_5);
   } LA3: ;
  }
 }
 }BeforeRet_: ;
 popFrame();
 return result;
}
static N_INLINE(tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ, dotdot___temp_u36)(NI a_p0, NI b_p1) {
 tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ result;
 nimfr_("..", "/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system.nim");
 result.a = a_p0;
 result.b = b_p1;
 popFrame();
 return result;
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (&nimInErrorMode__system_u4403);
 return result;
}
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_u1)(void) {
NIM_BOOL* nimErr_;
 nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 {
  tySequence__qwqHTkRvwhrRyENtudHQ7g colontmp_;
  NI* _;
  NI i;
  NI L;
  NI T3_;
  colontmp_.len = 0; colontmp_.p = NIM_NIL;
  _ = (NI*)0;
  colontmp_.len = 3; colontmp_.p = (tySequence__qwqHTkRvwhrRyENtudHQ7g_Content*) newSeqPayload(3, sizeof(NI), NIM_ALIGNOF(NI));
  colontmp_.p->data[0] = ((NI)1);
  colontmp_.p->data[1] = ((NI)3);
  colontmp_.p->data[2] = ((NI)5);
  i = ((NI)0);
  T3_ = colontmp_.len;
  L = T3_;
  {
   while (1) {
    NimStringV2 colontmpD_;
    tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ T7_;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_8;
    if (!(i < L)) goto LA5;
    colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
    if (i < 0 || i >= colontmp_.len){ raiseIndexError2(i,colontmp_.len-1); goto LA6_;
    }
    _ = (&colontmp_.p->data[i]);
    T7_ = dotdot___temp_u36(((NI)25), ((NI)9));
    colontmpD_ = X5BX5D___temp_u93(TM__SRd76hP9cMfCzdUO857UhQQ_7, T7_);
    if (NIM_UNLIKELY(*nimErr_)) goto LA6_;
    (void)(colontmpD_);
    if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD_.p);
}
    eqdestroy___temp_u130(colontmp_);
    goto LA1;
    if (nimAddInt(i, ((NI)1), &TM__SRd76hP9cMfCzdUO857UhQQ_8)) { raiseOverflow(); goto LA6_;
    };
    i = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_8);
    {
     NI T10_;
     T10_ = colontmp_.len;
     if (!!((T10_ == L))) goto LA11_;
     failedAssertImpl__stdZassertions_u310(TM__SRd76hP9cMfCzdUO857UhQQ_10);
     if (NIM_UNLIKELY(*nimErr_)) goto LA6_;
    }
LA11_: ;
    {
     LA6_:;
    }
    {
     if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD_.p);
}
    }
    if (NIM_UNLIKELY(*nimErr_)) goto LA2_;
   } LA5: ;
  }
  {
   LA2_:;
  }
  {
   eqdestroy___temp_u130(colontmp_);
  }
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 } LA1: ;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_11, 1);
 }BeforeRet_: ;
 popFrame();
}
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) {
{
NIM_BOOL* nimErr_;
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimErr_ = nimErrorFlag();
 foo__temp_u1();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}

Stats

  • Started 2024-03-25T02:44:59
  • Finished 2024-03-25T02:45:00
  • Duration

AST

nnkStmtList.newTree(
  nnkProcDef.newTree(
    newIdentNode("foo"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkForStmt.newTree(
        newIdentNode("_"),
        nnkPrefix.newTree(
          newIdentNode("@"),
          nnkBracket.newTree(
            newLit(1),
            newLit(3),
            newLit(5)
          )
        ),
        nnkStmtList.newTree(
          nnkDiscardStmt.newTree(
            nnkBracketExpr.newTree(
              newLit("abcde"),
              nnkInfix.newTree(
                newIdentNode("..<"),
                newLit(25),
                newLit(10)
              )
            )
          ),
          nnkBreakStmt.newTree(
            newEmptyNode()
          )
        )
      ),
      nnkCommand.newTree(
        newIdentNode("echo"),
        newLit("Passed")
      )
    )
  ),
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkCall.newTree(
          newIdentNode("foo")
        )
      )
    )
  )
)
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/work/Nim/Nim/temp.nim foo
/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system.nim []
/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system/fatal.nim sysFatal
Error: unhandled exception: value out of range: -15 notin 0 .. 9223372036854775807 [RangeDefect]
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 104.76 Kb (107,272 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.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 NimStringDesc NimStringDesc;
typedef struct tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ;
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;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ {
NI a;
NI b;
};
typedef NimStringDesc* tyArray__nHXaesL0DJZHyVS07ARPRA[1];
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
TGenericSeq Sup;
NI data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_1)(void);
N_LIB_PRIVATE N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
static N_NIMCALL(void, Marker_tySequence__qwqHTkRvwhrRyENtudHQ7g)(void* p, NI op);
N_LIB_PRIVATE N_NOINLINE(void, raiseIndexError2)(NI i, NI n);
static N_INLINE(NimStringDesc*, X5BX5D___temp_69)(NimStringDesc* s, tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ x);
N_LIB_PRIVATE N_NOINLINE(void, raiseOverflow)(void);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
N_LIB_PRIVATE N_NOINLINE(void, raiseRangeErrorI)(NI64 i, NI64 a, NI64 b);
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_HSlice__ZwT1AdT5SpvzfXpu31YpBQ, dotdot___temp_33)(NI a, NI b);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__systemZassertions_56)(NimStringDesc* msg);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringDesc** args, NI argsLen_0);
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 NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_6, "abcde", 5);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_8, "/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system/iterators.nim(240, 11) `len(a) == L` the length of the seq changed while iterating over it", 147);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_10, "Passed", 6);
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_9 = {((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_10)}
;
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;
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_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(NimStringDesc*, X5BX5D___temp_69)(NimStringDesc* s, tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ x) {
 NimStringDesc* result;
 NI a;
 NI L;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_2;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_3;
 nimfr_("[]", "/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system.nim");
 result = NIM_NIL;
 a = x.a;
 if (nimSubInt(x.b, a, &TM__SRd76hP9cMfCzdUO857UhQQ_2)) { raiseOverflow(); };
 if (nimAddInt((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_2), ((NI) 1), &TM__SRd76hP9cMfCzdUO857UhQQ_3)) { raiseOverflow(); };
 L = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_3);
 if ((L) < ((NI) 0) || (L) > ((NI) IL64(9223372036854775807))){ raiseRangeErrorI(L, ((NI) 0), ((NI) IL64(9223372036854775807))); }
 result = mnewString(((NI) (L)));
 {
  NI i;
  NI i_2;
  i = (NI)0;
  i_2 = ((NI) 0);
  {
   while (1) {
    NI TM__SRd76hP9cMfCzdUO857UhQQ_4;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_5;
    if (!(i_2 < L)) goto LA3;
    i = i_2;
    if (i < 0 || i >= (result ? result->Sup.len : 0)){ raiseIndexError2(i,(result ? result->Sup.len : 0)-1); }
    if (nimAddInt(i, a, &TM__SRd76hP9cMfCzdUO857UhQQ_4)) { raiseOverflow(); };
    if ((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4) < 0 || (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4) >= (s ? s->Sup.len : 0)){ raiseIndexError2((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4),(s ? s->Sup.len : 0)-1); }
    result->data[i] = s->data[(NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4)];
    if (nimAddInt(i_2, ((NI) 1), &TM__SRd76hP9cMfCzdUO857UhQQ_5)) { raiseOverflow(); };
    i_2 = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_5);
   } LA3: ;
  }
 }
 popFrame();
 return result;
}
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size) {
 void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
 nimSetMem__systemZmemory_7(p, ((int) 0), size);
}
static N_INLINE(tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ, dotdot___temp_33)(NI a, NI b) {
 tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ result;
 nimfr_("..", "/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system.nim");
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ));
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ));
 result.a = a;
 result.b = b;
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_1)(void) {
 nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
 {
  NI* _;
  tySequence__qwqHTkRvwhrRyENtudHQ7g* colontmp_;
  NI i;
  NI L;
  NI T2_;
  _ = (NI*)0;
  colontmp_ = NIM_NIL;
  colontmp_ = (tySequence__qwqHTkRvwhrRyENtudHQ7g*) newSeq((&NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_), 3);
  colontmp_->data[0] = ((NI) 1);
  colontmp_->data[1] = ((NI) 3);
  colontmp_->data[2] = ((NI) 5);
  i = ((NI) 0);
  T2_ = (colontmp_ ? colontmp_->Sup.len : 0);
  L = T2_;
  {
   while (1) {
    tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ T5_;
    NimStringDesc* T6_;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_7;
    if (!(i < L)) goto LA4;
    if (i < 0 || i >= (colontmp_ ? colontmp_->Sup.len : 0)){ raiseIndexError2(i,(colontmp_ ? colontmp_->Sup.len : 0)-1); }
    _ = (&colontmp_->data[i]);
    T5_ = dotdot___temp_33(((NI) 25), ((NI) 9));
    T6_ = NIM_NIL;
    T6_ = X5BX5D___temp_69(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_6), T5_);
    (void)(T6_);
    goto LA1;
    if (nimAddInt(i, ((NI) 1), &TM__SRd76hP9cMfCzdUO857UhQQ_7)) { raiseOverflow(); };
    i = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_7);
    {
     NI T9_;
     T9_ = (colontmp_ ? colontmp_->Sup.len : 0);
     if (!!((T9_ == L))) goto LA10_;
     failedAssertImpl__systemZassertions_56(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_8));
    }
    LA10_: ;
   } LA4: ;
  }
 } LA1: ;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_9, 1);
 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) {
{
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 foo__temp_1();
 popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void) {
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.size = sizeof(tySequence__qwqHTkRvwhrRyENtudHQ7g*);
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.align = NIM_ALIGNOF(tySequence__qwqHTkRvwhrRyENtudHQ7g*);
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.kind = 24;
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.base = (&NTIint__rR5Bzr1D5krxoo1NcNyeMA_);
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.flags = 2;
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.marker = Marker_tySequence__qwqHTkRvwhrRyENtudHQ7g;
}

Stats

  • Started 2024-03-25T02:45:02
  • Finished 2024-03-25T02:45:03
  • Duration

AST

nnkStmtList.newTree(
  nnkProcDef.newTree(
    newIdentNode("foo"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkForStmt.newTree(
        newIdentNode("_"),
        nnkPrefix.newTree(
          newIdentNode("@"),
          nnkBracket.newTree(
            newLit(1),
            newLit(3),
            newLit(5)
          )
        ),
        nnkStmtList.newTree(
          nnkDiscardStmt.newTree(
            nnkBracketExpr.newTree(
              newLit("abcde"),
              nnkInfix.newTree(
                newIdentNode("..<"),
                newLit(25),
                newLit(10)
              )
            )
          ),
          nnkBreakStmt.newTree(
            newEmptyNode()
          )
        )
      ),
      nnkCommand.newTree(
        newIdentNode("echo"),
        newLit("Passed")
      )
    )
  ),
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkCall.newTree(
          newIdentNode("foo")
        )
      )
    )
  )
)
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/work/Nim/Nim/temp.nim foo
/home/runner/.choosenim/toolchains/nim-1.4.8/lib/system.nim []
/home/runner/.choosenim/toolchains/nim-1.4.8/lib/system/fatal.nim sysFatal
Error: unhandled exception: value out of range: -15 notin 0 .. 9223372036854775807 [RangeDefect]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp '

IR

Compiled filesize 97.47 Kb (99,808 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.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 NimStringDesc NimStringDesc;
typedef struct tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA;
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;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA {
NI a;
NI b;
};
typedef NimStringDesc* tyArray__nHXaesL0DJZHyVS07ARPRA[1];
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
TGenericSeq Sup;
NI data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, foo__EzBZaa239as9bFx8yeHDoTOw)(void);
N_LIB_PRIVATE N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_LIB_PRIVATE N_NOINLINE(void, raiseIndexError2)(NI i, NI n);
static N_INLINE(NimStringDesc*, X5BX5D___FPvLvuwqfYMFkcbGfPM8QQsystem)(NimStringDesc* s, tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA x);
N_LIB_PRIVATE N_NOINLINE(void, raiseOverflow)(void);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
N_LIB_PRIVATE N_NOINLINE(void, raiseRangeErrorI)(NI64 i, NI64 a, NI64 b);
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_HSlice__EE5dzjqoOrHT6HJhIPXAvA, dotdot___BokNSDrKN1xmV1nA01G9brAsystem)(NI a, NI b);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringDesc** args, NI argsLen_0);
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_6, "abcde", 5);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_8, "/home/runner/.choosenim/toolchains/nim-1.4.8/lib/system/iterato"
"rs.nim(204, 11) `len(a) == L` the length of the seq changed whil"
"e iterating over it", 146);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_10, "Passed", 6);
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_9 = {((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_10)}
;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
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(NimStringDesc*, X5BX5D___FPvLvuwqfYMFkcbGfPM8QQsystem)(NimStringDesc* s, tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA x) {
 NimStringDesc* result;
 NI a;
 NI L;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_2;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_3;
 nimfr_("[]", "/home/runner/.choosenim/toolchains/nim-1.4.8/lib/system.nim");
 result = (NimStringDesc*)0;
 a = x.a;
 if (nimSubInt(x.b, a, &TM__SRd76hP9cMfCzdUO857UhQQ_2)) { raiseOverflow(); };
 if (nimAddInt((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_2), ((NI) 1), &TM__SRd76hP9cMfCzdUO857UhQQ_3)) { raiseOverflow(); };
 L = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_3);
 if ((L) < ((NI) 0) || (L) > ((NI) IL64(9223372036854775807))){ raiseRangeErrorI(L, ((NI) 0), ((NI) IL64(9223372036854775807))); }
 result = mnewString(((NI) (L)));
 {
  NI i;
  NI i_2;
  i = (NI)0;
  i_2 = ((NI) 0);
  {
   while (1) {
    NI TM__SRd76hP9cMfCzdUO857UhQQ_4;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_5;
    if (!(i_2 < L)) goto LA3;
    i = i_2;
    if ((NU)(i) >= (NU)(result ? result->Sup.len : 0)){ raiseIndexError2(i,(result ? result->Sup.len : 0)-1); }
    if (nimAddInt(i, a, &TM__SRd76hP9cMfCzdUO857UhQQ_4)) { raiseOverflow(); };
    if ((NU)((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4)) >= (NU)(s ? s->Sup.len : 0)){ raiseIndexError2((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4),(s ? s->Sup.len : 0)-1); }
    result->data[i] = s->data[(NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4)];
    if (nimAddInt(i_2, ((NI) 1), &TM__SRd76hP9cMfCzdUO857UhQQ_5)) { raiseOverflow(); };
    i_2 = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_5);
   } LA3: ;
  }
 }
 popFrame();
 return result;
}
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {
 void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
 nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
static N_INLINE(tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA, dotdot___BokNSDrKN1xmV1nA01G9brAsystem)(NI a, NI b) {
 tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA result;
 nimfr_("..", "/home/runner/.choosenim/toolchains/nim-1.4.8/lib/system.nim");
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA));
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA));
 result.a = a;
 result.b = b;
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(void, foo__EzBZaa239as9bFx8yeHDoTOw)(void) {
 nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
 {
  NI* _;
  tySequence__qwqHTkRvwhrRyENtudHQ7g* colontmp_;
  NI i;
  NI L;
  NI T2_;
  _ = (NI*)0;
  colontmp_ = (tySequence__qwqHTkRvwhrRyENtudHQ7g*)0;
  colontmp_ = (tySequence__qwqHTkRvwhrRyENtudHQ7g*) newSeq((&NTI__qwqHTkRvwhrRyENtudHQ7g_), 3);
  colontmp_->data[0] = ((NI) 1);
  colontmp_->data[1] = ((NI) 3);
  colontmp_->data[2] = ((NI) 5);
  i = ((NI) 0);
  T2_ = (colontmp_ ? colontmp_->Sup.len : 0);
  L = T2_;
  {
   while (1) {
    tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA T5_;
    NimStringDesc* T6_;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_7;
    if (!(i < L)) goto LA4;
    if ((NU)(i) >= (NU)(colontmp_ ? colontmp_->Sup.len : 0)){ raiseIndexError2(i,(colontmp_ ? colontmp_->Sup.len : 0)-1); }
    _ = (&colontmp_->data[i]);
    T5_ = dotdot___BokNSDrKN1xmV1nA01G9brAsystem(((NI) 25), ((NI) 9));
    T6_ = (NimStringDesc*)0;
    T6_ = X5BX5D___FPvLvuwqfYMFkcbGfPM8QQsystem(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_6), T5_);
    (void)(T6_);
    goto LA1;
    if (nimAddInt(i, ((NI) 1), &TM__SRd76hP9cMfCzdUO857UhQQ_7)) { raiseOverflow(); };
    i = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_7);
    {
     NI T9_;
     T9_ = (colontmp_ ? colontmp_->Sup.len : 0);
     if (!!((T9_ == L))) goto LA10_;
     failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_8));
    }
    LA10_: ;
   } LA4: ;
  }
 } LA1: ;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_9, 1);
 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) {
{
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 foo__EzBZaa239as9bFx8yeHDoTOw();
 popFrame();
}
}

Stats

  • Started 2024-03-25T02:45:05
  • Finished 2024-03-25T02:45:06
  • Duration

AST

nnkStmtList.newTree(
  nnkProcDef.newTree(
    newIdentNode("foo"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkForStmt.newTree(
        newIdentNode("_"),
        nnkPrefix.newTree(
          newIdentNode("@"),
          nnkBracket.newTree(
            newLit(1),
            newLit(3),
            newLit(5)
          )
        ),
        nnkStmtList.newTree(
          nnkDiscardStmt.newTree(
            nnkBracketExpr.newTree(
              newLit("abcde"),
              nnkInfix.newTree(
                newIdentNode("..<"),
                newLit(25),
                newLit(10)
              )
            )
          ),
          nnkBreakStmt.newTree(
            newEmptyNode()
          )
        )
      ),
      nnkCommand.newTree(
        newIdentNode("echo"),
        newLit("Passed")
      )
    )
  ),
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkCall.newTree(
          newIdentNode("foo")
        )
      )
    )
  )
)
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/work/Nim/Nim/temp.nim foo
/home/runner/.choosenim/toolchains/nim-1.2.18/lib/system.nim []
/home/runner/.choosenim/toolchains/nim-1.2.18/lib/system/fatal.nim sysFatal
Error: unhandled exception: value out of range: -15 notin 0 .. 9223372036854775807 [RangeError]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp '

IR

Compiled filesize 97.52 Kb (99,856 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.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 NimStringDesc NimStringDesc;
typedef struct tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA;
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;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA {
NI a;
NI b;
};
typedef NimStringDesc* tyArray__nHXaesL0DJZHyVS07ARPRA[1];
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
TGenericSeq Sup;
NI data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, foo__EzBZaa239as9bFx8yeHDoTOw)(void);
N_LIB_PRIVATE N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_LIB_PRIVATE N_NOINLINE(void, raiseIndexError2)(NI i, NI n);
static N_INLINE(NimStringDesc*, X5BX5D___FPvLvuwqfYMFkcbGfPM8QQsystem)(NimStringDesc* s, tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA x);
N_LIB_PRIVATE N_NOINLINE(void, raiseOverflow)(void);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
N_LIB_PRIVATE N_NOINLINE(void, raiseRangeErrorI)(NI64 i, NI64 a, NI64 b);
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_HSlice__EE5dzjqoOrHT6HJhIPXAvA, dotdot___BokNSDrKN1xmV1nA01G9brAsystem)(NI a, NI b);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_LIB_PRIVATE N_NOINLINE(void, chckNil)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringDesc** args, NI argsLen_0);
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_6, "abcde", 5);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_8, "/home/runner/.choosenim/toolchains/nim-1.2.18/lib/system/iterat"
"ors.nim(189, 11) `len(a) == L` the length of the seq changed whi"
"le iterating over it", 147);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_10, "Passed", 6);
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_9 = {((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_10)}
;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
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(NimStringDesc*, X5BX5D___FPvLvuwqfYMFkcbGfPM8QQsystem)(NimStringDesc* s, tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA x) {
 NimStringDesc* result;
 NI a;
 NI L;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_2;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_3;
 nimfr_("[]", "/home/runner/.choosenim/toolchains/nim-1.2.18/lib/system.nim");
 result = NIM_NIL;
 a = x.a;
 if (nimSubInt(x.b, a, &TM__SRd76hP9cMfCzdUO857UhQQ_2)) { raiseOverflow(); };
 if (nimAddInt((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_2), ((NI) 1), &TM__SRd76hP9cMfCzdUO857UhQQ_3)) { raiseOverflow(); };
 L = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_3);
 if ((L) < ((NI) 0) || (L) > ((NI) IL64(9223372036854775807))){ raiseRangeErrorI(L, ((NI) 0), ((NI) IL64(9223372036854775807))); }
 result = mnewString(((NI) (L)));
 {
  NI i;
  NI i_2;
  i = (NI)0;
  i_2 = ((NI) 0);
  {
   while (1) {
    NI TM__SRd76hP9cMfCzdUO857UhQQ_4;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_5;
    if (!(i_2 < L)) goto LA3;
    i = i_2;
    if ((NU)(i) >= (NU)(result ? result->Sup.len : 0)){ raiseIndexError2(i,(result ? result->Sup.len : 0)-1); }
    if (nimAddInt(i, a, &TM__SRd76hP9cMfCzdUO857UhQQ_4)) { raiseOverflow(); };
    if ((NU)((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4)) >= (NU)(s ? s->Sup.len : 0)){ raiseIndexError2((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4),(s ? s->Sup.len : 0)-1); }
    result->data[i] = s->data[(NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4)];
    if (nimAddInt(i_2, ((NI) 1), &TM__SRd76hP9cMfCzdUO857UhQQ_5)) { raiseOverflow(); };
    i_2 = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_5);
   } LA3: ;
  }
 }
 popFrame();
 return result;
}
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {
 void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
 nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
static N_INLINE(tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA, dotdot___BokNSDrKN1xmV1nA01G9brAsystem)(NI a, NI b) {
 tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA result;
 nimfr_("..", "/home/runner/.choosenim/toolchains/nim-1.2.18/lib/system.nim");
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA));
 chckNil((void*)(&result));
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA));
 result.a = a;
 result.b = b;
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(void, foo__EzBZaa239as9bFx8yeHDoTOw)(void) {
 nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
 {
  NI _;
  tySequence__qwqHTkRvwhrRyENtudHQ7g* colontmp_;
  NI i;
  NI L;
  NI T2_;
  _ = (NI)0;
  colontmp_ = NIM_NIL;
  colontmp_ = (tySequence__qwqHTkRvwhrRyENtudHQ7g*) newSeq((&NTI__qwqHTkRvwhrRyENtudHQ7g_), 3);
  colontmp_->data[0] = ((NI) 1);
  colontmp_->data[1] = ((NI) 3);
  colontmp_->data[2] = ((NI) 5);
  i = ((NI) 0);
  T2_ = (colontmp_ ? colontmp_->Sup.len : 0);
  L = T2_;
  {
   while (1) {
    tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA T5_;
    NimStringDesc* T6_;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_7;
    if (!(i < L)) goto LA4;
    if ((NU)(i) >= (NU)(colontmp_ ? colontmp_->Sup.len : 0)){ raiseIndexError2(i,(colontmp_ ? colontmp_->Sup.len : 0)-1); }
    _ = colontmp_->data[i];
    T5_ = dotdot___BokNSDrKN1xmV1nA01G9brAsystem(((NI) 25), ((NI) 9));
    T6_ = NIM_NIL;
    T6_ = X5BX5D___FPvLvuwqfYMFkcbGfPM8QQsystem(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_6), T5_);
    (void)(T6_);
    goto LA1;
    if (nimAddInt(i, ((NI) 1), &TM__SRd76hP9cMfCzdUO857UhQQ_7)) { raiseOverflow(); };
    i = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_7);
    {
     NI T9_;
     T9_ = (colontmp_ ? colontmp_->Sup.len : 0);
     if (!!((T9_ == L))) goto LA10_;
     failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_8));
    }
    LA10_: ;
   } LA4: ;
  }
 } LA1: ;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_9, 1);
 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) {
{
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 foo__EzBZaa239as9bFx8yeHDoTOw();
 popFrame();
}
}

Stats

  • Started 2024-03-25T02:45:08
  • Finished 2024-03-25T02:45:08
  • Duration

AST

nnkStmtList.newTree(
  nnkProcDef.newTree(
    newIdentNode("foo"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkForStmt.newTree(
        newIdentNode("_"),
        nnkPrefix.newTree(
          newIdentNode("@"),
          nnkBracket.newTree(
            newLit(1),
            newLit(3),
            newLit(5)
          )
        ),
        nnkStmtList.newTree(
          nnkDiscardStmt.newTree(
            nnkBracketExpr.newTree(
              newLit("abcde"),
              nnkInfix.newTree(
                newIdentNode("..<"),
                newLit(25),
                newLit(10)
              )
            )
          ),
          nnkBreakStmt.newTree(
            newEmptyNode()
          )
        )
      ),
      nnkCommand.newTree(
        newIdentNode("echo"),
        newLit("Passed")
      )
    )
  ),
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkCall.newTree(
          newIdentNode("foo")
        )
      )
    )
  )
)
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/work/Nim/Nim/temp.nim foo
/home/runner/.choosenim/toolchains/nim-1.0.10/lib/system.nim []
/home/runner/.choosenim/toolchains/nim-1.0.10/lib/system/fatal.nim sysFatal
Error: unhandled exception: value out of range: -15 [RangeError]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp '

IR

Compiled filesize 92.56 Kb (94,784 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.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 NimStringDesc NimStringDesc;
typedef struct tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA;
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA {
NI a;
NI b;
};
typedef NimStringDesc* tyArray__nHXaesL0DJZHyVS07ARPRA[1];
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
TGenericSeq Sup;
NI data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, foo__EzBZaa239as9bFx8yeHDoTOw)(void);
N_NOINLINE(void, raiseIndexError2)(NI i, NI n);
static N_INLINE(NimStringDesc*, X5BX5D___FPvLvuwqfYMFkcbGfPM8QQsystem)(NimStringDesc* s, tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA x);
static N_INLINE(NI, subInt)(NI a, NI b);
N_NOINLINE(void, raiseOverflow)(void);
static N_INLINE(NI, addInt)(NI a, NI b);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
static N_INLINE(NI, chckRange)(NI i, NI a, NI b);
N_NOINLINE(void, raiseRangeError)(NI64 val);
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_HSlice__EE5dzjqoOrHT6HJhIPXAvA, dotdot___BokNSDrKN1xmV1nA01G9brAsystem)(NI a, NI b);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_NOINLINE(void, chckNil)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
N_NIMCALL(void, echoBinSafe)(NimStringDesc** args, NI argsLen_0);
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);
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
NIM_CONST struct {
TGenericSeq Sup;
NI data[3];
} TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{3, 3 | NIM_STRLIT_FLAG}, {((NI) 1),
((NI) 3),
((NI) 5)}};
NIM_CONST tySequence__qwqHTkRvwhrRyENtudHQ7g* TM__SRd76hP9cMfCzdUO857UhQQ_2 = ((tySequence__qwqHTkRvwhrRyENtudHQ7g*)&TM__SRd76hP9cMfCzdUO857UhQQ_3);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_8, "abcde", 5);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_10, "/home/runner/.choosenim/toolchains/nim-1.0.10/lib/system/iterat"
"ors.nim(189, 11) `len(a) == L` the length of the seq changed whi"
"le iterating over it", 147);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_12, "Passed", 6);
NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_11 = {((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_12)}
;
static N_INLINE(NI, subInt)(NI a, NI b) {	NI result;
{	result = (NI)0;
 result = (NI)((NU64)(a) - (NU64)(b));
 {
  NIM_BOOL T3_;
  T3_ = (NIM_BOOL)0;
  T3_ = (((NI) 0) <= (NI)(result ^ a));
  if (T3_) goto LA4_;
  T3_ = (((NI) 0) <= (NI)(result ^ (NI)((NU64) ~(b))));
  LA4_: ;
  if (!T3_) goto LA5_;
  goto BeforeRet_;
 }
 LA5_: ;
 raiseOverflow();
 }BeforeRet_: ;
 return result;
}
static N_INLINE(NI, addInt)(NI a, NI b) {	NI result;
{	result = (NI)0;
 result = (NI)((NU64)(a) + (NU64)(b));
 {
  NIM_BOOL T3_;
  T3_ = (NIM_BOOL)0;
  T3_ = (((NI) 0) <= (NI)(result ^ a));
  if (T3_) goto LA4_;
  T3_ = (((NI) 0) <= (NI)(result ^ b));
  LA4_: ;
  if (!T3_) goto LA5_;
  goto BeforeRet_;
 }
 LA5_: ;
 raiseOverflow();
 }BeforeRet_: ;
 return result;
}
static N_INLINE(NI, chckRange)(NI i, NI a, NI b) {	NI result;
{	result = (NI)0;
 {
  NIM_BOOL T3_;
  T3_ = (NIM_BOOL)0;
  T3_ = (a <= i);
  if (!(T3_)) goto LA4_;
  T3_ = (i <= b);
  LA4_: ;
  if (!T3_) goto LA5_;
  result = i;
  goto BeforeRet_;
 }
 goto LA1_;
 LA5_: ;
 {
  raiseRangeError(((NI64) (i)));
 }
 LA1_: ;
 }BeforeRet_: ;
 return result;
}
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(NimStringDesc*, X5BX5D___FPvLvuwqfYMFkcbGfPM8QQsystem)(NimStringDesc* s, tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA x) {	NimStringDesc* result;
 NI a;
 NI L;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_4;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_5;
 nimfr_("[]", "/home/runner/.choosenim/toolchains/nim-1.0.10/lib/system.nim");
 result = (NimStringDesc*)0;
 a = x.a;
 TM__SRd76hP9cMfCzdUO857UhQQ_4 = subInt(x.b, a);
 TM__SRd76hP9cMfCzdUO857UhQQ_5 = addInt((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4), ((NI) 1));
 L = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_5);
 result = mnewString(((NI)chckRange(L, ((NI) 0), ((NI) IL64(9223372036854775807)))));
 {
  NI i;
  NI i_2;
  i = (NI)0;
  i_2 = ((NI) 0);
  {
   while (1) {
    NI TM__SRd76hP9cMfCzdUO857UhQQ_6;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_7;
    if (!(i_2 < L)) goto LA3;
    i = i_2;
    if ((NU)(i) >= (NU)(result ? result->Sup.len : 0)) raiseIndexError2(i,(result ? result->Sup.len : 0)-1);
    TM__SRd76hP9cMfCzdUO857UhQQ_6 = addInt(i, a);
    if ((NU)((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_6)) >= (NU)(s ? s->Sup.len : 0)) raiseIndexError2((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_6),(s ? s->Sup.len : 0)-1);
    result->data[i] = s->data[(NI)(TM__SRd76hP9cMfCzdUO857UhQQ_6)];
    TM__SRd76hP9cMfCzdUO857UhQQ_7 = addInt(i_2, ((NI) 1));
    i_2 = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_7);
   } LA3: ;
  }
 }
 popFrame();
 return result;
}
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {	void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {	nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
static N_INLINE(tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA, dotdot___BokNSDrKN1xmV1nA01G9brAsystem)(NI a, NI b) {	tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA result;
 nimfr_("..", "/home/runner/.choosenim/toolchains/nim-1.0.10/lib/system.nim");
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA));
 chckNil((void*)(&result));
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA));
 result.a = a;
 result.b = b;
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(void, foo__EzBZaa239as9bFx8yeHDoTOw)(void) {	nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
 {
  NI _;
  NI i;
  NI L;
  _ = (NI)0;
  i = ((NI) 0);
  L = ((NI) 3);
  {
   while (1) {
    tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA T4_;
    NimStringDesc* T5_;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_9;
    if (!(i < L)) goto LA3;
    if ((NU)(i) >= (NU)(TM__SRd76hP9cMfCzdUO857UhQQ_2 ? TM__SRd76hP9cMfCzdUO857UhQQ_2->Sup.len : 0)) raiseIndexError2(i,(TM__SRd76hP9cMfCzdUO857UhQQ_2 ? TM__SRd76hP9cMfCzdUO857UhQQ_2->Sup.len : 0)-1);
    _ = TM__SRd76hP9cMfCzdUO857UhQQ_2->data[i];
    T4_ = dotdot___BokNSDrKN1xmV1nA01G9brAsystem(((NI) 25), ((NI) 9));
    T5_ = (NimStringDesc*)0;
    T5_ = X5BX5D___FPvLvuwqfYMFkcbGfPM8QQsystem(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_8), T4_);
    (void)(T5_);
    goto LA1;
    TM__SRd76hP9cMfCzdUO857UhQQ_9 = addInt(i, ((NI) 1));
    i = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_9);
    {
     if (!!((((NI) 3) == L))) goto LA8_;
     failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_10));
    }
    LA8_: ;
   } LA3: ;
  }
 } LA1: ;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_11, 1);
 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) {
{
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 foo__EzBZaa239as9bFx8yeHDoTOw();
 popFrame();
}
}

Stats

  • Started 2024-03-25T02:45:10
  • Finished 2024-03-25T02:45:11
  • Duration

AST

nnkStmtList.newTree(
  nnkProcDef.newTree(
    newIdentNode("foo"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkForStmt.newTree(
        newIdentNode("_"),
        nnkPrefix.newTree(
          newIdentNode("@"),
          nnkBracket.newTree(
            newLit(1),
            newLit(3),
            newLit(5)
          )
        ),
        nnkStmtList.newTree(
          nnkDiscardStmt.newTree(
            nnkBracketExpr.newTree(
              newLit("abcde"),
              nnkInfix.newTree(
                newIdentNode("..<"),
                newLit(25),
                newLit(10)
              )
            )
          ),
          nnkBreakStmt.newTree(
            newEmptyNode()
          )
        )
      ),
      nnkCommand.newTree(
        newIdentNode("echo"),
        newLit("Passed")
      )
    )
  ),
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkCall.newTree(
          newIdentNode("foo")
        )
      )
    )
  )
)
Stats
  • GCC 11.4.0
  • Clang 14.0.0
  • NodeJS 19.1
  • Created 2024-03-25T02:44:28Z
  • 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 17 minutes bisecting 7 commits at 0 commits per second

github-actions[bot] avatar Mar 25 '24 02:03 github-actions[bot]

!nim c --gc:refc

proc foo() =
  for _ in @[1, 3, 5]:
    discard "abcde"[25..<10]
    break
  echo "Passed"

when isMainModule:
  foo()

ringabout avatar Mar 25 '24 02:03 ringabout

:penguin: Linux bisect by @ringabout (member)
devel :-1: FAIL

Output

Error: Command failed: nim c --gc:refc --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
command line(1, 2) Warning: `gc:option` is deprecated; use `mm:option` instead [Deprecated]
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/work/Nim/Nim/temp.nim foo
/home/runner/.choosenim/toolchains/nim-#devel/lib/system/indices.nim []
/home/runner/.choosenim/toolchains/nim-#devel/lib/system/fatal.nim sysFatal
Error: unhandled exception: value out of range: -15 notin 0 .. 9223372036854775807 [RangeDefect]
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 106.84 Kb (109,400 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.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 TGenericSeq TGenericSeq;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct NimStringDesc NimStringDesc;
typedef struct tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA;
struct TGenericSeq {
 NI len;
 NI reserved;
};
typedef NU8 tyEnum_TNimKind__ClA3xuAkmIebTG0trkhp7w;
typedef NU8 tySet_tyEnum_TNimTypeFlag__lkZ7PEzlp5IUJlUpsPWkog;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p_p0, NI op_p1);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p_p0);
struct TNimType {
 NI size;
 NI align;
 tyEnum_TNimKind__ClA3xuAkmIebTG0trkhp7w kind;
 tySet_tyEnum_TNimTypeFlag__lkZ7PEzlp5IUJlUpsPWkog flags;
 TNimType* base;
 TNimNode* node;
 void* finalizer;
 tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
 tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU8 tyEnum_TNimNodeKind__IIT6i6x8UigmmmGU9bo5uUw;
struct TNimNode {
 tyEnum_TNimNodeKind__IIT6i6x8UigmmmGU9bo5uUw kind;
 NI offset;
 TNimType* typ;
 NCSTRING name;
 NI len;
 TNimNode** sons;
};
struct NimStringDesc {
TGenericSeq Sup;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA {
 NI a;
 NI b;
};
typedef NimStringDesc* tyArray__nHXaesL0DJZHyVS07ARPRA[1];
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
TGenericSeq Sup;
NI data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_u1)(void);
N_LIB_PRIVATE N_NIMCALL(void*, newSeq)(TNimType* typ_p0, NI len_p1);
static N_NIMCALL(void, Marker_tySequence__qwqHTkRvwhrRyENtudHQ7g)(void* p, NI op);
N_LIB_PRIVATE N_NOINLINE(void, raiseIndexError2)(NI i_p0, NI n_p1);
static N_INLINE(NimStringDesc*, X5BX5D___temp_u84)(NimStringDesc* s_p0, tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA x_p1);
N_LIB_PRIVATE N_NOINLINE(void, raiseOverflow)(void);
N_NIMCALL(NimStringDesc*, mnewString)(NI len_p0);
N_LIB_PRIVATE N_NOINLINE(void, raiseRangeErrorI)(NI64 i_p0, NI64 a_p1, NI64 b_p2);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u3151)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA, dotdot___temp_u33)(NI a_p0, NI b_p1);
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1);
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u69)(NimStringDesc* msg_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringDesc** args_p0, NI args_p0Len_0);
static N_INLINE(void, initStackBottomWith)(void* locals_p0);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom_p0);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystematsexceptionsdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_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 NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_6, "abcde", 5);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_7, "/home/runner/.choosenim/toolchains/nim-#devel/lib/system/iterators.nim(254, 11) `len(a) == L` the length of the seq changed while iterating over it", 147);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_9, "Passed", 6);
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_8 = {((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_9)}
;
extern NIM_THREADVAR TFrame* framePtr__system_u2625;
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_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u2625 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s_p0).calldepth = ((NI16)0);
 }
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u2625).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u2625;
 framePtr__system_u2625 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
  callDepthLimitReached__system_u3151();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u2625 = (*framePtr__system_u2625).prev;
}
static N_INLINE(NimStringDesc*, X5BX5D___temp_u84)(NimStringDesc* s_p0, tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA x_p1) {
 NimStringDesc* result;
 NI a;
 NI L;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_2;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_3;
 nimfr_("[]", "/home/runner/.choosenim/toolchains/nim-#devel/lib/system/indices.nim");
 result = NIM_NIL;
 a = x_p1.a;
 if (nimSubInt(x_p1.b, a, &TM__SRd76hP9cMfCzdUO857UhQQ_2)) { raiseOverflow(); 	};
 if (nimAddInt((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_2), ((NI)1), &TM__SRd76hP9cMfCzdUO857UhQQ_3)) { raiseOverflow(); 	};
 L = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_3);
 if ((L) < ((NI)0) || (L) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI(L, ((NI)0), ((NI)IL64(9223372036854775807))); 	}
 result = mnewString(((NI) (L)));
 {
  NI i;
  NI i_2;
  i = (NI)0;
  i_2 = ((NI)0);
  {
   while (1) {
    NI TM__SRd76hP9cMfCzdUO857UhQQ_4;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_5;
    if (!(i_2 < L)) goto LA3;
    i = i_2;
    if (i < 0 || i >= (result ? result->Sup.len : 0)){ raiseIndexError2(i,(result ? result->Sup.len : 0)-1); 				}
    if (nimAddInt(i, a, &TM__SRd76hP9cMfCzdUO857UhQQ_4)) { raiseOverflow(); 				};
    if ((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4) < 0 || (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4) >= (s_p0 ? s_p0->Sup.len : 0)){ raiseIndexError2((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4),(s_p0 ? s_p0->Sup.len : 0)-1); 				}
    result->data[i] = s_p0->data[(NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4)];
    if (nimAddInt(i_2, ((NI)1), &TM__SRd76hP9cMfCzdUO857UhQQ_5)) { raiseOverflow(); 				};
    i_2 = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_5);
   } LA3: ;
  }
 }
 popFrame();
 return result;
}
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2) {
 void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a_p0, v_p1, ((size_t) (size_p2)));
}
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) {
 nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
}
static N_INLINE(tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA, dotdot___temp_u33)(NI a_p0, NI b_p1) {
 tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA result;
 nimfr_("..", "/home/runner/.choosenim/toolchains/nim-#devel/lib/system.nim");
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA));
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA));
 result.a = a_p0;
 result.b = b_p1;
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_u1)(void) {
 nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
 {
  NI* _;
  tySequence__qwqHTkRvwhrRyENtudHQ7g* colontmp_;
  NI i;
  NI L;
  NI T2_;
  _ = (NI*)0;
  colontmp_ = NIM_NIL;
  colontmp_ = (tySequence__qwqHTkRvwhrRyENtudHQ7g*) newSeq((&NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_), 3);
  colontmp_->data[0] = ((NI)1);
  colontmp_->data[1] = ((NI)3);
  colontmp_->data[2] = ((NI)5);
  i = ((NI)0);
  T2_ = (colontmp_ ? colontmp_->Sup.len : 0);
  L = T2_;
  {
   while (1) {
    tyObject_HSlice__vuwRJgdcPWbEO9cIdyL6bxA T5_;
    NimStringDesc* T6_;
    if (!(i < L)) goto LA4;
    if (i < 0 || i >= (colontmp_ ? colontmp_->Sup.len : 0)){ raiseIndexError2(i,(colontmp_ ? colontmp_->Sup.len : 0)-1); 				}
    _ = (&colontmp_->data[i]);
    T5_ = dotdot___temp_u33(((NI)25), ((NI)9));
    T6_ = NIM_NIL;
    T6_ = X5BX5D___temp_u84(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_6), T5_);
    (void)(T6_);
    goto LA1;
    i += ((NI)1);
    {
     NI T9_;
     T9_ = (colontmp_ ? colontmp_->Sup.len : 0);
     if (!!((T9_ == L))) goto LA10_;
     failedAssertImpl__stdZassertions_u69(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_7));
    }
LA10_: ;
   } LA4: ;
  }
 } LA1: ;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_8, 1);
 popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals_p0) {
 nimGC_setStackBottom(locals_p0);
}
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 1
 void (*volatile inner)(void);
 inner = PreMainInner;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystematsexceptionsdotnim_DatInit000();
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_DatInit000();
 initStackBottomWith((void *)&inner);
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_Init000();
 atmtempdotnim_DatInit000();
 (*inner)();
#else
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystematsexceptionsdotnim_DatInit000();
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_DatInit000();
 initStackBottomWith((void *)&inner);
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_Init000();
 atmtempdotnim_DatInit000();
 PreMainInner();
#endif
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
 NimMainModule();
}
N_CDECL(void, NimMain)(void) {
#if 1
 void (*volatile inner)(void);
 PreMain();
 inner = NimMainInner;
 initStackBottomWith((void *)&inner);
 (*inner)();
#else
 PreMain();
 initStackBottomWith((void *)&inner);
 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) {
{
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 foo__temp_u1();
 popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void) {
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.size = sizeof(tySequence__qwqHTkRvwhrRyENtudHQ7g*);
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.align = NIM_ALIGNOF(tySequence__qwqHTkRvwhrRyENtudHQ7g*);
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.kind = 24;
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.base = (&NTIint__rR5Bzr1D5krxoo1NcNyeMA_);
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.flags = 2;
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.marker = Marker_tySequence__qwqHTkRvwhrRyENtudHQ7g;
}

Stats

  • Started 2024-03-25T02:46:52
  • Finished 2024-03-25T02:46:52
  • Duration

AST

nnkStmtList.newTree(
  nnkProcDef.newTree(
    newIdentNode("foo"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkForStmt.newTree(
        newIdentNode("_"),
        nnkPrefix.newTree(
          newIdentNode("@"),
          nnkBracket.newTree(
            newLit(1),
            newLit(3),
            newLit(5)
          )
        ),
        nnkStmtList.newTree(
          nnkDiscardStmt.newTree(
            nnkBracketExpr.newTree(
              newLit("abcde"),
              nnkInfix.newTree(
                newIdentNode("..<"),
                newLit(25),
                newLit(10)
              )
            )
          ),
          nnkBreakStmt.newTree(
            newEmptyNode()
          )
        )
      ),
      nnkCommand.newTree(
        newIdentNode("echo"),
        newLit("Passed")
      )
    )
  ),
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkCall.newTree(
          newIdentNode("foo")
        )
      )
    )
  )
)
stable :-1: FAIL

Output

Error: Command failed: nim c --gc:refc --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
command line(1, 2) Warning: `gc:option` is deprecated; use `mm:option` instead [Deprecated]
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/work/Nim/Nim/temp.nim foo
/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system/indices.nim []
/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system/fatal.nim sysFatal
Error: unhandled exception: value out of range: -15 notin 0 .. 9223372036854775807 [RangeDefect]
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 106.81 Kb (109,376 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.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 TGenericSeq TGenericSeq;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct NimStringDesc NimStringDesc;
typedef struct tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ;
struct TGenericSeq {
 NI len;
 NI reserved;
};
typedef NU8 tyEnum_TNimKind__tkzilgOTS67iC3a7h549aiw;
typedef NU8 tySet_tyEnum_TNimTypeFlag__9aI2dAe9cy2LQ7Dp9cypyl4rA;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p_p0, NI op_p1);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p_p0);
struct TNimType {
 NI size;
 NI align;
 tyEnum_TNimKind__tkzilgOTS67iC3a7h549aiw kind;
 tySet_tyEnum_TNimTypeFlag__9aI2dAe9cy2LQ7Dp9cypyl4rA flags;
 TNimType* base;
 TNimNode* node;
 void* finalizer;
 tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
 tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU8 tyEnum_TNimNodeKind__wYCe8vXIm9cHBnYL2fAWT2A;
struct TNimNode {
 tyEnum_TNimNodeKind__wYCe8vXIm9cHBnYL2fAWT2A kind;
 NI offset;
 TNimType* typ;
 NCSTRING name;
 NI len;
 TNimNode** sons;
};
struct NimStringDesc {
TGenericSeq Sup;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ {
 NI a;
 NI b;
};
typedef NimStringDesc* tyArray__nHXaesL0DJZHyVS07ARPRA[1];
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
TGenericSeq Sup;
NI data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_u1)(void);
N_LIB_PRIVATE N_NIMCALL(void*, newSeq)(TNimType* typ_p0, NI len_p1);
static N_NIMCALL(void, Marker_tySequence__qwqHTkRvwhrRyENtudHQ7g)(void* p, NI op);
N_LIB_PRIVATE N_NOINLINE(void, raiseIndexError2)(NI i_p0, NI n_p1);
static N_INLINE(NimStringDesc*, X5BX5D___temp_u86)(NimStringDesc* s_p0, tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ x_p1);
N_LIB_PRIVATE N_NOINLINE(void, raiseOverflow)(void);
N_NIMCALL(NimStringDesc*, mnewString)(NI len_p0);
N_LIB_PRIVATE N_NOINLINE(void, raiseRangeErrorI)(NI64 i_p0, NI64 a_p1, NI64 b_p2);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u3134)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ, dotdot___temp_u35)(NI a_p0, NI b_p1);
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1);
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u85)(NimStringDesc* msg_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringDesc** args_p0, NI args_p0Len_0);
static N_INLINE(void, initStackBottomWith)(void* locals_p0);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom_p0);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystematsexceptionsdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_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 NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_6, "abcde", 5);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_8, "/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system/iterators.nim(246, 11) `len(a) == L` the length of the seq changed while iterating over it", 146);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_10, "Passed", 6);
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_9 = {((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_10)}
;
extern NIM_THREADVAR TFrame* framePtr__system_u2601;
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_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u2601 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s_p0).calldepth = ((NI16)0);
 }
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u2601).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u2601;
 framePtr__system_u2601 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
  callDepthLimitReached__system_u3134();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u2601 = (*framePtr__system_u2601).prev;
}
static N_INLINE(NimStringDesc*, X5BX5D___temp_u86)(NimStringDesc* s_p0, tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ x_p1) {
 NimStringDesc* result;
 NI a;
 NI L;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_2;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_3;
 nimfr_("[]", "/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system/indices.nim");
 result = NIM_NIL;
 a = x_p1.a;
 if (nimSubInt(x_p1.b, a, &TM__SRd76hP9cMfCzdUO857UhQQ_2)) { raiseOverflow(); 	};
 if (nimAddInt((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_2), ((NI)1), &TM__SRd76hP9cMfCzdUO857UhQQ_3)) { raiseOverflow(); 	};
 L = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_3);
 if ((L) < ((NI)0) || (L) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI(L, ((NI)0), ((NI)IL64(9223372036854775807))); 	}
 result = mnewString(((NI) (L)));
 {
  NI i;
  NI i_2;
  i = (NI)0;
  i_2 = ((NI)0);
  {
   while (1) {
    NI TM__SRd76hP9cMfCzdUO857UhQQ_4;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_5;
    if (!(i_2 < L)) goto LA3;
    i = i_2;
    if (i < 0 || i >= (result ? result->Sup.len : 0)){ raiseIndexError2(i,(result ? result->Sup.len : 0)-1); 				}
    if (nimAddInt(i, a, &TM__SRd76hP9cMfCzdUO857UhQQ_4)) { raiseOverflow(); 				};
    if ((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4) < 0 || (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4) >= (s_p0 ? s_p0->Sup.len : 0)){ raiseIndexError2((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4),(s_p0 ? s_p0->Sup.len : 0)-1); 				}
    result->data[i] = s_p0->data[(NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4)];
    if (nimAddInt(i_2, ((NI)1), &TM__SRd76hP9cMfCzdUO857UhQQ_5)) { raiseOverflow(); 				};
    i_2 = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_5);
   } LA3: ;
  }
 }
 popFrame();
 return result;
}
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2) {
 void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a_p0, v_p1, ((size_t) (size_p2)));
}
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) {
 nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
}
static N_INLINE(tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ, dotdot___temp_u35)(NI a_p0, NI b_p1) {
 tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ result;
 nimfr_("..", "/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system.nim");
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ));
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ));
 result.a = a_p0;
 result.b = b_p1;
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_u1)(void) {
 nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
 {
  NI* _;
  tySequence__qwqHTkRvwhrRyENtudHQ7g* colontmp_;
  NI i;
  NI L;
  NI T2_;
  _ = (NI*)0;
  colontmp_ = NIM_NIL;
  colontmp_ = (tySequence__qwqHTkRvwhrRyENtudHQ7g*) newSeq((&NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_), 3);
  colontmp_->data[0] = ((NI)1);
  colontmp_->data[1] = ((NI)3);
  colontmp_->data[2] = ((NI)5);
  i = ((NI)0);
  T2_ = (colontmp_ ? colontmp_->Sup.len : 0);
  L = T2_;
  {
   while (1) {
    tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ T5_;
    NimStringDesc* T6_;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_7;
    if (!(i < L)) goto LA4;
    if (i < 0 || i >= (colontmp_ ? colontmp_->Sup.len : 0)){ raiseIndexError2(i,(colontmp_ ? colontmp_->Sup.len : 0)-1); 				}
    _ = (&colontmp_->data[i]);
    T5_ = dotdot___temp_u35(((NI)25), ((NI)9));
    T6_ = NIM_NIL;
    T6_ = X5BX5D___temp_u86(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_6), T5_);
    (void)(T6_);
    goto LA1;
    if (nimAddInt(i, ((NI)1), &TM__SRd76hP9cMfCzdUO857UhQQ_7)) { raiseOverflow(); 				};
    i = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_7);
    {
     NI T9_;
     T9_ = (colontmp_ ? colontmp_->Sup.len : 0);
     if (!!((T9_ == L))) goto LA10_;
     failedAssertImpl__stdZassertions_u85(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_8));
    }
LA10_: ;
   } LA4: ;
  }
 } LA1: ;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_9, 1);
 popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals_p0) {
 nimGC_setStackBottom(locals_p0);
}
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 1
 void (*volatile inner)(void);
 inner = PreMainInner;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystematsexceptionsdotnim_DatInit000();
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_DatInit000();
 initStackBottomWith((void *)&inner);
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_Init000();
 atmtempdotnim_DatInit000();
 (*inner)();
#else
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystematsexceptionsdotnim_DatInit000();
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_DatInit000();
 initStackBottomWith((void *)&inner);
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_Init000();
 atmtempdotnim_DatInit000();
 PreMainInner();
#endif
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
 NimMainModule();
}
N_CDECL(void, NimMain)(void) {
#if 1
 void (*volatile inner)(void);
 PreMain();
 inner = NimMainInner;
 initStackBottomWith((void *)&inner);
 (*inner)();
#else
 PreMain();
 initStackBottomWith((void *)&inner);
 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) {
{
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 foo__temp_u1();
 popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void) {
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.size = sizeof(tySequence__qwqHTkRvwhrRyENtudHQ7g*);
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.align = NIM_ALIGNOF(tySequence__qwqHTkRvwhrRyENtudHQ7g*);
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.kind = 24;
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.base = (&NTIint__rR5Bzr1D5krxoo1NcNyeMA_);
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.flags = 2;
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.marker = Marker_tySequence__qwqHTkRvwhrRyENtudHQ7g;
}

Stats

  • Started 2024-03-25T02:46:53
  • Finished 2024-03-25T02:46:53
  • Duration

AST

nnkStmtList.newTree(
  nnkProcDef.newTree(
    newIdentNode("foo"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkForStmt.newTree(
        newIdentNode("_"),
        nnkPrefix.newTree(
          newIdentNode("@"),
          nnkBracket.newTree(
            newLit(1),
            newLit(3),
            newLit(5)
          )
        ),
        nnkStmtList.newTree(
          nnkDiscardStmt.newTree(
            nnkBracketExpr.newTree(
              newLit("abcde"),
              nnkInfix.newTree(
                newIdentNode("..<"),
                newLit(25),
                newLit(10)
              )
            )
          ),
          nnkBreakStmt.newTree(
            newEmptyNode()
          )
        )
      ),
      nnkCommand.newTree(
        newIdentNode("echo"),
        newLit("Passed")
      )
    )
  ),
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkCall.newTree(
          newIdentNode("foo")
        )
      )
    )
  )
)
2.0.2 :-1: FAIL

Output

Error: Command failed: nim c --gc:refc --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
command line(1, 2) Warning: `gc:option` is deprecated; use `mm:option` instead [Deprecated]
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/work/Nim/Nim/temp.nim foo
/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system/indices.nim []
/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system/fatal.nim sysFatal
Error: unhandled exception: value out of range: -15 notin 0 .. 9223372036854775807 [RangeDefect]
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 106.81 Kb (109,376 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.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 TGenericSeq TGenericSeq;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct NimStringDesc NimStringDesc;
typedef struct tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ;
struct TGenericSeq {
 NI len;
 NI reserved;
};
typedef NU8 tyEnum_TNimKind__tkzilgOTS67iC3a7h549aiw;
typedef NU8 tySet_tyEnum_TNimTypeFlag__9aI2dAe9cy2LQ7Dp9cypyl4rA;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p_p0, NI op_p1);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p_p0);
struct TNimType {
 NI size;
 NI align;
 tyEnum_TNimKind__tkzilgOTS67iC3a7h549aiw kind;
 tySet_tyEnum_TNimTypeFlag__9aI2dAe9cy2LQ7Dp9cypyl4rA flags;
 TNimType* base;
 TNimNode* node;
 void* finalizer;
 tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
 tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU8 tyEnum_TNimNodeKind__wYCe8vXIm9cHBnYL2fAWT2A;
struct TNimNode {
 tyEnum_TNimNodeKind__wYCe8vXIm9cHBnYL2fAWT2A kind;
 NI offset;
 TNimType* typ;
 NCSTRING name;
 NI len;
 TNimNode** sons;
};
struct NimStringDesc {
TGenericSeq Sup;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ {
 NI a;
 NI b;
};
typedef NimStringDesc* tyArray__nHXaesL0DJZHyVS07ARPRA[1];
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
TGenericSeq Sup;
NI data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_u1)(void);
N_LIB_PRIVATE N_NIMCALL(void*, newSeq)(TNimType* typ_p0, NI len_p1);
static N_NIMCALL(void, Marker_tySequence__qwqHTkRvwhrRyENtudHQ7g)(void* p, NI op);
N_LIB_PRIVATE N_NOINLINE(void, raiseIndexError2)(NI i_p0, NI n_p1);
static N_INLINE(NimStringDesc*, X5BX5D___temp_u86)(NimStringDesc* s_p0, tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ x_p1);
N_LIB_PRIVATE N_NOINLINE(void, raiseOverflow)(void);
N_NIMCALL(NimStringDesc*, mnewString)(NI len_p0);
N_LIB_PRIVATE N_NOINLINE(void, raiseRangeErrorI)(NI64 i_p0, NI64 a_p1, NI64 b_p2);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u3134)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ, dotdot___temp_u35)(NI a_p0, NI b_p1);
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1);
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u85)(NimStringDesc* msg_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringDesc** args_p0, NI args_p0Len_0);
static N_INLINE(void, initStackBottomWith)(void* locals_p0);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom_p0);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystematsexceptionsdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_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 NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_6, "abcde", 5);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_8, "/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system/iterators.nim(246, 11) `len(a) == L` the length of the seq changed while iterating over it", 146);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_10, "Passed", 6);
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_9 = {((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_10)}
;
extern NIM_THREADVAR TFrame* framePtr__system_u2601;
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_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u2601 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s_p0).calldepth = ((NI16)0);
 }
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u2601).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u2601;
 framePtr__system_u2601 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
  callDepthLimitReached__system_u3134();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u2601 = (*framePtr__system_u2601).prev;
}
static N_INLINE(NimStringDesc*, X5BX5D___temp_u86)(NimStringDesc* s_p0, tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ x_p1) {
 NimStringDesc* result;
 NI a;
 NI L;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_2;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_3;
 nimfr_("[]", "/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system/indices.nim");
 result = NIM_NIL;
 a = x_p1.a;
 if (nimSubInt(x_p1.b, a, &TM__SRd76hP9cMfCzdUO857UhQQ_2)) { raiseOverflow(); 	};
 if (nimAddInt((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_2), ((NI)1), &TM__SRd76hP9cMfCzdUO857UhQQ_3)) { raiseOverflow(); 	};
 L = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_3);
 if ((L) < ((NI)0) || (L) > ((NI)IL64(9223372036854775807))){ raiseRangeErrorI(L, ((NI)0), ((NI)IL64(9223372036854775807))); 	}
 result = mnewString(((NI) (L)));
 {
  NI i;
  NI i_2;
  i = (NI)0;
  i_2 = ((NI)0);
  {
   while (1) {
    NI TM__SRd76hP9cMfCzdUO857UhQQ_4;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_5;
    if (!(i_2 < L)) goto LA3;
    i = i_2;
    if (i < 0 || i >= (result ? result->Sup.len : 0)){ raiseIndexError2(i,(result ? result->Sup.len : 0)-1); 				}
    if (nimAddInt(i, a, &TM__SRd76hP9cMfCzdUO857UhQQ_4)) { raiseOverflow(); 				};
    if ((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4) < 0 || (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4) >= (s_p0 ? s_p0->Sup.len : 0)){ raiseIndexError2((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4),(s_p0 ? s_p0->Sup.len : 0)-1); 				}
    result->data[i] = s_p0->data[(NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4)];
    if (nimAddInt(i_2, ((NI)1), &TM__SRd76hP9cMfCzdUO857UhQQ_5)) { raiseOverflow(); 				};
    i_2 = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_5);
   } LA3: ;
  }
 }
 popFrame();
 return result;
}
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2) {
 void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a_p0, v_p1, ((size_t) (size_p2)));
}
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) {
 nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
}
static N_INLINE(tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ, dotdot___temp_u35)(NI a_p0, NI b_p1) {
 tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ result;
 nimfr_("..", "/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system.nim");
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ));
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ));
 result.a = a_p0;
 result.b = b_p1;
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_u1)(void) {
 nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
 {
  NI* _;
  tySequence__qwqHTkRvwhrRyENtudHQ7g* colontmp_;
  NI i;
  NI L;
  NI T2_;
  _ = (NI*)0;
  colontmp_ = NIM_NIL;
  colontmp_ = (tySequence__qwqHTkRvwhrRyENtudHQ7g*) newSeq((&NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_), 3);
  colontmp_->data[0] = ((NI)1);
  colontmp_->data[1] = ((NI)3);
  colontmp_->data[2] = ((NI)5);
  i = ((NI)0);
  T2_ = (colontmp_ ? colontmp_->Sup.len : 0);
  L = T2_;
  {
   while (1) {
    tyObject_HSlice__Lvf9biZHqTuFCIXux82nvqQ T5_;
    NimStringDesc* T6_;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_7;
    if (!(i < L)) goto LA4;
    if (i < 0 || i >= (colontmp_ ? colontmp_->Sup.len : 0)){ raiseIndexError2(i,(colontmp_ ? colontmp_->Sup.len : 0)-1); 				}
    _ = (&colontmp_->data[i]);
    T5_ = dotdot___temp_u35(((NI)25), ((NI)9));
    T6_ = NIM_NIL;
    T6_ = X5BX5D___temp_u86(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_6), T5_);
    (void)(T6_);
    goto LA1;
    if (nimAddInt(i, ((NI)1), &TM__SRd76hP9cMfCzdUO857UhQQ_7)) { raiseOverflow(); 				};
    i = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_7);
    {
     NI T9_;
     T9_ = (colontmp_ ? colontmp_->Sup.len : 0);
     if (!!((T9_ == L))) goto LA10_;
     failedAssertImpl__stdZassertions_u85(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_8));
    }
LA10_: ;
   } LA4: ;
  }
 } LA1: ;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_9, 1);
 popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals_p0) {
 nimGC_setStackBottom(locals_p0);
}
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 1
 void (*volatile inner)(void);
 inner = PreMainInner;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystematsexceptionsdotnim_DatInit000();
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_DatInit000();
 initStackBottomWith((void *)&inner);
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_Init000();
 atmtempdotnim_DatInit000();
 (*inner)();
#else
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystematsexceptionsdotnim_DatInit000();
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_DatInit000();
 initStackBottomWith((void *)&inner);
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_Init000();
 atmtempdotnim_DatInit000();
 PreMainInner();
#endif
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
 NimMainModule();
}
N_CDECL(void, NimMain)(void) {
#if 1
 void (*volatile inner)(void);
 PreMain();
 inner = NimMainInner;
 initStackBottomWith((void *)&inner);
 (*inner)();
#else
 PreMain();
 initStackBottomWith((void *)&inner);
 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) {
{
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 foo__temp_u1();
 popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void) {
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.size = sizeof(tySequence__qwqHTkRvwhrRyENtudHQ7g*);
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.align = NIM_ALIGNOF(tySequence__qwqHTkRvwhrRyENtudHQ7g*);
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.kind = 24;
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.base = (&NTIint__rR5Bzr1D5krxoo1NcNyeMA_);
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.flags = 2;
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.marker = Marker_tySequence__qwqHTkRvwhrRyENtudHQ7g;
}

Stats

  • Started 2024-03-25T02:46:54
  • Finished 2024-03-25T02:46:54
  • Duration

AST

nnkStmtList.newTree(
  nnkProcDef.newTree(
    newIdentNode("foo"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkForStmt.newTree(
        newIdentNode("_"),
        nnkPrefix.newTree(
          newIdentNode("@"),
          nnkBracket.newTree(
            newLit(1),
            newLit(3),
            newLit(5)
          )
        ),
        nnkStmtList.newTree(
          nnkDiscardStmt.newTree(
            nnkBracketExpr.newTree(
              newLit("abcde"),
              nnkInfix.newTree(
                newIdentNode("..<"),
                newLit(25),
                newLit(10)
              )
            )
          ),
          nnkBreakStmt.newTree(
            newEmptyNode()
          )
        )
      ),
      nnkCommand.newTree(
        newIdentNode("echo"),
        newLit("Passed")
      )
    )
  ),
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkCall.newTree(
          newIdentNode("foo")
        )
      )
    )
  )
)
1.6.14 :-1: FAIL

Output

Error: Command failed: nim c --gc:refc --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/work/Nim/Nim/temp.nim foo
/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system.nim []
/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system/fatal.nim sysFatal
Error: unhandled exception: value out of range: -15 notin 0 .. 9223372036854775807 [RangeDefect]
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 104.76 Kb (107,272 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.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 NimStringDesc NimStringDesc;
typedef struct tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ;
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;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ {
NI a;
NI b;
};
typedef NimStringDesc* tyArray__nHXaesL0DJZHyVS07ARPRA[1];
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
TGenericSeq Sup;
NI data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_1)(void);
N_LIB_PRIVATE N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
static N_NIMCALL(void, Marker_tySequence__qwqHTkRvwhrRyENtudHQ7g)(void* p, NI op);
N_LIB_PRIVATE N_NOINLINE(void, raiseIndexError2)(NI i, NI n);
static N_INLINE(NimStringDesc*, X5BX5D___temp_69)(NimStringDesc* s, tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ x);
N_LIB_PRIVATE N_NOINLINE(void, raiseOverflow)(void);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
N_LIB_PRIVATE N_NOINLINE(void, raiseRangeErrorI)(NI64 i, NI64 a, NI64 b);
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_HSlice__ZwT1AdT5SpvzfXpu31YpBQ, dotdot___temp_33)(NI a, NI b);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__systemZassertions_56)(NimStringDesc* msg);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringDesc** args, NI argsLen_0);
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 NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_6, "abcde", 5);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_8, "/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system/iterators.nim(240, 11) `len(a) == L` the length of the seq changed while iterating over it", 147);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_10, "Passed", 6);
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_9 = {((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_10)}
;
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;
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_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(NimStringDesc*, X5BX5D___temp_69)(NimStringDesc* s, tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ x) {
 NimStringDesc* result;
 NI a;
 NI L;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_2;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_3;
 nimfr_("[]", "/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system.nim");
 result = NIM_NIL;
 a = x.a;
 if (nimSubInt(x.b, a, &TM__SRd76hP9cMfCzdUO857UhQQ_2)) { raiseOverflow(); };
 if (nimAddInt((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_2), ((NI) 1), &TM__SRd76hP9cMfCzdUO857UhQQ_3)) { raiseOverflow(); };
 L = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_3);
 if ((L) < ((NI) 0) || (L) > ((NI) IL64(9223372036854775807))){ raiseRangeErrorI(L, ((NI) 0), ((NI) IL64(9223372036854775807))); }
 result = mnewString(((NI) (L)));
 {
  NI i;
  NI i_2;
  i = (NI)0;
  i_2 = ((NI) 0);
  {
   while (1) {
    NI TM__SRd76hP9cMfCzdUO857UhQQ_4;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_5;
    if (!(i_2 < L)) goto LA3;
    i = i_2;
    if (i < 0 || i >= (result ? result->Sup.len : 0)){ raiseIndexError2(i,(result ? result->Sup.len : 0)-1); }
    if (nimAddInt(i, a, &TM__SRd76hP9cMfCzdUO857UhQQ_4)) { raiseOverflow(); };
    if ((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4) < 0 || (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4) >= (s ? s->Sup.len : 0)){ raiseIndexError2((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4),(s ? s->Sup.len : 0)-1); }
    result->data[i] = s->data[(NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4)];
    if (nimAddInt(i_2, ((NI) 1), &TM__SRd76hP9cMfCzdUO857UhQQ_5)) { raiseOverflow(); };
    i_2 = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_5);
   } LA3: ;
  }
 }
 popFrame();
 return result;
}
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size) {
 void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
 nimSetMem__systemZmemory_7(p, ((int) 0), size);
}
static N_INLINE(tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ, dotdot___temp_33)(NI a, NI b) {
 tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ result;
 nimfr_("..", "/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system.nim");
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ));
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ));
 result.a = a;
 result.b = b;
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_1)(void) {
 nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
 {
  NI* _;
  tySequence__qwqHTkRvwhrRyENtudHQ7g* colontmp_;
  NI i;
  NI L;
  NI T2_;
  _ = (NI*)0;
  colontmp_ = NIM_NIL;
  colontmp_ = (tySequence__qwqHTkRvwhrRyENtudHQ7g*) newSeq((&NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_), 3);
  colontmp_->data[0] = ((NI) 1);
  colontmp_->data[1] = ((NI) 3);
  colontmp_->data[2] = ((NI) 5);
  i = ((NI) 0);
  T2_ = (colontmp_ ? colontmp_->Sup.len : 0);
  L = T2_;
  {
   while (1) {
    tyObject_HSlice__ZwT1AdT5SpvzfXpu31YpBQ T5_;
    NimStringDesc* T6_;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_7;
    if (!(i < L)) goto LA4;
    if (i < 0 || i >= (colontmp_ ? colontmp_->Sup.len : 0)){ raiseIndexError2(i,(colontmp_ ? colontmp_->Sup.len : 0)-1); }
    _ = (&colontmp_->data[i]);
    T5_ = dotdot___temp_33(((NI) 25), ((NI) 9));
    T6_ = NIM_NIL;
    T6_ = X5BX5D___temp_69(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_6), T5_);
    (void)(T6_);
    goto LA1;
    if (nimAddInt(i, ((NI) 1), &TM__SRd76hP9cMfCzdUO857UhQQ_7)) { raiseOverflow(); };
    i = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_7);
    {
     NI T9_;
     T9_ = (colontmp_ ? colontmp_->Sup.len : 0);
     if (!!((T9_ == L))) goto LA10_;
     failedAssertImpl__systemZassertions_56(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_8));
    }
    LA10_: ;
   } LA4: ;
  }
 } LA1: ;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_9, 1);
 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) {
{
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 foo__temp_1();
 popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void) {
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.size = sizeof(tySequence__qwqHTkRvwhrRyENtudHQ7g*);
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.align = NIM_ALIGNOF(tySequence__qwqHTkRvwhrRyENtudHQ7g*);
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.kind = 24;
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.base = (&NTIint__rR5Bzr1D5krxoo1NcNyeMA_);
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.flags = 2;
NTIseqLintT__qwqHTkRvwhrRyENtudHQ7g_.marker = Marker_tySequence__qwqHTkRvwhrRyENtudHQ7g;
}

Stats

  • Started 2024-03-25T02:46:57
  • Finished 2024-03-25T02:46:58
  • Duration

AST

nnkStmtList.newTree(
  nnkProcDef.newTree(
    newIdentNode("foo"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkForStmt.newTree(
        newIdentNode("_"),
        nnkPrefix.newTree(
          newIdentNode("@"),
          nnkBracket.newTree(
            newLit(1),
            newLit(3),
            newLit(5)
          )
        ),
        nnkStmtList.newTree(
          nnkDiscardStmt.newTree(
            nnkBracketExpr.newTree(
              newLit("abcde"),
              nnkInfix.newTree(
                newIdentNode("..<"),
                newLit(25),
                newLit(10)
              )
            )
          ),
          nnkBreakStmt.newTree(
            newEmptyNode()
          )
        )
      ),
      nnkCommand.newTree(
        newIdentNode("echo"),
        newLit("Passed")
      )
    )
  ),
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkCall.newTree(
          newIdentNode("foo")
        )
      )
    )
  )
)
1.4.8 :-1: FAIL

Output

Error: Command failed: nim c --gc:refc --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/work/Nim/Nim/temp.nim foo
/home/runner/.choosenim/toolchains/nim-1.4.8/lib/system.nim []
/home/runner/.choosenim/toolchains/nim-1.4.8/lib/system/fatal.nim sysFatal
Error: unhandled exception: value out of range: -15 notin 0 .. 9223372036854775807 [RangeDefect]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp '

IR

Compiled filesize 97.47 Kb (99,808 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.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 NimStringDesc NimStringDesc;
typedef struct tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA;
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;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA {
NI a;
NI b;
};
typedef NimStringDesc* tyArray__nHXaesL0DJZHyVS07ARPRA[1];
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
TGenericSeq Sup;
NI data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, foo__EzBZaa239as9bFx8yeHDoTOw)(void);
N_LIB_PRIVATE N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_LIB_PRIVATE N_NOINLINE(void, raiseIndexError2)(NI i, NI n);
static N_INLINE(NimStringDesc*, X5BX5D___FPvLvuwqfYMFkcbGfPM8QQsystem)(NimStringDesc* s, tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA x);
N_LIB_PRIVATE N_NOINLINE(void, raiseOverflow)(void);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
N_LIB_PRIVATE N_NOINLINE(void, raiseRangeErrorI)(NI64 i, NI64 a, NI64 b);
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_HSlice__EE5dzjqoOrHT6HJhIPXAvA, dotdot___BokNSDrKN1xmV1nA01G9brAsystem)(NI a, NI b);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringDesc** args, NI argsLen_0);
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_6, "abcde", 5);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_8, "/home/runner/.choosenim/toolchains/nim-1.4.8/lib/system/iterato"
"rs.nim(204, 11) `len(a) == L` the length of the seq changed whil"
"e iterating over it", 146);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_10, "Passed", 6);
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_9 = {((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_10)}
;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
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(NimStringDesc*, X5BX5D___FPvLvuwqfYMFkcbGfPM8QQsystem)(NimStringDesc* s, tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA x) {
 NimStringDesc* result;
 NI a;
 NI L;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_2;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_3;
 nimfr_("[]", "/home/runner/.choosenim/toolchains/nim-1.4.8/lib/system.nim");
 result = (NimStringDesc*)0;
 a = x.a;
 if (nimSubInt(x.b, a, &TM__SRd76hP9cMfCzdUO857UhQQ_2)) { raiseOverflow(); };
 if (nimAddInt((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_2), ((NI) 1), &TM__SRd76hP9cMfCzdUO857UhQQ_3)) { raiseOverflow(); };
 L = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_3);
 if ((L) < ((NI) 0) || (L) > ((NI) IL64(9223372036854775807))){ raiseRangeErrorI(L, ((NI) 0), ((NI) IL64(9223372036854775807))); }
 result = mnewString(((NI) (L)));
 {
  NI i;
  NI i_2;
  i = (NI)0;
  i_2 = ((NI) 0);
  {
   while (1) {
    NI TM__SRd76hP9cMfCzdUO857UhQQ_4;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_5;
    if (!(i_2 < L)) goto LA3;
    i = i_2;
    if ((NU)(i) >= (NU)(result ? result->Sup.len : 0)){ raiseIndexError2(i,(result ? result->Sup.len : 0)-1); }
    if (nimAddInt(i, a, &TM__SRd76hP9cMfCzdUO857UhQQ_4)) { raiseOverflow(); };
    if ((NU)((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4)) >= (NU)(s ? s->Sup.len : 0)){ raiseIndexError2((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4),(s ? s->Sup.len : 0)-1); }
    result->data[i] = s->data[(NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4)];
    if (nimAddInt(i_2, ((NI) 1), &TM__SRd76hP9cMfCzdUO857UhQQ_5)) { raiseOverflow(); };
    i_2 = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_5);
   } LA3: ;
  }
 }
 popFrame();
 return result;
}
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {
 void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
 nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
static N_INLINE(tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA, dotdot___BokNSDrKN1xmV1nA01G9brAsystem)(NI a, NI b) {
 tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA result;
 nimfr_("..", "/home/runner/.choosenim/toolchains/nim-1.4.8/lib/system.nim");
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA));
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA));
 result.a = a;
 result.b = b;
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(void, foo__EzBZaa239as9bFx8yeHDoTOw)(void) {
 nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
 {
  NI* _;
  tySequence__qwqHTkRvwhrRyENtudHQ7g* colontmp_;
  NI i;
  NI L;
  NI T2_;
  _ = (NI*)0;
  colontmp_ = (tySequence__qwqHTkRvwhrRyENtudHQ7g*)0;
  colontmp_ = (tySequence__qwqHTkRvwhrRyENtudHQ7g*) newSeq((&NTI__qwqHTkRvwhrRyENtudHQ7g_), 3);
  colontmp_->data[0] = ((NI) 1);
  colontmp_->data[1] = ((NI) 3);
  colontmp_->data[2] = ((NI) 5);
  i = ((NI) 0);
  T2_ = (colontmp_ ? colontmp_->Sup.len : 0);
  L = T2_;
  {
   while (1) {
    tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA T5_;
    NimStringDesc* T6_;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_7;
    if (!(i < L)) goto LA4;
    if ((NU)(i) >= (NU)(colontmp_ ? colontmp_->Sup.len : 0)){ raiseIndexError2(i,(colontmp_ ? colontmp_->Sup.len : 0)-1); }
    _ = (&colontmp_->data[i]);
    T5_ = dotdot___BokNSDrKN1xmV1nA01G9brAsystem(((NI) 25), ((NI) 9));
    T6_ = (NimStringDesc*)0;
    T6_ = X5BX5D___FPvLvuwqfYMFkcbGfPM8QQsystem(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_6), T5_);
    (void)(T6_);
    goto LA1;
    if (nimAddInt(i, ((NI) 1), &TM__SRd76hP9cMfCzdUO857UhQQ_7)) { raiseOverflow(); };
    i = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_7);
    {
     NI T9_;
     T9_ = (colontmp_ ? colontmp_->Sup.len : 0);
     if (!!((T9_ == L))) goto LA10_;
     failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_8));
    }
    LA10_: ;
   } LA4: ;
  }
 } LA1: ;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_9, 1);
 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) {
{
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 foo__EzBZaa239as9bFx8yeHDoTOw();
 popFrame();
}
}

Stats

  • Started 2024-03-25T02:47:00
  • Finished 2024-03-25T02:47:01
  • Duration

AST

nnkStmtList.newTree(
  nnkProcDef.newTree(
    newIdentNode("foo"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkForStmt.newTree(
        newIdentNode("_"),
        nnkPrefix.newTree(
          newIdentNode("@"),
          nnkBracket.newTree(
            newLit(1),
            newLit(3),
            newLit(5)
          )
        ),
        nnkStmtList.newTree(
          nnkDiscardStmt.newTree(
            nnkBracketExpr.newTree(
              newLit("abcde"),
              nnkInfix.newTree(
                newIdentNode("..<"),
                newLit(25),
                newLit(10)
              )
            )
          ),
          nnkBreakStmt.newTree(
            newEmptyNode()
          )
        )
      ),
      nnkCommand.newTree(
        newIdentNode("echo"),
        newLit("Passed")
      )
    )
  ),
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkCall.newTree(
          newIdentNode("foo")
        )
      )
    )
  )
)
1.2.18 :-1: FAIL

Output

Error: Command failed: nim c --gc:refc --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/work/Nim/Nim/temp.nim foo
/home/runner/.choosenim/toolchains/nim-1.2.18/lib/system.nim []
/home/runner/.choosenim/toolchains/nim-1.2.18/lib/system/fatal.nim sysFatal
Error: unhandled exception: value out of range: -15 notin 0 .. 9223372036854775807 [RangeError]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp '

IR

Compiled filesize 97.52 Kb (99,856 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.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 NimStringDesc NimStringDesc;
typedef struct tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA;
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;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA {
NI a;
NI b;
};
typedef NimStringDesc* tyArray__nHXaesL0DJZHyVS07ARPRA[1];
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
TGenericSeq Sup;
NI data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, foo__EzBZaa239as9bFx8yeHDoTOw)(void);
N_LIB_PRIVATE N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
N_LIB_PRIVATE N_NOINLINE(void, raiseIndexError2)(NI i, NI n);
static N_INLINE(NimStringDesc*, X5BX5D___FPvLvuwqfYMFkcbGfPM8QQsystem)(NimStringDesc* s, tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA x);
N_LIB_PRIVATE N_NOINLINE(void, raiseOverflow)(void);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
N_LIB_PRIVATE N_NOINLINE(void, raiseRangeErrorI)(NI64 i, NI64 a, NI64 b);
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_HSlice__EE5dzjqoOrHT6HJhIPXAvA, dotdot___BokNSDrKN1xmV1nA01G9brAsystem)(NI a, NI b);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_LIB_PRIVATE N_NOINLINE(void, chckNil)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringDesc** args, NI argsLen_0);
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_6, "abcde", 5);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_8, "/home/runner/.choosenim/toolchains/nim-1.2.18/lib/system/iterat"
"ors.nim(189, 11) `len(a) == L` the length of the seq changed whi"
"le iterating over it", 147);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_10, "Passed", 6);
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_9 = {((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_10)}
;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
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(NimStringDesc*, X5BX5D___FPvLvuwqfYMFkcbGfPM8QQsystem)(NimStringDesc* s, tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA x) {
 NimStringDesc* result;
 NI a;
 NI L;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_2;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_3;
 nimfr_("[]", "/home/runner/.choosenim/toolchains/nim-1.2.18/lib/system.nim");
 result = NIM_NIL;
 a = x.a;
 if (nimSubInt(x.b, a, &TM__SRd76hP9cMfCzdUO857UhQQ_2)) { raiseOverflow(); };
 if (nimAddInt((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_2), ((NI) 1), &TM__SRd76hP9cMfCzdUO857UhQQ_3)) { raiseOverflow(); };
 L = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_3);
 if ((L) < ((NI) 0) || (L) > ((NI) IL64(9223372036854775807))){ raiseRangeErrorI(L, ((NI) 0), ((NI) IL64(9223372036854775807))); }
 result = mnewString(((NI) (L)));
 {
  NI i;
  NI i_2;
  i = (NI)0;
  i_2 = ((NI) 0);
  {
   while (1) {
    NI TM__SRd76hP9cMfCzdUO857UhQQ_4;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_5;
    if (!(i_2 < L)) goto LA3;
    i = i_2;
    if ((NU)(i) >= (NU)(result ? result->Sup.len : 0)){ raiseIndexError2(i,(result ? result->Sup.len : 0)-1); }
    if (nimAddInt(i, a, &TM__SRd76hP9cMfCzdUO857UhQQ_4)) { raiseOverflow(); };
    if ((NU)((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4)) >= (NU)(s ? s->Sup.len : 0)){ raiseIndexError2((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4),(s ? s->Sup.len : 0)-1); }
    result->data[i] = s->data[(NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4)];
    if (nimAddInt(i_2, ((NI) 1), &TM__SRd76hP9cMfCzdUO857UhQQ_5)) { raiseOverflow(); };
    i_2 = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_5);
   } LA3: ;
  }
 }
 popFrame();
 return result;
}
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {
 void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
 nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
static N_INLINE(tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA, dotdot___BokNSDrKN1xmV1nA01G9brAsystem)(NI a, NI b) {
 tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA result;
 nimfr_("..", "/home/runner/.choosenim/toolchains/nim-1.2.18/lib/system.nim");
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA));
 chckNil((void*)(&result));
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA));
 result.a = a;
 result.b = b;
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(void, foo__EzBZaa239as9bFx8yeHDoTOw)(void) {
 nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
 {
  NI _;
  tySequence__qwqHTkRvwhrRyENtudHQ7g* colontmp_;
  NI i;
  NI L;
  NI T2_;
  _ = (NI)0;
  colontmp_ = NIM_NIL;
  colontmp_ = (tySequence__qwqHTkRvwhrRyENtudHQ7g*) newSeq((&NTI__qwqHTkRvwhrRyENtudHQ7g_), 3);
  colontmp_->data[0] = ((NI) 1);
  colontmp_->data[1] = ((NI) 3);
  colontmp_->data[2] = ((NI) 5);
  i = ((NI) 0);
  T2_ = (colontmp_ ? colontmp_->Sup.len : 0);
  L = T2_;
  {
   while (1) {
    tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA T5_;
    NimStringDesc* T6_;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_7;
    if (!(i < L)) goto LA4;
    if ((NU)(i) >= (NU)(colontmp_ ? colontmp_->Sup.len : 0)){ raiseIndexError2(i,(colontmp_ ? colontmp_->Sup.len : 0)-1); }
    _ = colontmp_->data[i];
    T5_ = dotdot___BokNSDrKN1xmV1nA01G9brAsystem(((NI) 25), ((NI) 9));
    T6_ = NIM_NIL;
    T6_ = X5BX5D___FPvLvuwqfYMFkcbGfPM8QQsystem(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_6), T5_);
    (void)(T6_);
    goto LA1;
    if (nimAddInt(i, ((NI) 1), &TM__SRd76hP9cMfCzdUO857UhQQ_7)) { raiseOverflow(); };
    i = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_7);
    {
     NI T9_;
     T9_ = (colontmp_ ? colontmp_->Sup.len : 0);
     if (!!((T9_ == L))) goto LA10_;
     failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_8));
    }
    LA10_: ;
   } LA4: ;
  }
 } LA1: ;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_9, 1);
 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) {
{
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 foo__EzBZaa239as9bFx8yeHDoTOw();
 popFrame();
}
}

Stats

  • Started 2024-03-25T02:47:03
  • Finished 2024-03-25T02:47:04
  • Duration

AST

nnkStmtList.newTree(
  nnkProcDef.newTree(
    newIdentNode("foo"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkForStmt.newTree(
        newIdentNode("_"),
        nnkPrefix.newTree(
          newIdentNode("@"),
          nnkBracket.newTree(
            newLit(1),
            newLit(3),
            newLit(5)
          )
        ),
        nnkStmtList.newTree(
          nnkDiscardStmt.newTree(
            nnkBracketExpr.newTree(
              newLit("abcde"),
              nnkInfix.newTree(
                newIdentNode("..<"),
                newLit(25),
                newLit(10)
              )
            )
          ),
          nnkBreakStmt.newTree(
            newEmptyNode()
          )
        )
      ),
      nnkCommand.newTree(
        newIdentNode("echo"),
        newLit("Passed")
      )
    )
  ),
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkCall.newTree(
          newIdentNode("foo")
        )
      )
    )
  )
)
1.0.10 :-1: FAIL

Output

Error: Command failed: nim c --gc:refc --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/work/Nim/Nim/temp.nim foo
/home/runner/.choosenim/toolchains/nim-1.0.10/lib/system.nim []
/home/runner/.choosenim/toolchains/nim-1.0.10/lib/system/fatal.nim sysFatal
Error: unhandled exception: value out of range: -15 [RangeError]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp '

IR

Compiled filesize 92.56 Kb (94,784 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.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 NimStringDesc NimStringDesc;
typedef struct tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA;
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA {
NI a;
NI b;
};
typedef NimStringDesc* tyArray__nHXaesL0DJZHyVS07ARPRA[1];
struct tySequence__qwqHTkRvwhrRyENtudHQ7g {
TGenericSeq Sup;
NI data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, foo__EzBZaa239as9bFx8yeHDoTOw)(void);
N_NOINLINE(void, raiseIndexError2)(NI i, NI n);
static N_INLINE(NimStringDesc*, X5BX5D___FPvLvuwqfYMFkcbGfPM8QQsystem)(NimStringDesc* s, tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA x);
static N_INLINE(NI, subInt)(NI a, NI b);
N_NOINLINE(void, raiseOverflow)(void);
static N_INLINE(NI, addInt)(NI a, NI b);
N_NIMCALL(NimStringDesc*, mnewString)(NI len);
static N_INLINE(NI, chckRange)(NI i, NI a, NI b);
N_NOINLINE(void, raiseRangeError)(NI64 val);
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_HSlice__EE5dzjqoOrHT6HJhIPXAvA, dotdot___BokNSDrKN1xmV1nA01G9brAsystem)(NI a, NI b);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_NOINLINE(void, chckNil)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
N_NIMCALL(void, echoBinSafe)(NimStringDesc** args, NI argsLen_0);
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);
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
NIM_CONST struct {
TGenericSeq Sup;
NI data[3];
} TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{3, 3 | NIM_STRLIT_FLAG}, {((NI) 1),
((NI) 3),
((NI) 5)}};
NIM_CONST tySequence__qwqHTkRvwhrRyENtudHQ7g* TM__SRd76hP9cMfCzdUO857UhQQ_2 = ((tySequence__qwqHTkRvwhrRyENtudHQ7g*)&TM__SRd76hP9cMfCzdUO857UhQQ_3);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_8, "abcde", 5);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_10, "/home/runner/.choosenim/toolchains/nim-1.0.10/lib/system/iterat"
"ors.nim(189, 11) `len(a) == L` the length of the seq changed whi"
"le iterating over it", 147);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_12, "Passed", 6);
NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_11 = {((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_12)}
;
static N_INLINE(NI, subInt)(NI a, NI b) {	NI result;
{	result = (NI)0;
 result = (NI)((NU64)(a) - (NU64)(b));
 {
  NIM_BOOL T3_;
  T3_ = (NIM_BOOL)0;
  T3_ = (((NI) 0) <= (NI)(result ^ a));
  if (T3_) goto LA4_;
  T3_ = (((NI) 0) <= (NI)(result ^ (NI)((NU64) ~(b))));
  LA4_: ;
  if (!T3_) goto LA5_;
  goto BeforeRet_;
 }
 LA5_: ;
 raiseOverflow();
 }BeforeRet_: ;
 return result;
}
static N_INLINE(NI, addInt)(NI a, NI b) {	NI result;
{	result = (NI)0;
 result = (NI)((NU64)(a) + (NU64)(b));
 {
  NIM_BOOL T3_;
  T3_ = (NIM_BOOL)0;
  T3_ = (((NI) 0) <= (NI)(result ^ a));
  if (T3_) goto LA4_;
  T3_ = (((NI) 0) <= (NI)(result ^ b));
  LA4_: ;
  if (!T3_) goto LA5_;
  goto BeforeRet_;
 }
 LA5_: ;
 raiseOverflow();
 }BeforeRet_: ;
 return result;
}
static N_INLINE(NI, chckRange)(NI i, NI a, NI b) {	NI result;
{	result = (NI)0;
 {
  NIM_BOOL T3_;
  T3_ = (NIM_BOOL)0;
  T3_ = (a <= i);
  if (!(T3_)) goto LA4_;
  T3_ = (i <= b);
  LA4_: ;
  if (!T3_) goto LA5_;
  result = i;
  goto BeforeRet_;
 }
 goto LA1_;
 LA5_: ;
 {
  raiseRangeError(((NI64) (i)));
 }
 LA1_: ;
 }BeforeRet_: ;
 return result;
}
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(NimStringDesc*, X5BX5D___FPvLvuwqfYMFkcbGfPM8QQsystem)(NimStringDesc* s, tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA x) {	NimStringDesc* result;
 NI a;
 NI L;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_4;
 NI TM__SRd76hP9cMfCzdUO857UhQQ_5;
 nimfr_("[]", "/home/runner/.choosenim/toolchains/nim-1.0.10/lib/system.nim");
 result = (NimStringDesc*)0;
 a = x.a;
 TM__SRd76hP9cMfCzdUO857UhQQ_4 = subInt(x.b, a);
 TM__SRd76hP9cMfCzdUO857UhQQ_5 = addInt((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_4), ((NI) 1));
 L = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_5);
 result = mnewString(((NI)chckRange(L, ((NI) 0), ((NI) IL64(9223372036854775807)))));
 {
  NI i;
  NI i_2;
  i = (NI)0;
  i_2 = ((NI) 0);
  {
   while (1) {
    NI TM__SRd76hP9cMfCzdUO857UhQQ_6;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_7;
    if (!(i_2 < L)) goto LA3;
    i = i_2;
    if ((NU)(i) >= (NU)(result ? result->Sup.len : 0)) raiseIndexError2(i,(result ? result->Sup.len : 0)-1);
    TM__SRd76hP9cMfCzdUO857UhQQ_6 = addInt(i, a);
    if ((NU)((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_6)) >= (NU)(s ? s->Sup.len : 0)) raiseIndexError2((NI)(TM__SRd76hP9cMfCzdUO857UhQQ_6),(s ? s->Sup.len : 0)-1);
    result->data[i] = s->data[(NI)(TM__SRd76hP9cMfCzdUO857UhQQ_6)];
    TM__SRd76hP9cMfCzdUO857UhQQ_7 = addInt(i_2, ((NI) 1));
    i_2 = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_7);
   } LA3: ;
  }
 }
 popFrame();
 return result;
}
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {	void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {	nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
static N_INLINE(tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA, dotdot___BokNSDrKN1xmV1nA01G9brAsystem)(NI a, NI b) {	tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA result;
 nimfr_("..", "/home/runner/.choosenim/toolchains/nim-1.0.10/lib/system.nim");
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA));
 chckNil((void*)(&result));
 nimZeroMem((void*)(&result), sizeof(tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA));
 result.a = a;
 result.b = b;
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(void, foo__EzBZaa239as9bFx8yeHDoTOw)(void) {	nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
 {
  NI _;
  NI i;
  NI L;
  _ = (NI)0;
  i = ((NI) 0);
  L = ((NI) 3);
  {
   while (1) {
    tyObject_HSlice__EE5dzjqoOrHT6HJhIPXAvA T4_;
    NimStringDesc* T5_;
    NI TM__SRd76hP9cMfCzdUO857UhQQ_9;
    if (!(i < L)) goto LA3;
    if ((NU)(i) >= (NU)(TM__SRd76hP9cMfCzdUO857UhQQ_2 ? TM__SRd76hP9cMfCzdUO857UhQQ_2->Sup.len : 0)) raiseIndexError2(i,(TM__SRd76hP9cMfCzdUO857UhQQ_2 ? TM__SRd76hP9cMfCzdUO857UhQQ_2->Sup.len : 0)-1);
    _ = TM__SRd76hP9cMfCzdUO857UhQQ_2->data[i];
    T4_ = dotdot___BokNSDrKN1xmV1nA01G9brAsystem(((NI) 25), ((NI) 9));
    T5_ = (NimStringDesc*)0;
    T5_ = X5BX5D___FPvLvuwqfYMFkcbGfPM8QQsystem(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_8), T4_);
    (void)(T5_);
    goto LA1;
    TM__SRd76hP9cMfCzdUO857UhQQ_9 = addInt(i, ((NI) 1));
    i = (NI)(TM__SRd76hP9cMfCzdUO857UhQQ_9);
    {
     if (!!((((NI) 3) == L))) goto LA8_;
     failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_10));
    }
    LA8_: ;
   } LA3: ;
  }
 } LA1: ;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_11, 1);
 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) {
{
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 foo__EzBZaa239as9bFx8yeHDoTOw();
 popFrame();
}
}

Stats

  • Started 2024-03-25T02:47:06
  • Finished 2024-03-25T02:47:06
  • Duration

AST

nnkStmtList.newTree(
  nnkProcDef.newTree(
    newIdentNode("foo"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode()
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkForStmt.newTree(
        newIdentNode("_"),
        nnkPrefix.newTree(
          newIdentNode("@"),
          nnkBracket.newTree(
            newLit(1),
            newLit(3),
            newLit(5)
          )
        ),
        nnkStmtList.newTree(
          nnkDiscardStmt.newTree(
            nnkBracketExpr.newTree(
              newLit("abcde"),
              nnkInfix.newTree(
                newIdentNode("..<"),
                newLit(25),
                newLit(10)
              )
            )
          ),
          nnkBreakStmt.newTree(
            newEmptyNode()
          )
        )
      ),
      nnkCommand.newTree(
        newIdentNode("echo"),
        newLit("Passed")
      )
    )
  ),
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkCall.newTree(
          newIdentNode("foo")
        )
      )
    )
  )
)
Stats
  • GCC 11.4.0
  • Clang 14.0.0
  • NodeJS 19.1
  • Created 2024-03-25T02:46:22Z
  • Comments 5
  • Commands nim c --gc:refc --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 18 minutes bisecting 7 commits at 0 commits per second

github-actions[bot] avatar Mar 25 '24 02:03 github-actions[bot]

It seems to be an issue of goto exception

ringabout avatar Mar 25 '24 02:03 ringabout

related to https://github.com/nim-lang/Nim/issues/22852

ringabout avatar Mar 25 '24 09:03 ringabout