Code Monkey home page Code Monkey logo

Comments (4)

ringabout avatar ringabout commented on June 16, 2024 2

!nim c --gc:orc

when isMainModule:
  type
    TestObj = object of RootObj

    TestTestObj = object of RootObj
      testo: TestObj

  proc `=destroy`(x: var TestTestObj) =
    echo "Destructor for TestTestObj"

  proc testCaseT() =
    echo "\nTest Case T"
    let tt1 {.used.} = TestTestObj(testo: TestObj())


  proc main() =
    testCaseT()

  main()

from nim.

ringabout avatar ringabout commented on June 16, 2024 1

!nim c --gc:orc

when isMainModule:
  type
    TestObj = object of RootObj

    TestTestObj = object of RootObj
      testo: TestObj

  proc `=destroy`(x: TestTestObj) =
    echo "Destructor for TestTestObj"

  proc testCaseT() =
    echo "\nTest Case T"
    let tt1 {.used.} = TestTestObj(testo: TestObj())


  proc main() =
    testCaseT()

  main()

from nim.

github-actions avatar github-actions commented on June 16, 2024
🐧 Linux bisect by @ringabout (member)
devel 👎 FAIL

Output

Error: Command failed: nim c --gc:orc -d:nimArcDebug -d:nimArcIds  --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]
command line(1, 2) Warning: `gc:option` is deprecated; use `mm:option` instead [Deprecated]
/home/runner/work/Nim/Nim/@mtemp.nim.c:95:98: error: expected expression before ‘static’
   95 | static NIM_CONST tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
      |                                                                                                  ^~~~~~
/home/runner/work/Nim/Nim/@mtemp.nim.c: In function ‘eqdestroy___temp_u4’:
/home/runner/work/Nim/Nim/@mtemp.nim.c:148:21: error: ‘TM__SRd76hP9cMfCzdUO857UhQQ_3’ undeclared (first use in this function); did you mean ‘TM__SRd76hP9cMfCzdUO857UhQQ_6’?
  148 |         echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                     TM__SRd76hP9cMfCzdUO857UhQQ_6
/home/runner/work/Nim/Nim/@mtemp.nim.c:148:21: note: each undeclared identifier is reported only once for each function it appears in
Error: execution of an external compiler program 'gcc -c  -w -fmax-errors=3 -pthread   -I'/home/runner/.choosenim/toolchains/nim-#devel/lib' -I/home/runner/work/Nim/Nim -o /home/runner/work/Nim/Nim/@mtemp.nim.c.o /home/runner/work/Nim/Nim/@mtemp.nim.c' failed with exit code: 1


assertions.nim(34)       raiseAssert
Error: unhandled exception: errGenerated [AssertionDefect]

IR

Compiled filesize 0 bytes (0 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#define nimfr_(proc, file) \
TFrame FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#define nimfrs_(proc, file, slots, length) \
 struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename;NI len;VarSlot s[slots];} FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#define nimln_(n) \
 FR_.line = n;
#define nimlf_(n, file) \
 FR_.line = n; FR_.filename = file;
typedef struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimTypeV2 {
 void* destructor;
 NI size;
 NI16 align;
 NI16 depth;
 NU32* display;
 NCSTRING name;
 void* traceImpl;
 void* typeInfoV1;
 NI flags;
 void* vTable[SEQ_DECL_SIZE];
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ {
RootObj Sup;
};
struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg {
RootObj Sup;
 tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ testo;
};
struct NimStrPayload {
 NI cap;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
 NI len;
 NimStrPayload* p;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void);
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void);
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);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4963)(void);
static N_INLINE(void, popFrame)(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);
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_;
static const struct {
NI cap; NIM_CHAR data[26+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 26 | NIM_STRLIT_FLAG, "Destructor for TestTestObj" };
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_;
static const struct {
NI cap; NIM_CHAR data[12+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_8 = { 12 | NIM_STRLIT_FLAG, "\012Test Case T" };
static NIM_CONST tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
;
(&NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_)}, {{(&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_)}}}
;
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_7 = {{12, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_8}}
;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4747;
extern NIM_THREADVAR TFrame* framePtr__system_u2655;
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_5[2] = {3701606400, 3238797824};
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_ = {.destructor = (void*)rttiDestroy__temp_u52, .size = sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .align = (NI16) NIM_ALIGNOF(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_5, .traceImpl = (void*)NIM_NIL, .flags = 0};
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_6[2] = {3701606400, 223348224};
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_ = {.destructor = (void*)NIM_NIL, .size = sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .align = (NI16) NIM_ALIGNOF(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_6, .traceImpl = (void*)NIM_NIL, .flags = 0};
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(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (&nimInErrorMode__system_u4747);
 return result;
}
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u2655 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s_p0).calldepth = ((NI16)0);
 }
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u2655).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u2655;
 framePtr__system_u2655 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
  callDepthLimitReached__system_u4963();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u2655 = (*framePtr__system_u2655).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0) {
 nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 eqdestroy___temp_u4((&(*((tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg*) (dest_p0)))));
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void) {
 tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tt1;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
 nimfr_("testCaseT", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 nimZeroMem((void*)(&tt1), sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg));
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_7, 1);
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 nimZeroMem((void*)(&tt1.testo), sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ));
 tt1.testo.Sup.m_type = (&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_);
 {
  LA1_:;
 }
 {
  oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
  eqdestroy___temp_u4((&tt1));
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  *nimErr_ = oldNimErrFin1_;
 }
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void) {
NIM_BOOL* nimErr_;
 nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 testCaseT__temp_u6();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }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();
 main__temp_u51();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}

Stats

  • Started 2024-05-20T01:31:50
  • Finished 2024-05-20T01:31:51
  • Duration

AST

nnkStmtList.newTree(
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkTypeSection.newTree(
          nnkTypeDef.newTree(
            newIdentNode("TestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              newEmptyNode()
            )
          ),
          nnkTypeDef.newTree(
            newIdentNode("TestTestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              nnkRecList.newTree(
                nnkIdentDefs.newTree(
                  newIdentNode("testo"),
                  newIdentNode("TestObj"),
                  newEmptyNode()
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          nnkAccQuoted.newTree(
            newIdentNode("="),
            newIdentNode("destroy")
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode(),
            nnkIdentDefs.newTree(
              newIdentNode("x"),
              newIdentNode("TestTestObj"),
              newEmptyNode()
            )
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("Destructor for TestTestObj")
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("testCaseT"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("\nTest Case T")
            ),
            nnkLetSection.newTree(
              nnkIdentDefs.newTree(
                nnkPragmaExpr.newTree(
                  newIdentNode("tt1"),
                  nnkPragma.newTree(
                    newIdentNode("used")
                  )
                ),
                newEmptyNode(),
                nnkObjConstr.newTree(
                  newIdentNode("TestTestObj"),
                  nnkExprColonExpr.newTree(
                    newIdentNode("testo"),
                    nnkCall.newTree(
                      newIdentNode("TestObj")
                    )
                  )
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("main"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCall.newTree(
              newIdentNode("testCaseT")
            )
          )
        ),
        nnkCall.newTree(
          newIdentNode("main")
        )
      )
    )
  )
)
stable 👎 FAIL

Output

Error: Command failed: nim c --gc:orc -d:nimArcDebug -d:nimArcIds  --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/@mtemp.nim.c:94:98: error: expected expression before ‘static’
   94 | static NIM_CONST tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
      |                                                                                                  ^~~~~~
/home/runner/work/Nim/Nim/@mtemp.nim.c: In function ‘eqdestroy___temp_u4’:
/home/runner/work/Nim/Nim/@mtemp.nim.c:147:21: error: ‘TM__SRd76hP9cMfCzdUO857UhQQ_3’ undeclared (first use in this function); did you mean ‘TM__SRd76hP9cMfCzdUO857UhQQ_6’?
  147 |         echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                     TM__SRd76hP9cMfCzdUO857UhQQ_6
/home/runner/work/Nim/Nim/@mtemp.nim.c:147:21: note: each undeclared identifier is reported only once for each function it appears in
Error: execution of an external compiler program 'gcc -c  -w -fmax-errors=3 -pthread   -I/home/runner/.choosenim/toolchains/nim-2.0.4/lib -I/home/runner/work/Nim/Nim -o /home/runner/work/Nim/Nim/@mtemp.nim.c.o /home/runner/work/Nim/Nim/@mtemp.nim.c' failed with exit code: 1


assertions.nim(34)       raiseAssert
Error: unhandled exception: options.nim(681, 5) `false` errGenerated [AssertionDefect]

IR

Compiled filesize 0 bytes (0 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#define nimfr_(proc, file) \
TFrame FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#define nimfrs_(proc, file, slots, length) \
 struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename;NI len;VarSlot s[slots];} FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#define nimln_(n) \
 FR_.line = n;
#define nimlf_(n, file) \
 FR_.line = n; FR_.filename = file;
typedef struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimTypeV2 {
 void* destructor;
 NI size;
 NI16 align;
 NI16 depth;
 NU32* display;
 NCSTRING name;
 void* traceImpl;
 void* typeInfoV1;
 NI flags;
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ {
RootObj Sup;
};
struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg {
RootObj Sup;
 tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ testo;
};
struct NimStrPayload {
 NI cap;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
 NI len;
 NimStrPayload* p;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void);
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void);
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);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u5035)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_;
static const struct {
NI cap; NIM_CHAR data[26+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 26 | NIM_STRLIT_FLAG, "Destructor for TestTestObj" };
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_;
static const struct {
NI cap; NIM_CHAR data[12+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_8 = { 12 | NIM_STRLIT_FLAG, "\012Test Case T" };
static NIM_CONST tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
;
(&NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_)}, {{(&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_)}}}
;
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_7 = {{12, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_8}}
;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4817;
extern NIM_THREADVAR TFrame* framePtr__system_u4434;
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_5[2] = {3701606400, 3238797824};
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_ = {.destructor = (void*)rttiDestroy__temp_u52, .size = sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .align = (NI16) NIM_ALIGNOF(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_5, .traceImpl = (void*)NIM_NIL, .flags = 0};
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_6[2] = {3701606400, 223348224};
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_ = {.destructor = (void*)NIM_NIL, .size = sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .align = (NI16) NIM_ALIGNOF(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_6, .traceImpl = (void*)NIM_NIL, .flags = 0};
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(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (&nimInErrorMode__system_u4817);
 return result;
}
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u4434 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s_p0).calldepth = ((NI16)0);
 }
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u4434).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u4434;
 framePtr__system_u4434 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
  callDepthLimitReached__system_u5035();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u4434 = (*framePtr__system_u4434).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0) {
 nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 eqdestroy___temp_u4((&(*((tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg*) (dest_p0)))));
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void) {
 tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tt1;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
 nimfr_("testCaseT", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 nimZeroMem((void*)(&tt1), sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg));
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_7, 1);
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 nimZeroMem((void*)(&tt1.testo), sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ));
 tt1.testo.Sup.m_type = (&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_);
 {
  LA1_:;
 }
 {
  oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
  eqdestroy___temp_u4((&tt1));
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  *nimErr_ = oldNimErrFin1_;
 }
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void) {
NIM_BOOL* nimErr_;
 nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 testCaseT__temp_u6();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }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;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000();
 (*inner)();
#else
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_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();
 main__temp_u51();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}

Stats

  • Started 2024-05-20T01:31:51
  • Finished 2024-05-20T01:31:52
  • Duration

AST

nnkStmtList.newTree(
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkTypeSection.newTree(
          nnkTypeDef.newTree(
            newIdentNode("TestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              newEmptyNode()
            )
          ),
          nnkTypeDef.newTree(
            newIdentNode("TestTestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              nnkRecList.newTree(
                nnkIdentDefs.newTree(
                  newIdentNode("testo"),
                  newIdentNode("TestObj"),
                  newEmptyNode()
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          nnkAccQuoted.newTree(
            newIdentNode("="),
            newIdentNode("destroy")
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode(),
            nnkIdentDefs.newTree(
              newIdentNode("x"),
              newIdentNode("TestTestObj"),
              newEmptyNode()
            )
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("Destructor for TestTestObj")
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("testCaseT"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("\nTest Case T")
            ),
            nnkLetSection.newTree(
              nnkIdentDefs.newTree(
                nnkPragmaExpr.newTree(
                  newIdentNode("tt1"),
                  nnkPragma.newTree(
                    newIdentNode("used")
                  )
                ),
                newEmptyNode(),
                nnkObjConstr.newTree(
                  newIdentNode("TestTestObj"),
                  nnkExprColonExpr.newTree(
                    newIdentNode("testo"),
                    nnkCall.newTree(
                      newIdentNode("TestObj")
                    )
                  )
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("main"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCall.newTree(
              newIdentNode("testCaseT")
            )
          )
        ),
        nnkCall.newTree(
          newIdentNode("main")
        )
      )
    )
  )
)
2.0.4 👎 FAIL

Output

Error: Command failed: nim c --gc:orc -d:nimArcDebug -d:nimArcIds  --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/@mtemp.nim.c:94:98: error: expected expression before ‘static’
   94 | static NIM_CONST tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
      |                                                                                                  ^~~~~~
/home/runner/work/Nim/Nim/@mtemp.nim.c: In function ‘eqdestroy___temp_u4’:
/home/runner/work/Nim/Nim/@mtemp.nim.c:147:21: error: ‘TM__SRd76hP9cMfCzdUO857UhQQ_3’ undeclared (first use in this function); did you mean ‘TM__SRd76hP9cMfCzdUO857UhQQ_6’?
  147 |         echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                     TM__SRd76hP9cMfCzdUO857UhQQ_6
/home/runner/work/Nim/Nim/@mtemp.nim.c:147:21: note: each undeclared identifier is reported only once for each function it appears in
Error: execution of an external compiler program 'gcc -c  -w -fmax-errors=3 -pthread   -I/home/runner/.choosenim/toolchains/nim-2.0.4/lib -I/home/runner/work/Nim/Nim -o /home/runner/work/Nim/Nim/@mtemp.nim.c.o /home/runner/work/Nim/Nim/@mtemp.nim.c' failed with exit code: 1


assertions.nim(34)       raiseAssert
Error: unhandled exception: options.nim(681, 5) `false` errGenerated [AssertionDefect]

IR

Compiled filesize 0 bytes (0 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#define nimfr_(proc, file) \
TFrame FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#define nimfrs_(proc, file, slots, length) \
 struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename;NI len;VarSlot s[slots];} FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#define nimln_(n) \
 FR_.line = n;
#define nimlf_(n, file) \
 FR_.line = n; FR_.filename = file;
typedef struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimTypeV2 {
 void* destructor;
 NI size;
 NI16 align;
 NI16 depth;
 NU32* display;
 NCSTRING name;
 void* traceImpl;
 void* typeInfoV1;
 NI flags;
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ {
RootObj Sup;
};
struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg {
RootObj Sup;
 tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ testo;
};
struct NimStrPayload {
 NI cap;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
 NI len;
 NimStrPayload* p;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void);
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void);
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);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u5035)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_;
static const struct {
NI cap; NIM_CHAR data[26+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 26 | NIM_STRLIT_FLAG, "Destructor for TestTestObj" };
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_;
static const struct {
NI cap; NIM_CHAR data[12+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_8 = { 12 | NIM_STRLIT_FLAG, "\012Test Case T" };
static NIM_CONST tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
;
(&NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_)}, {{(&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_)}}}
;
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_7 = {{12, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_8}}
;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4817;
extern NIM_THREADVAR TFrame* framePtr__system_u4434;
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_5[2] = {3701606400, 3238797824};
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_ = {.destructor = (void*)rttiDestroy__temp_u52, .size = sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .align = (NI16) NIM_ALIGNOF(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_5, .traceImpl = (void*)NIM_NIL, .flags = 0};
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_6[2] = {3701606400, 223348224};
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_ = {.destructor = (void*)NIM_NIL, .size = sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .align = (NI16) NIM_ALIGNOF(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_6, .traceImpl = (void*)NIM_NIL, .flags = 0};
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(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (&nimInErrorMode__system_u4817);
 return result;
}
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u4434 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s_p0).calldepth = ((NI16)0);
 }
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u4434).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u4434;
 framePtr__system_u4434 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
  callDepthLimitReached__system_u5035();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u4434 = (*framePtr__system_u4434).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0) {
 nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 eqdestroy___temp_u4((&(*((tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg*) (dest_p0)))));
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void) {
 tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tt1;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
 nimfr_("testCaseT", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 nimZeroMem((void*)(&tt1), sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg));
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_7, 1);
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 nimZeroMem((void*)(&tt1.testo), sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ));
 tt1.testo.Sup.m_type = (&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_);
 {
  LA1_:;
 }
 {
  oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
  eqdestroy___temp_u4((&tt1));
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  *nimErr_ = oldNimErrFin1_;
 }
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void) {
NIM_BOOL* nimErr_;
 nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 testCaseT__temp_u6();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }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;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000();
 (*inner)();
#else
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_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();
 main__temp_u51();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}

Stats

  • Started 2024-05-20T01:31:52
  • Finished 2024-05-20T01:31:53
  • Duration

AST

nnkStmtList.newTree(
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkTypeSection.newTree(
          nnkTypeDef.newTree(
            newIdentNode("TestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              newEmptyNode()
            )
          ),
          nnkTypeDef.newTree(
            newIdentNode("TestTestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              nnkRecList.newTree(
                nnkIdentDefs.newTree(
                  newIdentNode("testo"),
                  newIdentNode("TestObj"),
                  newEmptyNode()
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          nnkAccQuoted.newTree(
            newIdentNode("="),
            newIdentNode("destroy")
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode(),
            nnkIdentDefs.newTree(
              newIdentNode("x"),
              newIdentNode("TestTestObj"),
              newEmptyNode()
            )
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("Destructor for TestTestObj")
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("testCaseT"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("\nTest Case T")
            ),
            nnkLetSection.newTree(
              nnkIdentDefs.newTree(
                nnkPragmaExpr.newTree(
                  newIdentNode("tt1"),
                  nnkPragma.newTree(
                    newIdentNode("used")
                  )
                ),
                newEmptyNode(),
                nnkObjConstr.newTree(
                  newIdentNode("TestTestObj"),
                  nnkExprColonExpr.newTree(
                    newIdentNode("testo"),
                    nnkCall.newTree(
                      newIdentNode("TestObj")
                    )
                  )
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("main"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCall.newTree(
              newIdentNode("testCaseT")
            )
          )
        ),
        nnkCall.newTree(
          newIdentNode("main")
        )
      )
    )
  )
)
1.6.20 👎 FAIL

Output

Error: Command failed: nim c --gc:orc -d:nimArcDebug -d:nimArcIds  --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(6, 3) Error: signature for '=destroy' must be proc[T: object](x: var T)
fatal.nim(54)            sysFatal
Error: unhandled exception: options.nim(662, 14) `false` errGenerated [AssertionDefect]

IR

Compiled filesize 0 bytes (0 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#define nimfr_(proc, file) \
TFrame FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#define nimfrs_(proc, file, slots, length) \
 struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename;NI len;VarSlot s[slots];} FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#define nimln_(n) \
 FR_.line = n;
#define nimlf_(n, file) \
 FR_.line = n; FR_.filename = file;
typedef struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimTypeV2 {
 void* destructor;
 NI size;
 NI16 align;
 NI16 depth;
 NU32* display;
 NCSTRING name;
 void* traceImpl;
 void* typeInfoV1;
 NI flags;
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ {
RootObj Sup;
};
struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg {
RootObj Sup;
 tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ testo;
};
struct NimStrPayload {
 NI cap;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
 NI len;
 NimStrPayload* p;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void);
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void);
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);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u5035)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_;
static const struct {
NI cap; NIM_CHAR data[26+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 26 | NIM_STRLIT_FLAG, "Destructor for TestTestObj" };
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_;
static const struct {
NI cap; NIM_CHAR data[12+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_8 = { 12 | NIM_STRLIT_FLAG, "\012Test Case T" };
static NIM_CONST tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
;
(&NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_)}, {{(&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_)}}}
;
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_7 = {{12, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_8}}
;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4817;
extern NIM_THREADVAR TFrame* framePtr__system_u4434;
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_5[2] = {3701606400, 3238797824};
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_ = {.destructor = (void*)rttiDestroy__temp_u52, .size = sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .align = (NI16) NIM_ALIGNOF(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_5, .traceImpl = (void*)NIM_NIL, .flags = 0};
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_6[2] = {3701606400, 223348224};
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_ = {.destructor = (void*)NIM_NIL, .size = sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .align = (NI16) NIM_ALIGNOF(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_6, .traceImpl = (void*)NIM_NIL, .flags = 0};
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(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (&nimInErrorMode__system_u4817);
 return result;
}
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u4434 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s_p0).calldepth = ((NI16)0);
 }
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u4434).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u4434;
 framePtr__system_u4434 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
  callDepthLimitReached__system_u5035();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u4434 = (*framePtr__system_u4434).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0) {
 nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 eqdestroy___temp_u4((&(*((tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg*) (dest_p0)))));
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void) {
 tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tt1;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
 nimfr_("testCaseT", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 nimZeroMem((void*)(&tt1), sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg));
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_7, 1);
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 nimZeroMem((void*)(&tt1.testo), sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ));
 tt1.testo.Sup.m_type = (&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_);
 {
  LA1_:;
 }
 {
  oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
  eqdestroy___temp_u4((&tt1));
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  *nimErr_ = oldNimErrFin1_;
 }
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void) {
NIM_BOOL* nimErr_;
 nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 testCaseT__temp_u6();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }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;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000();
 (*inner)();
