-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Simple destructor code gives invalid C #23627
Comments
!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() |
🐧 Linux bisect by @ringabout (member)devel 👎 FAILOutput
IRCompiled filesize0 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
ASTnnkStmtList.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 👎 FAILOutput
IRCompiled filesize0 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
ASTnnkStmtList.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 👎 FAILOutput
IRCompiled filesize0 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
ASTnnkStmtList.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 👎 FAILOutput
IRCompiled filesize0 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
ASTnnkStmtList.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 👎 FAILOutput
IRCompiled filesize0 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
ASTnnkStmtList.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 👎 FAILOutput
IRCompiled filesize0 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
ASTnnkStmtList.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 👎 FAILOutput
IRCompiled filesize0 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
ASTnnkStmtList.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
🤖 Bug found in |
!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() |
🐧 Linux bisect by @ringabout (member)devel 👎 FAILOutput
IRCompiled filesize0 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
ASTnnkStmtList.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 👎 FAILOutput
IRCompiled filesize0 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
ASTnnkStmtList.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 👎 FAILOutput
IRCompiled filesize0 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
ASTnnkStmtList.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 👍 OKOutput
IRCompiled filesize95.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
1.4.8 👎 FAILOutput
IRCompiled filesize95.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
ASTnnkStmtList.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 👍 OKOutput
IRCompiled filesize87.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
1.0.10 👎 FAILOutput
IRCompiled filesize87.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
ASTnnkStmtList.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 ➡️ 🐛Diagnosticsandreas rumpf introduced a bug at
The bug is in the files:
The bug can be in the commits: (Diagnostics sometimes off-by-one). Stats
🤖 Bug found in |
ringabout
added a commit
that referenced
this issue
May 20, 2024
Araq
pushed a commit
that referenced
this issue
May 21, 2024
fixes #23627 ```nim 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()) ``` When generating const object fields, it's likely that we need to generate type infos for the object, which may be an object with custom hooks. We need to generate potential consts in the hooks first. #20433 changed the semantics of initialization. It should evaluate`BracedInit` first.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Description
The following example gives C code that does not compile.
Compiling using gcc C (v14.1, with compatibility switches), C++ and clang all gave similar results to that shown in
Current Output
. Commands tried:Nim Version
2.0.4
Current Output
Expected Output
Possible Solution
No response
Additional Information
No response
The text was updated successfully, but these errors were encountered: