nim-lang / Nim

Nim is a statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula. Its design focuses on efficiency, expressiveness, and elegance (in that order of priority).
https://nim-lang.org
Other
16.46k stars 1.47k forks source link

SIGSEGV: Compiler emits unitialized variable in the string slice operator #23435

Closed gcr closed 4 months ago

gcr commented 6 months ago

Description

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 commented 6 months ago

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 commented 6 months ago

!nim c

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

when isMainModule:
  foo()
ringabout commented 6 months ago

!nim c

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

when isMainModule:
  foo()
github-actions[bot] commented 6 months ago
: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) ```cpp #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

```nim 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) ```cpp #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

```nim 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) ```cpp #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

```nim 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) ```cpp #define NIM_INTBITS 64 #include "nimbase.h" #include # 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

```nim 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) ```cpp #define NIM_INTBITS 64 #include "nimbase.h" #include # 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

```nim 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) ```cpp #define NIM_INTBITS 64 #include "nimbase.h" #include # 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

```nim 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) ```cpp #define NIM_INTBITS 64 #include "nimbase.h" #include # 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

```nim 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

ringabout commented 6 months ago

!nim c --gc:refc

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

when isMainModule:
  foo()
github-actions[bot] commented 6 months ago
: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) ```cpp #define NIM_INTBITS 64 #include "nimbase.h" #include #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

```nim 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) ```cpp #define NIM_INTBITS 64 #include "nimbase.h" #include #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

```nim 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) ```cpp #define NIM_INTBITS 64 #include "nimbase.h" #include #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

```nim 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) ```cpp #define NIM_INTBITS 64 #include "nimbase.h" #include # 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

```nim 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) ```cpp #define NIM_INTBITS 64 #include "nimbase.h" #include # 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

```nim 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) ```cpp #define NIM_INTBITS 64 #include "nimbase.h" #include # 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

```nim 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) ```cpp #define NIM_INTBITS 64 #include "nimbase.h" #include # 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

```nim 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

ringabout commented 6 months ago

It seems to be an issue of goto exception

ringabout commented 6 months ago

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