#else
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_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();
 main__temp_u51();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}

Stats

  • Started 2024-05-20T01:31:55
  • Finished 2024-05-20T01:31:56
  • Duration

AST

nnkStmtList.newTree(
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkTypeSection.newTree(
          nnkTypeDef.newTree(
            newIdentNode("TestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              newEmptyNode()
            )
          ),
          nnkTypeDef.newTree(
            newIdentNode("TestTestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              nnkRecList.newTree(
                nnkIdentDefs.newTree(
                  newIdentNode("testo"),
                  newIdentNode("TestObj"),
                  newEmptyNode()
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          nnkAccQuoted.newTree(
            newIdentNode("="),
            newIdentNode("destroy")
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode(),
            nnkIdentDefs.newTree(
              newIdentNode("x"),
              newIdentNode("TestTestObj"),
              newEmptyNode()
            )
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("Destructor for TestTestObj")
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("testCaseT"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("\nTest Case T")
            ),
            nnkLetSection.newTree(
              nnkIdentDefs.newTree(
                nnkPragmaExpr.newTree(
                  newIdentNode("tt1"),
                  nnkPragma.newTree(
                    newIdentNode("used")
                  )
                ),
                newEmptyNode(),
                nnkObjConstr.newTree(
                  newIdentNode("TestTestObj"),
                  nnkExprColonExpr.newTree(
                    newIdentNode("testo"),
                    nnkCall.newTree(
                      newIdentNode("TestObj")
                    )
                  )
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("main"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCall.newTree(
              newIdentNode("testCaseT")
            )
          )
        ),
        nnkCall.newTree(
          newIdentNode("main")
        )
      )
    )
  )
)
1.4.8 👎 FAIL

Output

Error: Command failed: nim c --gc:orc -d:nimArcDebug -d:nimArcIds  --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/.choosenim/toolchains/nim-1.4.8/lib/system/bitmasks.nim(13, 3) Error: redefinition of 'PageShift'; previous declaration here: /home/runner/.choosenim/toolchains/nim-1.4.8/lib/system/bitmasks.nim(13, 3)

IR

Compiled filesize 0 bytes (0 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#define nimfr_(proc, file) \
TFrame FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#define nimfrs_(proc, file, slots, length) \
 struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename;NI len;VarSlot s[slots];} FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#define nimln_(n) \
 FR_.line = n;
#define nimlf_(n, file) \
 FR_.line = n; FR_.filename = file;
typedef struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimTypeV2 {
 void* destructor;
 NI size;
 NI16 align;
 NI16 depth;
 NU32* display;
 NCSTRING name;
 void* traceImpl;
 void* typeInfoV1;
 NI flags;
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ {
RootObj Sup;
};
struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg {
RootObj Sup;
 tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ testo;
};
struct NimStrPayload {
 NI cap;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
 NI len;
 NimStrPayload* p;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void);
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void);
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);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u5035)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_;
static const struct {
NI cap; NIM_CHAR data[26+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 26 | NIM_STRLIT_FLAG, "Destructor for TestTestObj" };
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_;
static const struct {
NI cap; NIM_CHAR data[12+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_8 = { 12 | NIM_STRLIT_FLAG, "\012Test Case T" };
static NIM_CONST tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
;
(&NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_)}, {{(&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_)}}}
;
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_7 = {{12, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_8}}
;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4817;
extern NIM_THREADVAR TFrame* framePtr__system_u4434;
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_5[2] = {3701606400, 3238797824};
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_ = {.destructor = (void*)rttiDestroy__temp_u52, .size = sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .align = (NI16) NIM_ALIGNOF(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_5, .traceImpl = (void*)NIM_NIL, .flags = 0};
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_6[2] = {3701606400, 223348224};
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_ = {.destructor = (void*)NIM_NIL, .size = sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .align = (NI16) NIM_ALIGNOF(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_6, .traceImpl = (void*)NIM_NIL, .flags = 0};
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(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (&nimInErrorMode__system_u4817);
 return result;
}
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u4434 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s_p0).calldepth = ((NI16)0);
 }
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u4434).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u4434;
 framePtr__system_u4434 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
  callDepthLimitReached__system_u5035();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u4434 = (*framePtr__system_u4434).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0) {
 nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 eqdestroy___temp_u4((&(*((tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg*) (dest_p0)))));
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void) {
 tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tt1;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
 nimfr_("testCaseT", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 nimZeroMem((void*)(&tt1), sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg));
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_7, 1);
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 nimZeroMem((void*)(&tt1.testo), sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ));
 tt1.testo.Sup.m_type = (&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_);
 {
  LA1_:;
 }
 {
  oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
  eqdestroy___temp_u4((&tt1));
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  *nimErr_ = oldNimErrFin1_;
 }
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void) {
NIM_BOOL* nimErr_;
 nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 testCaseT__temp_u6();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }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;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000();
 (*inner)();
#else
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_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();
 main__temp_u51();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}

Stats

  • Started 2024-05-20T01:31:58
  • Finished 2024-05-20T01:31:58
  • Duration

AST

nnkStmtList.newTree(
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkTypeSection.newTree(
          nnkTypeDef.newTree(
            newIdentNode("TestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              newEmptyNode()
            )
          ),
          nnkTypeDef.newTree(
            newIdentNode("TestTestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              nnkRecList.newTree(
                nnkIdentDefs.newTree(
                  newIdentNode("testo"),
                  newIdentNode("TestObj"),
                  newEmptyNode()
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          nnkAccQuoted.newTree(
            newIdentNode("="),
            newIdentNode("destroy")
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode(),
            nnkIdentDefs.newTree(
              newIdentNode("x"),
              newIdentNode("TestTestObj"),
              newEmptyNode()
            )
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("Destructor for TestTestObj")
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("testCaseT"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("\nTest Case T")
            ),
            nnkLetSection.newTree(
              nnkIdentDefs.newTree(
                nnkPragmaExpr.newTree(
                  newIdentNode("tt1"),
                  nnkPragma.newTree(
                    newIdentNode("used")
                  )
                ),
                newEmptyNode(),
                nnkObjConstr.newTree(
                  newIdentNode("TestTestObj"),
                  nnkExprColonExpr.newTree(
                    newIdentNode("testo"),
                    nnkCall.newTree(
                      newIdentNode("TestObj")
                    )
                  )
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("main"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCall.newTree(
              newIdentNode("testCaseT")
            )
          )
        ),
        nnkCall.newTree(
          newIdentNode("main")
        )
      )
    )
  )
)
1.2.18 👎 FAIL

Output

Error: Command failed: nim c --gc:orc -d:nimArcDebug -d:nimArcIds  --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(6, 3) Error: signature for '=destroy' must be proc[T: object](x: var T)

IR

Compiled filesize 0 bytes (0 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#define nimfr_(proc, file) \
TFrame FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#define nimfrs_(proc, file, slots, length) \
 struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename;NI len;VarSlot s[slots];} FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#define nimln_(n) \
 FR_.line = n;
#define nimlf_(n, file) \
 FR_.line = n; FR_.filename = file;
typedef struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimTypeV2 {
 void* destructor;
 NI size;
 NI16 align;
 NI16 depth;
 NU32* display;
 NCSTRING name;
 void* traceImpl;
 void* typeInfoV1;
 NI flags;
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ {
RootObj Sup;
};
struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg {
RootObj Sup;
 tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ testo;
};
struct NimStrPayload {
 NI cap;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
 NI len;
 NimStrPayload* p;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void);
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void);
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);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u5035)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_;
static const struct {
NI cap; NIM_CHAR data[26+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 26 | NIM_STRLIT_FLAG, "Destructor for TestTestObj" };
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_;
static const struct {
NI cap; NIM_CHAR data[12+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_8 = { 12 | NIM_STRLIT_FLAG, "\012Test Case T" };
static NIM_CONST tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
;
(&NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_)}, {{(&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_)}}}
;
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_7 = {{12, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_8}}
;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4817;
extern NIM_THREADVAR TFrame* framePtr__system_u4434;
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_5[2] = {3701606400, 3238797824};
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_ = {.destructor = (void*)rttiDestroy__temp_u52, .size = sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .align = (NI16) NIM_ALIGNOF(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_5, .traceImpl = (void*)NIM_NIL, .flags = 0};
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_6[2] = {3701606400, 223348224};
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_ = {.destructor = (void*)NIM_NIL, .size = sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .align = (NI16) NIM_ALIGNOF(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_6, .traceImpl = (void*)NIM_NIL, .flags = 0};
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(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (&nimInErrorMode__system_u4817);
 return result;
}
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u4434 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s_p0).calldepth = ((NI16)0);
 }
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u4434).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u4434;
 framePtr__system_u4434 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
  callDepthLimitReached__system_u5035();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u4434 = (*framePtr__system_u4434).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0) {
 nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 eqdestroy___temp_u4((&(*((tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg*) (dest_p0)))));
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void) {
 tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tt1;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
 nimfr_("testCaseT", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 nimZeroMem((void*)(&tt1), sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg));
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_7, 1);
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 nimZeroMem((void*)(&tt1.testo), sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ));
 tt1.testo.Sup.m_type = (&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_);
 {
  LA1_:;
 }
 {
  oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
  eqdestroy___temp_u4((&tt1));
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  *nimErr_ = oldNimErrFin1_;
 }
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void) {
NIM_BOOL* nimErr_;
 nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 testCaseT__temp_u6();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }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;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000();
 (*inner)();
#else
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_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();
 main__temp_u51();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}

Stats

  • Started 2024-05-20T01:32:00
  • Finished 2024-05-20T01:32:01
  • Duration

AST

nnkStmtList.newTree(
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkTypeSection.newTree(
          nnkTypeDef.newTree(
            newIdentNode("TestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              newEmptyNode()
            )
          ),
          nnkTypeDef.newTree(
            newIdentNode("TestTestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              nnkRecList.newTree(
                nnkIdentDefs.newTree(
                  newIdentNode("testo"),
                  newIdentNode("TestObj"),
                  newEmptyNode()
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          nnkAccQuoted.newTree(
            newIdentNode("="),
            newIdentNode("destroy")
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode(),
            nnkIdentDefs.newTree(
              newIdentNode("x"),
              newIdentNode("TestTestObj"),
              newEmptyNode()
            )
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("Destructor for TestTestObj")
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("testCaseT"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("\nTest Case T")
            ),
            nnkLetSection.newTree(
              nnkIdentDefs.newTree(
                nnkPragmaExpr.newTree(
                  newIdentNode("tt1"),
                  nnkPragma.newTree(
                    newIdentNode("used")
                  )
                ),
                newEmptyNode(),
                nnkObjConstr.newTree(
                  newIdentNode("TestTestObj"),
                  nnkExprColonExpr.newTree(
                    newIdentNode("testo"),
                    nnkCall.newTree(
                      newIdentNode("TestObj")
                    )
                  )
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("main"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCall.newTree(
              newIdentNode("testCaseT")
            )
          )
        ),
        nnkCall.newTree(
          newIdentNode("main")
        )
      )
    )
  )
)
1.0.10 👎 FAIL

Output

Error: Command failed: nim c --gc:orc -d:nimArcDebug -d:nimArcIds  --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) Error: 'none', 'boehm' or 'refc' expected, but 'orc' found

IR

Compiled filesize 0 bytes (0 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#define nimfr_(proc, file) \
TFrame FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#define nimfrs_(proc, file, slots, length) \
 struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename;NI len;VarSlot s[slots];} FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#define nimln_(n) \
 FR_.line = n;
#define nimlf_(n, file) \
 FR_.line = n; FR_.filename = file;
typedef struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimTypeV2 {
 void* destructor;
 NI size;
 NI16 align;
 NI16 depth;
 NU32* display;
 NCSTRING name;
 void* traceImpl;
 void* typeInfoV1;
 NI flags;
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ {
RootObj Sup;
};
struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg {
RootObj Sup;
 tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ testo;
};
struct NimStrPayload {
 NI cap;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
 NI len;
 NimStrPayload* p;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void);
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void);
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);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u5035)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_;
static const struct {
NI cap; NIM_CHAR data[26+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 26 | NIM_STRLIT_FLAG, "Destructor for TestTestObj" };
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_;
static const struct {
NI cap; NIM_CHAR data[12+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_8 = { 12 | NIM_STRLIT_FLAG, "\012Test Case T" };
static NIM_CONST tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
;
(&NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_)}, {{(&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_)}}}
;
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_7 = {{12, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_8}}
;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4817;
extern NIM_THREADVAR TFrame* framePtr__system_u4434;
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_5[2] = {3701606400, 3238797824};
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_ = {.destructor = (void*)rttiDestroy__temp_u52, .size = sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .align = (NI16) NIM_ALIGNOF(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_5, .traceImpl = (void*)NIM_NIL, .flags = 0};
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_6[2] = {3701606400, 223348224};
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_ = {.destructor = (void*)NIM_NIL, .size = sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .align = (NI16) NIM_ALIGNOF(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_6, .traceImpl = (void*)NIM_NIL, .flags = 0};
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(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (&nimInErrorMode__system_u4817);
 return result;
}
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u4434 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s_p0).calldepth = ((NI16)0);
 }
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u4434).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u4434;
 framePtr__system_u4434 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
  callDepthLimitReached__system_u5035();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u4434 = (*framePtr__system_u4434).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0) {
 nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 eqdestroy___temp_u4((&(*((tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg*) (dest_p0)))));
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void) {
 tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tt1;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
 nimfr_("testCaseT", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 nimZeroMem((void*)(&tt1), sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg));
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_7, 1);
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 nimZeroMem((void*)(&tt1.testo), sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ));
 tt1.testo.Sup.m_type = (&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_);
 {
  LA1_:;
 }
 {
  oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
  eqdestroy___temp_u4((&tt1));
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  *nimErr_ = oldNimErrFin1_;
 }
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void) {
NIM_BOOL* nimErr_;
 nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 testCaseT__temp_u6();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }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;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000();
 (*inner)();
#else
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_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();
 main__temp_u51();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}

Stats

  • Started 2024-05-20T01:32:03
  • Finished 2024-05-20T01:32:03
  • Duration

AST

nnkStmtList.newTree(
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkTypeSection.newTree(
          nnkTypeDef.newTree(
            newIdentNode("TestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              newEmptyNode()
            )
          ),
          nnkTypeDef.newTree(
            newIdentNode("TestTestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              nnkRecList.newTree(
                nnkIdentDefs.newTree(
                  newIdentNode("testo"),
                  newIdentNode("TestObj"),
                  newEmptyNode()
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          nnkAccQuoted.newTree(
            newIdentNode("="),
            newIdentNode("destroy")
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode(),
            nnkIdentDefs.newTree(
              newIdentNode("x"),
              newIdentNode("TestTestObj"),
              newEmptyNode()
            )
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("Destructor for TestTestObj")
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("testCaseT"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("\nTest Case T")
            ),
            nnkLetSection.newTree(
              nnkIdentDefs.newTree(
                nnkPragmaExpr.newTree(
                  newIdentNode("tt1"),
                  nnkPragma.newTree(
                    newIdentNode("used")
                  )
                ),
                newEmptyNode(),
                nnkObjConstr.newTree(
                  newIdentNode("TestTestObj"),
                  nnkExprColonExpr.newTree(
                    newIdentNode("testo"),
                    nnkCall.newTree(
                      newIdentNode("TestObj")
                    )
                  )
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("main"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCall.newTree(
              newIdentNode("testCaseT")
            )
          )
        ),
        nnkCall.newTree(
          newIdentNode("main")
        )
      )
    )
  )
)
Stats
  • GCC 11.4.0
  • Clang 14.0.0
  • NodeJS 20.2
  • Created 2024-05-20T01:31:20Z
  • Comments 1
  • Commands nim c --gc:orc -d:nimArcDebug -d:nimArcIds --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

🤖 Bug found in 16 minutes bisecting 7 commits at 0 commits per second

from nim.

github-actions avatar github-actions commented on June 16, 2024
🐧 Linux bisect by @ringabout (member)
devel 👎 FAIL

Output

Error: Command failed: nim c --gc:orc -d:nimArcDebug -d:nimArcIds  --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]
command line(1, 2) Warning: `gc:option` is deprecated; use `mm:option` instead [Deprecated]
/home/runner/work/Nim/Nim/temp.nim(6, 3) Warning: A custom '=destroy' hook which takes a 'var T' parameter is deprecated; it should take a 'T' parameter [Deprecated]
/home/runner/work/Nim/Nim/@mtemp.nim.c:95:98: error: expected expression before ‘static’
   95 | static NIM_CONST tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
      |                                                                                                  ^~~~~~
/home/runner/work/Nim/Nim/@mtemp.nim.c: In function ‘eqdestroy___temp_u4’:
/home/runner/work/Nim/Nim/@mtemp.nim.c:148:21: error: ‘TM__SRd76hP9cMfCzdUO857UhQQ_3’ undeclared (first use in this function); did you mean ‘TM__SRd76hP9cMfCzdUO857UhQQ_6’?
  148 |         echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                     TM__SRd76hP9cMfCzdUO857UhQQ_6
/home/runner/work/Nim/Nim/@mtemp.nim.c:148:21: note: each undeclared identifier is reported only once for each function it appears in
Error: execution of an external compiler program 'gcc -c  -w -fmax-errors=3 -pthread   -I'/home/runner/.choosenim/toolchains/nim-#devel/lib' -I/home/runner/work/Nim/Nim -o /home/runner/work/Nim/Nim/@mtemp.nim.c.o /home/runner/work/Nim/Nim/@mtemp.nim.c' failed with exit code: 1


assertions.nim(34)       raiseAssert
Error: unhandled exception: errGenerated [AssertionDefect]

IR

Compiled filesize 0 bytes (0 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#define nimfr_(proc, file) \
TFrame FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#define nimfrs_(proc, file, slots, length) \
 struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename;NI len;VarSlot s[slots];} FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#define nimln_(n) \
 FR_.line = n;
#define nimlf_(n, file) \
 FR_.line = n; FR_.filename = file;
typedef struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimTypeV2 {
 void* destructor;
 NI size;
 NI16 align;
 NI16 depth;
 NU32* display;
 NCSTRING name;
 void* traceImpl;
 void* typeInfoV1;
 NI flags;
 void* vTable[SEQ_DECL_SIZE];
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ {
RootObj Sup;
};
struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg {
RootObj Sup;
 tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ testo;
};
struct NimStrPayload {
 NI cap;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
 NI len;
 NimStrPayload* p;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void);
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void);
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);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4963)(void);
static N_INLINE(void, popFrame)(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);
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_;
static const struct {
NI cap; NIM_CHAR data[26+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 26 | NIM_STRLIT_FLAG, "Destructor for TestTestObj" };
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_;
static const struct {
NI cap; NIM_CHAR data[12+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_8 = { 12 | NIM_STRLIT_FLAG, "\012Test Case T" };
static NIM_CONST tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
;
(&NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_)}, {{(&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_)}}}
;
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_7 = {{12, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_8}}
;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4747;
extern NIM_THREADVAR TFrame* framePtr__system_u2655;
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_5[2] = {3701606400, 3238797824};
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_ = {.destructor = (void*)rttiDestroy__temp_u52, .size = sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .align = (NI16) NIM_ALIGNOF(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_5, .traceImpl = (void*)NIM_NIL, .flags = 0};
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_6[2] = {3701606400, 223348224};
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_ = {.destructor = (void*)NIM_NIL, .size = sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .align = (NI16) NIM_ALIGNOF(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_6, .traceImpl = (void*)NIM_NIL, .flags = 0};
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(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (&nimInErrorMode__system_u4747);
 return result;
}
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u2655 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s_p0).calldepth = ((NI16)0);
 }
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u2655).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u2655;
 framePtr__system_u2655 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
  callDepthLimitReached__system_u4963();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u2655 = (*framePtr__system_u2655).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0) {
 nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 eqdestroy___temp_u4(((tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg*) (dest_p0)));
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void) {
 tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tt1;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
 nimfr_("testCaseT", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 nimZeroMem((void*)(&tt1), sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg));
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_7, 1);
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 nimZeroMem((void*)(&tt1.testo), sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ));
 tt1.testo.Sup.m_type = (&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_);
 {
  LA1_:;
 }
 {
  oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
  eqdestroy___temp_u4((&tt1));
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  *nimErr_ = oldNimErrFin1_;
 }
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void) {
NIM_BOOL* nimErr_;
 nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 testCaseT__temp_u6();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }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();
 main__temp_u51();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}

Stats

  • Started 2024-05-20T01:33:10
  • Finished 2024-05-20T01:33:11
  • Duration

AST

nnkStmtList.newTree(
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkTypeSection.newTree(
          nnkTypeDef.newTree(
            newIdentNode("TestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              newEmptyNode()
            )
          ),
          nnkTypeDef.newTree(
            newIdentNode("TestTestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              nnkRecList.newTree(
                nnkIdentDefs.newTree(
                  newIdentNode("testo"),
                  newIdentNode("TestObj"),
                  newEmptyNode()
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          nnkAccQuoted.newTree(
            newIdentNode("="),
            newIdentNode("destroy")
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode(),
            nnkIdentDefs.newTree(
              newIdentNode("x"),
              nnkVarTy.newTree(
                newIdentNode("TestTestObj")
              ),
              newEmptyNode()
            )
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("Destructor for TestTestObj")
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("testCaseT"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("\nTest Case T")
            ),
            nnkLetSection.newTree(
              nnkIdentDefs.newTree(
                nnkPragmaExpr.newTree(
                  newIdentNode("tt1"),
                  nnkPragma.newTree(
                    newIdentNode("used")
                  )
                ),
                newEmptyNode(),
                nnkObjConstr.newTree(
                  newIdentNode("TestTestObj"),
                  nnkExprColonExpr.newTree(
                    newIdentNode("testo"),
                    nnkCall.newTree(
                      newIdentNode("TestObj")
                    )
                  )
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("main"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCall.newTree(
              newIdentNode("testCaseT")
            )
          )
        ),
        nnkCall.newTree(
          newIdentNode("main")
        )
      )
    )
  )
)
stable 👎 FAIL

Output

Error: Command failed: nim c --gc:orc -d:nimArcDebug -d:nimArcIds  --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(6, 3) Warning: A custom '=destroy' hook which takes a 'var T' parameter is deprecated; it should take a 'T' parameter [Deprecated]
/home/runner/work/Nim/Nim/@mtemp.nim.c:94:98: error: expected expression before ‘static’
   94 | static NIM_CONST tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
      |                                                                                                  ^~~~~~
/home/runner/work/Nim/Nim/@mtemp.nim.c: In function ‘eqdestroy___temp_u4’:
/home/runner/work/Nim/Nim/@mtemp.nim.c:147:21: error: ‘TM__SRd76hP9cMfCzdUO857UhQQ_3’ undeclared (first use in this function); did you mean ‘TM__SRd76hP9cMfCzdUO857UhQQ_6’?
  147 |         echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                     TM__SRd76hP9cMfCzdUO857UhQQ_6
/home/runner/work/Nim/Nim/@mtemp.nim.c:147:21: note: each undeclared identifier is reported only once for each function it appears in
Error: execution of an external compiler program 'gcc -c  -w -fmax-errors=3 -pthread   -I/home/runner/.choosenim/toolchains/nim-2.0.4/lib -I/home/runner/work/Nim/Nim -o /home/runner/work/Nim/Nim/@mtemp.nim.c.o /home/runner/work/Nim/Nim/@mtemp.nim.c' failed with exit code: 1


assertions.nim(34)       raiseAssert
Error: unhandled exception: options.nim(681, 5) `false` errGenerated [AssertionDefect]

IR

Compiled filesize 0 bytes (0 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#define nimfr_(proc, file) \
TFrame FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#define nimfrs_(proc, file, slots, length) \
 struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename;NI len;VarSlot s[slots];} FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#define nimln_(n) \
 FR_.line = n;
#define nimlf_(n, file) \
 FR_.line = n; FR_.filename = file;
typedef struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimTypeV2 {
 void* destructor;
 NI size;
 NI16 align;
 NI16 depth;
 NU32* display;
 NCSTRING name;
 void* traceImpl;
 void* typeInfoV1;
 NI flags;
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ {
RootObj Sup;
};
struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg {
RootObj Sup;
 tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ testo;
};
struct NimStrPayload {
 NI cap;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
 NI len;
 NimStrPayload* p;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void);
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void);
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);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u5035)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_;
static const struct {
NI cap; NIM_CHAR data[26+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 26 | NIM_STRLIT_FLAG, "Destructor for TestTestObj" };
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_;
static const struct {
NI cap; NIM_CHAR data[12+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_8 = { 12 | NIM_STRLIT_FLAG, "\012Test Case T" };
static NIM_CONST tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
;
(&NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_)}, {{(&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_)}}}
;
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_7 = {{12, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_8}}
;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4817;
extern NIM_THREADVAR TFrame* framePtr__system_u4434;
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_5[2] = {3701606400, 3238797824};
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_ = {.destructor = (void*)rttiDestroy__temp_u52, .size = sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .align = (NI16) NIM_ALIGNOF(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_5, .traceImpl = (void*)NIM_NIL, .flags = 0};
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_6[2] = {3701606400, 223348224};
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_ = {.destructor = (void*)NIM_NIL, .size = sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .align = (NI16) NIM_ALIGNOF(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_6, .traceImpl = (void*)NIM_NIL, .flags = 0};
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(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (&nimInErrorMode__system_u4817);
 return result;
}
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u4434 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s_p0).calldepth = ((NI16)0);
 }
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u4434).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u4434;
 framePtr__system_u4434 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
  callDepthLimitReached__system_u5035();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u4434 = (*framePtr__system_u4434).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0) {
 nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 eqdestroy___temp_u4(((tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg*) (dest_p0)));
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void) {
 tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tt1;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
 nimfr_("testCaseT", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 nimZeroMem((void*)(&tt1), sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg));
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_7, 1);
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 nimZeroMem((void*)(&tt1.testo), sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ));
 tt1.testo.Sup.m_type = (&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_);
 {
  LA1_:;
 }
 {
  oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
  eqdestroy___temp_u4((&tt1));
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  *nimErr_ = oldNimErrFin1_;
 }
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void) {
NIM_BOOL* nimErr_;
 nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 testCaseT__temp_u6();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }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;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000();
 (*inner)();
#else
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_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();
 main__temp_u51();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}

Stats

  • Started 2024-05-20T01:33:12
  • Finished 2024-05-20T01:33:12
  • Duration

AST

nnkStmtList.newTree(
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkTypeSection.newTree(
          nnkTypeDef.newTree(
            newIdentNode("TestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              newEmptyNode()
            )
          ),
          nnkTypeDef.newTree(
            newIdentNode("TestTestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              nnkRecList.newTree(
                nnkIdentDefs.newTree(
                  newIdentNode("testo"),
                  newIdentNode("TestObj"),
                  newEmptyNode()
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          nnkAccQuoted.newTree(
            newIdentNode("="),
            newIdentNode("destroy")
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode(),
            nnkIdentDefs.newTree(
              newIdentNode("x"),
              nnkVarTy.newTree(
                newIdentNode("TestTestObj")
              ),
              newEmptyNode()
            )
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("Destructor for TestTestObj")
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("testCaseT"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("\nTest Case T")
            ),
            nnkLetSection.newTree(
              nnkIdentDefs.newTree(
                nnkPragmaExpr.newTree(
                  newIdentNode("tt1"),
                  nnkPragma.newTree(
                    newIdentNode("used")
                  )
                ),
                newEmptyNode(),
                nnkObjConstr.newTree(
                  newIdentNode("TestTestObj"),
                  nnkExprColonExpr.newTree(
                    newIdentNode("testo"),
                    nnkCall.newTree(
                      newIdentNode("TestObj")
                    )
                  )
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("main"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCall.newTree(
              newIdentNode("testCaseT")
            )
          )
        ),
        nnkCall.newTree(
          newIdentNode("main")
        )
      )
    )
  )
)
2.0.4 👎 FAIL

Output

Error: Command failed: nim c --gc:orc -d:nimArcDebug -d:nimArcIds  --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(6, 3) Warning: A custom '=destroy' hook which takes a 'var T' parameter is deprecated; it should take a 'T' parameter [Deprecated]
/home/runner/work/Nim/Nim/@mtemp.nim.c:94:98: error: expected expression before ‘static’
   94 | static NIM_CONST tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
      |                                                                                                  ^~~~~~
/home/runner/work/Nim/Nim/@mtemp.nim.c: In function ‘eqdestroy___temp_u4’:
/home/runner/work/Nim/Nim/@mtemp.nim.c:147:21: error: ‘TM__SRd76hP9cMfCzdUO857UhQQ_3’ undeclared (first use in this function); did you mean ‘TM__SRd76hP9cMfCzdUO857UhQQ_6’?
  147 |         echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                     TM__SRd76hP9cMfCzdUO857UhQQ_6
/home/runner/work/Nim/Nim/@mtemp.nim.c:147:21: note: each undeclared identifier is reported only once for each function it appears in
Error: execution of an external compiler program 'gcc -c  -w -fmax-errors=3 -pthread   -I/home/runner/.choosenim/toolchains/nim-2.0.4/lib -I/home/runner/work/Nim/Nim -o /home/runner/work/Nim/Nim/@mtemp.nim.c.o /home/runner/work/Nim/Nim/@mtemp.nim.c' failed with exit code: 1


assertions.nim(34)       raiseAssert
Error: unhandled exception: options.nim(681, 5) `false` errGenerated [AssertionDefect]

IR

Compiled filesize 0 bytes (0 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#define nimfr_(proc, file) \
TFrame FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#define nimfrs_(proc, file, slots, length) \
 struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename;NI len;VarSlot s[slots];} FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#define nimln_(n) \
 FR_.line = n;
#define nimlf_(n, file) \
 FR_.line = n; FR_.filename = file;
typedef struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimTypeV2 {
 void* destructor;
 NI size;
 NI16 align;
 NI16 depth;
 NU32* display;
 NCSTRING name;
 void* traceImpl;
 void* typeInfoV1;
 NI flags;
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ {
RootObj Sup;
};
struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg {
RootObj Sup;
 tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ testo;
};
struct NimStrPayload {
 NI cap;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
 NI len;
 NimStrPayload* p;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void);
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void);
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);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u5035)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_;
static const struct {
NI cap; NIM_CHAR data[26+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 26 | NIM_STRLIT_FLAG, "Destructor for TestTestObj" };
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_;
static const struct {
NI cap; NIM_CHAR data[12+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_8 = { 12 | NIM_STRLIT_FLAG, "\012Test Case T" };
static NIM_CONST tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
;
(&NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_)}, {{(&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_)}}}
;
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_7 = {{12, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_8}}
;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4817;
extern NIM_THREADVAR TFrame* framePtr__system_u4434;
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_5[2] = {3701606400, 3238797824};
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_ = {.destructor = (void*)rttiDestroy__temp_u52, .size = sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .align = (NI16) NIM_ALIGNOF(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_5, .traceImpl = (void*)NIM_NIL, .flags = 0};
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_6[2] = {3701606400, 223348224};
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_ = {.destructor = (void*)NIM_NIL, .size = sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .align = (NI16) NIM_ALIGNOF(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_6, .traceImpl = (void*)NIM_NIL, .flags = 0};
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(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (&nimInErrorMode__system_u4817);
 return result;
}
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u4434 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s_p0).calldepth = ((NI16)0);
 }
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u4434).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u4434;
 framePtr__system_u4434 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
  callDepthLimitReached__system_u5035();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u4434 = (*framePtr__system_u4434).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x_p0) {
 nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, rttiDestroy__temp_u52)(void* dest_p0) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 eqdestroy___temp_u4(((tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg*) (dest_p0)));
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void) {
 tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tt1;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
 nimfr_("testCaseT", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 nimZeroMem((void*)(&tt1), sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg));
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_7, 1);
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 nimZeroMem((void*)(&tt1.testo), sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ));
 tt1.testo.Sup.m_type = (&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_);
 {
  LA1_:;
 }
 {
  oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
  eqdestroy___temp_u4((&tt1));
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  *nimErr_ = oldNimErrFin1_;
 }
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u51)(void) {
NIM_BOOL* nimErr_;
 nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 testCaseT__temp_u6();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }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;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000();
 (*inner)();
#else
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_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();
 main__temp_u51();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}

Stats

  • Started 2024-05-20T01:33:13
  • Finished 2024-05-20T01:33:13
  • Duration

AST

nnkStmtList.newTree(
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkTypeSection.newTree(
          nnkTypeDef.newTree(
            newIdentNode("TestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              newEmptyNode()
            )
          ),
          nnkTypeDef.newTree(
            newIdentNode("TestTestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              nnkRecList.newTree(
                nnkIdentDefs.newTree(
                  newIdentNode("testo"),
                  newIdentNode("TestObj"),
                  newEmptyNode()
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          nnkAccQuoted.newTree(
            newIdentNode("="),
            newIdentNode("destroy")
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode(),
            nnkIdentDefs.newTree(
              newIdentNode("x"),
              nnkVarTy.newTree(
                newIdentNode("TestTestObj")
              ),
              newEmptyNode()
            )
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("Destructor for TestTestObj")
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("testCaseT"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("\nTest Case T")
            ),
            nnkLetSection.newTree(
              nnkIdentDefs.newTree(
                nnkPragmaExpr.newTree(
                  newIdentNode("tt1"),
                  nnkPragma.newTree(
                    newIdentNode("used")
                  )
                ),
                newEmptyNode(),
                nnkObjConstr.newTree(
                  newIdentNode("TestTestObj"),
                  nnkExprColonExpr.newTree(
                    newIdentNode("testo"),
                    nnkCall.newTree(
                      newIdentNode("TestObj")
                    )
                  )
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("main"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCall.newTree(
              newIdentNode("testCaseT")
            )
          )
        ),
        nnkCall.newTree(
          newIdentNode("main")
        )
      )
    )
  )
)
1.6.20 👍 OK

Output

Test Case T
Destructor for TestTestObj

IR

Compiled filesize 95.02 Kb (97,296 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#  define nimfr_(proc, file) \
 TFrame FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#  define nimfrs_(proc, file, slots, length) \
 struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#  define nimln_(n, file) \
 FR_.line = n; FR_.filename = file;
typedef struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimTypeV2 {
void* destructor;
NI size;
NI align;
NCSTRING name;
void* traceImpl;
void* typeInfoV1;
NI flags;
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ {
RootObj Sup;
};
struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg {
RootObj Sup;
tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ testo;
};
struct NimStrPayload {
NI cap;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
NI len;
NimStrPayload* p;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u35)(void);
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a, int v, NI size);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args, NI argsLen_0);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4838)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot20atslibatssystemdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot20atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_;
static const struct {
NI cap; NIM_CHAR data[26+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 26 | NIM_STRLIT_FLAG, "Destructor for TestTestObj" };
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
;
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_;
static NIM_CONST tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{(&NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_)}, {{(&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_)}}}
;
static const struct {
NI cap; NIM_CHAR data[12+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_6 = { 12 | NIM_STRLIT_FLAG, "\012Test Case T" };
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_5 = {{12, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_6}}
;
extern NIM_BOOL nimInErrorMode__system_u4667;
extern TFrame* framePtr__system_u4316;
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a, int v, NI size) {
 void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (NIM_BOOL*)0;
 result = (&nimInErrorMode__system_u4667);
 return result;
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 nimSetMem__systemZmemory_u7(p, ((int) 0), size);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
static N_INLINE(void, nimFrame)(TFrame* s) {
 {
  if (!(framePtr__system_u4316 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s).calldepth = ((NI16) 0);
 }
 goto LA1_;
 LA3_: ;
 {
  (*s).calldepth = (NI16)((*framePtr__system_u4316).calldepth + ((NI16) 1));
 }
 LA1_: ;
 (*s).prev = framePtr__system_u4316;
 framePtr__system_u4316 = s;
 {
  if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
  callDepthLimitReached__system_u4838();
 }
 LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u4316 = (*framePtr__system_u4316).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x) {
 nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void) {
 tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tt1;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
 nimfr_("testCaseT", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 nimZeroMem((void*)(&tt1), sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg));
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_5, 1);
 nimZeroMem((void*)(&tt1), sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg));
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 nimZeroMem((void*)(&tt1.testo), sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ));
 tt1.testo.Sup.m_type = (&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_);
 {
  LA1_:;
 }
 {
  oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
  eqdestroy___temp_u4((&tt1));
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  *nimErr_ = oldNimErrFin1_;
 }
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u35)(void) {
NIM_BOOL* nimErr_;
 nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 testCaseT__temp_u6();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }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) {
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot20atslibatssystemdotnim_DatInit000();
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot20atslibatssystemdotnim_Init000();
 atmtempdotnim_DatInit000();
 PreMainInner();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
 NimMainModule();
}
N_CDECL(void, NimMain)(void) {
 PreMain();
 NimMainInner();
}
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();
 main__temp_u35();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void) {
NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_.destructor = (void*)eqdestroy___temp_u4; NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_.size = sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg); NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_.align = NIM_ALIGNOF(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg); NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_.name = "|nim.temp.TestTestObj|RootObj|";
; NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_.traceImpl = (void*)NIM_NIL; NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_.flags = 0;NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_.destructor = (void*)NIM_NIL; NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_.size = sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ); NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_.align = NIM_ALIGNOF(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ); NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_.name = "|nim.temp.TestObj|RootObj|";
; NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_.traceImpl = (void*)NIM_NIL; NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_.flags = 0;}

Stats

  • Started 2024-05-20T01:33:16
  • Finished 2024-05-20T01:33:16
  • Duration
1.4.8 👎 FAIL

Output

Error: Command failed: nim c --gc:orc -d:nimArcDebug -d:nimArcIds  --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/.choosenim/toolchains/nim-1.4.8/lib/system/bitmasks.nim(13, 3) Error: redefinition of 'PageShift'; previous declaration here: /home/runner/.choosenim/toolchains/nim-1.4.8/lib/system/bitmasks.nim(13, 3)

IR

Compiled filesize 95.02 Kb (97,296 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#  define nimfr_(proc, file) \
 TFrame FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#  define nimfrs_(proc, file, slots, length) \
 struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#  define nimln_(n, file) \
 FR_.line = n; FR_.filename = file;
typedef struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimTypeV2 {
void* destructor;
NI size;
NI align;
NCSTRING name;
void* traceImpl;
void* typeInfoV1;
NI flags;
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ {
RootObj Sup;
};
struct tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg {
RootObj Sup;
tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ testo;
};
struct NimStrPayload {
NI cap;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
NI len;
NimStrPayload* p;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u35)(void);
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a, int v, NI size);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args, NI argsLen_0);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4838)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot20atslibatssystemdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot20atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
N_LIB_PRIVATE TNimTypeV2 NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_;
static const struct {
NI cap; NIM_CHAR data[26+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 26 | NIM_STRLIT_FLAG, "Destructor for TestTestObj" };
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
;
N_LIB_PRIVATE TNimTypeV2 NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_;
static NIM_CONST tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{(&NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_)}, {{(&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_)}}}
;
static const struct {
NI cap; NIM_CHAR data[12+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_6 = { 12 | NIM_STRLIT_FLAG, "\012Test Case T" };
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_5 = {{12, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_6}}
;
extern NIM_BOOL nimInErrorMode__system_u4667;
extern TFrame* framePtr__system_u4316;
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a, int v, NI size) {
 void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (NIM_BOOL*)0;
 result = (&nimInErrorMode__system_u4667);
 return result;
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 nimSetMem__systemZmemory_u7(p, ((int) 0), size);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
static N_INLINE(void, nimFrame)(TFrame* s) {
 {
  if (!(framePtr__system_u4316 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s).calldepth = ((NI16) 0);
 }
 goto LA1_;
 LA3_: ;
 {
  (*s).calldepth = (NI16)((*framePtr__system_u4316).calldepth + ((NI16) 1));
 }
 LA1_: ;
 (*s).prev = framePtr__system_u4316;
 framePtr__system_u4316 = s;
 {
  if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
  callDepthLimitReached__system_u4838();
 }
 LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u4316 = (*framePtr__system_u4316).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u4)(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg* x) {
 nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__temp_u6)(void) {
 tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg tt1;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
 nimfr_("testCaseT", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 nimZeroMem((void*)(&tt1), sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg));
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_5, 1);
 nimZeroMem((void*)(&tt1), sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg));
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 nimZeroMem((void*)(&tt1.testo), sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ));
 tt1.testo.Sup.m_type = (&NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_);
 {
  LA1_:;
 }
 {
  oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
  eqdestroy___temp_u4((&tt1));
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  *nimErr_ = oldNimErrFin1_;
 }
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u35)(void) {
NIM_BOOL* nimErr_;
 nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 testCaseT__temp_u6();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }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) {
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot20atslibatssystemdotnim_DatInit000();
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot20atslibatssystemdotnim_Init000();
 atmtempdotnim_DatInit000();
 PreMainInner();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
 NimMainModule();
}
N_CDECL(void, NimMain)(void) {
 PreMain();
 NimMainInner();
}
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();
 main__temp_u35();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void) {
NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_.destructor = (void*)eqdestroy___temp_u4; NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_.size = sizeof(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg); NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_.align = NIM_ALIGNOF(tyObject_TestTestObj__BcEMIiQvlQWs2Q5GK9bYvCg); NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_.name = "|nim.temp.TestTestObj|RootObj|";
; NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_.traceImpl = (void*)NIM_NIL; NTIv2__BcEMIiQvlQWs2Q5GK9bYvCg_.flags = 0;NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_.destructor = (void*)NIM_NIL; NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_.size = sizeof(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ); NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_.align = NIM_ALIGNOF(tyObject_TestObj__jQ1QBnQfCzrc4JyDBZaLlQ); NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_.name = "|nim.temp.TestObj|RootObj|";
; NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_.traceImpl = (void*)NIM_NIL; NTIv2__jQ1QBnQfCzrc4JyDBZaLlQ_.flags = 0;}

Stats

  • Started 2024-05-20T01:33:18
  • Finished 2024-05-20T01:33:18
  • Duration

AST

nnkStmtList.newTree(
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkTypeSection.newTree(
          nnkTypeDef.newTree(
            newIdentNode("TestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              newEmptyNode()
            )
          ),
          nnkTypeDef.newTree(
            newIdentNode("TestTestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              nnkRecList.newTree(
                nnkIdentDefs.newTree(
                  newIdentNode("testo"),
                  newIdentNode("TestObj"),
                  newEmptyNode()
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          nnkAccQuoted.newTree(
            newIdentNode("="),
            newIdentNode("destroy")
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode(),
            nnkIdentDefs.newTree(
              newIdentNode("x"),
              nnkVarTy.newTree(
                newIdentNode("TestTestObj")
              ),
              newEmptyNode()
            )
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("Destructor for TestTestObj")
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("testCaseT"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("\nTest Case T")
            ),
            nnkLetSection.newTree(
              nnkIdentDefs.newTree(
                nnkPragmaExpr.newTree(
                  newIdentNode("tt1"),
                  nnkPragma.newTree(
                    newIdentNode("used")
                  )
                ),
                newEmptyNode(),
                nnkObjConstr.newTree(
                  newIdentNode("TestTestObj"),
                  nnkExprColonExpr.newTree(
                    newIdentNode("testo"),
                    nnkCall.newTree(
                      newIdentNode("TestObj")
                    )
                  )
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("main"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCall.newTree(
              newIdentNode("testCaseT")
            )
          )
        ),
        nnkCall.newTree(
          newIdentNode("main")
        )
      )
    )
  )
)
1.2.18 👍 OK

Output

Test Case T
Destructor for TestTestObj

IR

Compiled filesize 87.52 Kb (89,616 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#  define nimfr_(proc, file) \
 TFrame FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#  define nimfrs_(proc, file, slots, length) \
 struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#  define nimln_(n, file) \
 FR_.line = n; FR_.filename = file;
typedef struct tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct tyObject_TestObj__3AeJkC21Y1k6SDwUrpYJAA tyObject_TestObj__3AeJkC21Y1k6SDwUrpYJAA;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimType {
void* destructor;
NI size;
NCSTRING name;
void* traceImpl;
void* disposeImpl;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_TestObj__3AeJkC21Y1k6SDwUrpYJAA {
RootObj Sup;
};
struct tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA {
RootObj Sup;
tyObject_TestObj__3AeJkC21Y1k6SDwUrpYJAA testo;
};
struct NimStrPayload {
NI cap;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
NI len;
NimStrPayload* p;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
N_LIB_PRIVATE N_NIMCALL(void, main__EzBZaa239as9bFx8yeHDoTOw)(void);
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__EzBZaa239as9bFx8yeHDoTOw_2)(void);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___zBID29aekK1hehpDfKbkqSg)(tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA* x);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args, NI argsLen_0);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NOINLINE(void, chckNil)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
N_LIB_PRIVATE TNimType NTI__ARKTm9bq3MWD4lEB2eNiz9aA_;
static const struct {
NI cap; NIM_CHAR data[26+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 26 | NIM_STRLIT_FLAG, "Destructor for TestTestObj" };
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
;
N_LIB_PRIVATE TNimType NTI__3AeJkC21Y1k6SDwUrpYJAA_;
static NIM_CONST tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{(&NTI__ARKTm9bq3MWD4lEB2eNiz9aA_)}, {{(&NTI__3AeJkC21Y1k6SDwUrpYJAA_)}}}
;
static const struct {
NI cap; NIM_CHAR data[12+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_6 = { 12 | NIM_STRLIT_FLAG, "\012Test Case T" };
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_5 = {{12, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_6}}
;
extern NIM_BOOL nimInErrorMode__759bT87luu8XGcbkw13FUjA;
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, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {
 void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (NIM_BOOL*)0;
 result = (&nimInErrorMode__759bT87luu8XGcbkw13FUjA);
 return result;
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
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;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___zBID29aekK1hehpDfKbkqSg)(tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA* x) {
 nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__EzBZaa239as9bFx8yeHDoTOw_2)(void) {
 tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA tt1;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
 nimfr_("testCaseT", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 nimZeroMem((void*)(&tt1), sizeof(tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA));
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_5, 1);
 chckNil((void*)(&tt1));
 nimZeroMem((void*)(&tt1), sizeof(tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA));
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 chckNil((void*)(&tt1.testo));
 nimZeroMem((void*)(&tt1.testo), sizeof(tyObject_TestObj__3AeJkC21Y1k6SDwUrpYJAA));
 tt1.testo.Sup.m_type = (&NTI__3AeJkC21Y1k6SDwUrpYJAA_);
 {
  LA1_:;
 }
 {
  oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
  eqdestroy___zBID29aekK1hehpDfKbkqSg((&tt1));
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  *nimErr_ = oldNimErrFin1_;
 }
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, main__EzBZaa239as9bFx8yeHDoTOw)(void) {
NIM_BOOL* nimErr_;
 nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 testCaseT__EzBZaa239as9bFx8yeHDoTOw_2();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
 void (*volatile inner)(void);
 inner = PreMainInner;
 systemDatInit000();
 initStackBottomWith((void *)&inner);
 systemInit000();
 tempDatInit000();
 (*inner)();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
 NimMainModule();
}
N_CDECL(void, NimMain)(void) {
 void (*volatile inner)(void);
 PreMain();
 inner = NimMainInner;
 initStackBottomWith((void *)&inner);
 (*inner)();
}
int main(int argc, char** args, char** env) {
 cmdLine = args;
 cmdCount = argc;
 gEnv = env;
 NimMain();
 return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
NIM_BOOL* nimErr_;
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimErr_ = nimErrorFlag();
 main__EzBZaa239as9bFx8yeHDoTOw();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void) {
NTI__ARKTm9bq3MWD4lEB2eNiz9aA_.destructor = (void*)eqdestroy___zBID29aekK1hehpDfKbkqSg; NTI__ARKTm9bq3MWD4lEB2eNiz9aA_.size = sizeof(tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA);
NTI__ARKTm9bq3MWD4lEB2eNiz9aA_.name = "|nim.temp.TestTestObj|RootObj|";
NTI__ARKTm9bq3MWD4lEB2eNiz9aA_.traceImpl = (void*)NIM_NIL;
NTI__ARKTm9bq3MWD4lEB2eNiz9aA_.disposeImpl = (void*)NIM_NIL;
NTI__3AeJkC21Y1k6SDwUrpYJAA_.destructor = (void*)NIM_NIL; NTI__3AeJkC21Y1k6SDwUrpYJAA_.size = sizeof(tyObject_TestObj__3AeJkC21Y1k6SDwUrpYJAA);
NTI__3AeJkC21Y1k6SDwUrpYJAA_.name = "|nim.temp.TestObj|RootObj|";
NTI__3AeJkC21Y1k6SDwUrpYJAA_.traceImpl = (void*)NIM_NIL;
NTI__3AeJkC21Y1k6SDwUrpYJAA_.disposeImpl = (void*)NIM_NIL;
}

Stats

  • Started 2024-05-20T01:33:21
  • Finished 2024-05-20T01:33:21
  • Duration
1.0.10 👎 FAIL

Output

Error: Command failed: nim c --gc:orc -d:nimArcDebug -d:nimArcIds  --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) Error: 'none', 'boehm' or 'refc' expected, but 'orc' found

IR

Compiled filesize 87.52 Kb (89,616 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#  define nimfr_(proc, file) \
 TFrame FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#  define nimfrs_(proc, file, slots, length) \
 struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#  define nimln_(n, file) \
 FR_.line = n; FR_.filename = file;
typedef struct tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct tyObject_TestObj__3AeJkC21Y1k6SDwUrpYJAA tyObject_TestObj__3AeJkC21Y1k6SDwUrpYJAA;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimType {
void* destructor;
NI size;
NCSTRING name;
void* traceImpl;
void* disposeImpl;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_TestObj__3AeJkC21Y1k6SDwUrpYJAA {
RootObj Sup;
};
struct tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA {
RootObj Sup;
tyObject_TestObj__3AeJkC21Y1k6SDwUrpYJAA testo;
};
struct NimStrPayload {
NI cap;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
NI len;
NimStrPayload* p;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
N_LIB_PRIVATE N_NIMCALL(void, main__EzBZaa239as9bFx8yeHDoTOw)(void);
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__EzBZaa239as9bFx8yeHDoTOw_2)(void);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___zBID29aekK1hehpDfKbkqSg)(tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA* x);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args, NI argsLen_0);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NOINLINE(void, chckNil)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
N_LIB_PRIVATE TNimType NTI__ARKTm9bq3MWD4lEB2eNiz9aA_;
static const struct {
NI cap; NIM_CHAR data[26+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 26 | NIM_STRLIT_FLAG, "Destructor for TestTestObj" };
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{26, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4}}
;
N_LIB_PRIVATE TNimType NTI__3AeJkC21Y1k6SDwUrpYJAA_;
static NIM_CONST tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA TM__SRd76hP9cMfCzdUO857UhQQ_2 = {{(&NTI__ARKTm9bq3MWD4lEB2eNiz9aA_)}, {{(&NTI__3AeJkC21Y1k6SDwUrpYJAA_)}}}
;
static const struct {
NI cap; NIM_CHAR data[12+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_6 = { 12 | NIM_STRLIT_FLAG, "\012Test Case T" };
static NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_5 = {{12, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_6}}
;
extern NIM_BOOL nimInErrorMode__759bT87luu8XGcbkw13FUjA;
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, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {
 void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (NIM_BOOL*)0;
 result = (&nimInErrorMode__759bT87luu8XGcbkw13FUjA);
 return result;
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
 nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
}
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;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___zBID29aekK1hehpDfKbkqSg)(tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA* x) {
 nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, testCaseT__EzBZaa239as9bFx8yeHDoTOw_2)(void) {
 tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA tt1;
NIM_BOOL oldNimErrFin1_;
NIM_BOOL* nimErr_;
 nimfr_("testCaseT", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 nimZeroMem((void*)(&tt1), sizeof(tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA));
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_5, 1);
 chckNil((void*)(&tt1));
 nimZeroMem((void*)(&tt1), sizeof(tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA));
 tt1 = TM__SRd76hP9cMfCzdUO857UhQQ_2;
 chckNil((void*)(&tt1.testo));
 nimZeroMem((void*)(&tt1.testo), sizeof(tyObject_TestObj__3AeJkC21Y1k6SDwUrpYJAA));
 tt1.testo.Sup.m_type = (&NTI__3AeJkC21Y1k6SDwUrpYJAA_);
 {
  LA1_:;
 }
 {
  oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE;
  eqdestroy___zBID29aekK1hehpDfKbkqSg((&tt1));
  if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
  *nimErr_ = oldNimErrFin1_;
 }
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, main__EzBZaa239as9bFx8yeHDoTOw)(void) {
NIM_BOOL* nimErr_;
 nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 testCaseT__EzBZaa239as9bFx8yeHDoTOw_2();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
 void (*volatile inner)(void);
 inner = PreMainInner;
 systemDatInit000();
 initStackBottomWith((void *)&inner);
 systemInit000();
 tempDatInit000();
 (*inner)();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
 NimMainModule();
}
N_CDECL(void, NimMain)(void) {
 void (*volatile inner)(void);
 PreMain();
 inner = NimMainInner;
 initStackBottomWith((void *)&inner);
 (*inner)();
}
int main(int argc, char** args, char** env) {
 cmdLine = args;
 cmdCount = argc;
 gEnv = env;
 NimMain();
 return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
NIM_BOOL* nimErr_;
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimErr_ = nimErrorFlag();
 main__EzBZaa239as9bFx8yeHDoTOw();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 BeforeRet_: ;
 nimTestErrorFlag();
 popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void) {
NTI__ARKTm9bq3MWD4lEB2eNiz9aA_.destructor = (void*)eqdestroy___zBID29aekK1hehpDfKbkqSg; NTI__ARKTm9bq3MWD4lEB2eNiz9aA_.size = sizeof(tyObject_TestTestObj__ARKTm9bq3MWD4lEB2eNiz9aA);
NTI__ARKTm9bq3MWD4lEB2eNiz9aA_.name = "|nim.temp.TestTestObj|RootObj|";
NTI__ARKTm9bq3MWD4lEB2eNiz9aA_.traceImpl = (void*)NIM_NIL;
NTI__ARKTm9bq3MWD4lEB2eNiz9aA_.disposeImpl = (void*)NIM_NIL;
NTI__3AeJkC21Y1k6SDwUrpYJAA_.destructor = (void*)NIM_NIL; NTI__3AeJkC21Y1k6SDwUrpYJAA_.size = sizeof(tyObject_TestObj__3AeJkC21Y1k6SDwUrpYJAA);
NTI__3AeJkC21Y1k6SDwUrpYJAA_.name = "|nim.temp.TestObj|RootObj|";
NTI__3AeJkC21Y1k6SDwUrpYJAA_.traceImpl = (void*)NIM_NIL;
NTI__3AeJkC21Y1k6SDwUrpYJAA_.disposeImpl = (void*)NIM_NIL;
}

Stats

  • Started 2024-05-20T01:33:23
  • Finished 2024-05-20T01:33:23
  • Duration

AST

nnkStmtList.newTree(
  nnkWhenStmt.newTree(
    nnkElifBranch.newTree(
      newIdentNode("isMainModule"),
      nnkStmtList.newTree(
        nnkTypeSection.newTree(
          nnkTypeDef.newTree(
            newIdentNode("TestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              newEmptyNode()
            )
          ),
          nnkTypeDef.newTree(
            newIdentNode("TestTestObj"),
            newEmptyNode(),
            nnkObjectTy.newTree(
              newEmptyNode(),
              nnkOfInherit.newTree(
                newIdentNode("RootObj")
              ),
              nnkRecList.newTree(
                nnkIdentDefs.newTree(
                  newIdentNode("testo"),
                  newIdentNode("TestObj"),
                  newEmptyNode()
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          nnkAccQuoted.newTree(
            newIdentNode("="),
            newIdentNode("destroy")
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode(),
            nnkIdentDefs.newTree(
              newIdentNode("x"),
              nnkVarTy.newTree(
                newIdentNode("TestTestObj")
              ),
              newEmptyNode()
            )
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("Destructor for TestTestObj")
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("testCaseT"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCommand.newTree(
              newIdentNode("echo"),
              newLit("\nTest Case T")
            ),
            nnkLetSection.newTree(
              nnkIdentDefs.newTree(
                nnkPragmaExpr.newTree(
                  newIdentNode("tt1"),
                  nnkPragma.newTree(
                    newIdentNode("used")
                  )
                ),
                newEmptyNode(),
                nnkObjConstr.newTree(
                  newIdentNode("TestTestObj"),
                  nnkExprColonExpr.newTree(
                    newIdentNode("testo"),
                    nnkCall.newTree(
                      newIdentNode("TestObj")
                    )
                  )
                )
              )
            )
          )
        ),
        nnkProcDef.newTree(
          newIdentNode("main"),
          newEmptyNode(),
          newEmptyNode(),
          nnkFormalParams.newTree(
            newEmptyNode()
          ),
          newEmptyNode(),
          newEmptyNode(),
          nnkStmtList.newTree(
            nnkCall.newTree(
              newIdentNode("testCaseT")
            )
          )
        ),
        nnkCall.newTree(
          newIdentNode("main")
        )
      )
    )
  )
)
#ca1f3f36b ➡️ 🐛

Diagnostics

andreas rumpf introduced a bug at 2022-09-27 10:57:47 +0200 on commit #ca1f3f36b with message:

no ropes WIP (#20433)

* refactorings in preparation for ropes elimination of the C code generator; mostly the usual ': Rope' -> 'result: var Rope' rewrite
* rewrote ccgcalls.nim
* refactored ccgexprs.nim
* ccgliterals: refactoring
* refactoring: code dealing with name mangling
* refactoring: getRecordFieldsAux
* ropes are strings (insert obscene joke here)
* optimize JS code gen
* optimizations and code improvements
* more optimizations
* final cleanups

The bug is in the files:

compiler/ast.nim
compiler/astalgo.nim
compiler/ccgcalls.nim
compiler/ccgexprs.nim
compiler/ccgliterals.nim
compiler/ccgreset.nim
compiler/ccgstmts.nim
compiler/ccgthreadvars.nim
compiler/ccgtrav.nim
compiler/ccgtypes.nim
compiler/cgen.nim
compiler/cgendata.nim
compiler/cgmeth.nim
compiler/depends.nim
compiler/extccomp.nim
compiler/ic/ic.nim
compiler/jsgen.nim
compiler/jstypes.nim
compiler/msgs.nim
compiler/pragmas.nim
compiler/ropes.nim
compiler/semexprs.nim
compiler/semtypes.nim
compiler/sighashes.nim

The bug can be in the commits:

(Diagnostics sometimes off-by-one).

Stats
  • GCC 11.4.0
  • Clang 14.0.0
  • NodeJS 20.2
  • Created 2024-05-20T01:32:42Z
  • Comments 3
  • Commands nim c --gc:orc -d:nimArcDebug -d:nimArcIds --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

🤖 Bug found in 31 minutes bisecting 2232 commits at 71 commits per second

from nim.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.