Giter VIP home page Giter VIP logo

Comments (5)

juancarlospaco avatar juancarlospaco commented on July 22, 2024 1

!nim cpp

type
    Flags* = enum
        A
        B
    Mask* {.size: sizeof(uint16).} = set[Flags]

proc check(flags: Mask) =
    echo flags

check {A, B}

from nim.

github-actions avatar github-actions commented on July 22, 2024
🐧 Linux bisect by @juancarlospaco (collaborator)
devel πŸ‘Ž FAIL

Output

Error: Command failed: nim cpp --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/usr/bin/ld: /home/runner/work/Nim/Nim/@mtemp.nim.cpp.o: in function `check__temp_u8(unsigned short)':
@mtemp.nim.cpp:(.text+0x1ce): undefined reference to `dollar___temp_u95(unsigned short)'
/usr/bin/ld: /home/runner/work/Nim/Nim/temp: hidden symbol `_Z17dollar___temp_u95t' isn't defined
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
Error: execution of an external program failed: 'g++   -o /home/runner/work/Nim/Nim/temp  /home/runner/work/Nim/Nim/@m..@s..@[email protected]@stoolchains@snim-@hdevel@slib@[email protected] /home/runner/work/Nim/Nim/@m..@s..@[email protected]@stoolchains@snim-@hdevel@slib@sstd@[email protected] /home/runner/work/Nim/Nim/@m..@s..@[email protected]@stoolchains@snim-@hdevel@slib@[email protected] /home/runner/work/Nim/Nim/@m..@s..@[email protected]@stoolchains@snim-@hdevel@[email protected] /home/runner/work/Nim/Nim/@mtemp.nim.cpp.o  -pthread -pthread   -ldl'
assertions.nim(34)       raiseAssert
Error: unhandled exception: errGenerated [AssertionDefect]

IR

Compiled filesize 0 bytes (0 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <exception>
#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;
struct NimStrPayload;
struct NimStringV2;
struct Exception;
struct RootObj;
struct TNimTypeV2;
struct tySequence__9bNRJkU9cJnNkESCDTQ7DgcQ;
struct tySequence__9bNRJkU9cJnNkESCDTQ7DgcQ_Content;
struct tyObject_StackTraceEntry__2Xjg6E7TZG7p9bcgUNTKHrg;
typedef NU16 tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w;
struct NimStrPayload {
 NI cap;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
 NI len;
 NimStrPayload* p;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
typedef NU8 tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w;
struct TNimTypeV2 {
 void* destructor;
 NI size;
 NI16 align;
 NI16 depth;
 NU32* display;
 void* traceImpl;
 void* typeInfoV1;
 NI flags;
 void** vTable;
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tySequence__9bNRJkU9cJnNkESCDTQ7DgcQ {
NI len; tySequence__9bNRJkU9cJnNkESCDTQ7DgcQ_Content* p;
};
struct Exception : public RootObj {
 Exception* parent;
 NCSTRING name;
 NimStringV2 message;
 tySequence__9bNRJkU9cJnNkESCDTQ7DgcQ trace;
 Exception* up;
};
struct tyObject_StackTraceEntry__2Xjg6E7TZG7p9bcgUNTKHrg {
 NCSTRING procname;
 NI line;
 NCSTRING filename;
};
struct tySequence__9bNRJkU9cJnNkESCDTQ7DgcQ_Content { NI cap; tyObject_StackTraceEntry__2Xjg6E7TZG7p9bcgUNTKHrg data[SEQ_DECL_SIZE]; };
N_LIB_PRIVATE N_NIMCALL(void, check__temp_u8)(tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w flags_p0);
N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___temp_u95)(tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w x_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
static N_INLINE(TFrame*, getFrame)(void);
static N_INLINE(void, setFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOCONV(void, deallocShared)(void* p_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4587)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystematsexceptionsdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
static const struct {
NI cap; NIM_CHAR data[1+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_2 = { 1 | NIM_STRLIT_FLAG, "A" };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_3 = {1, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_2};
static const struct {
NI cap; NIM_CHAR data[1+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 1 | NIM_STRLIT_FLAG, "B" };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_5 = {1, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4};
extern NIM_THREADVAR TFrame* framePtr__system_u2654;
N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___temp_u5)(tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w e_p0) {
 NimStringV2 result;
 switch (e_p0) {
 case ((tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w)0):
 {
  result = TM__SRd76hP9cMfCzdUO857UhQQ_3;
 }
 break;
 case ((tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w)1):
 {
  result = TM__SRd76hP9cMfCzdUO857UhQQ_5;
 }
 break;
 default: __builtin_unreachable();
 }
 return result;
}
static N_INLINE(TFrame*, getFrame)(void) {
 TFrame* result;
 result = framePtr__system_u2654;
 return result;
}
static N_INLINE(void, setFrame)(TFrame* s_p0) {
 framePtr__system_u2654 = s_p0;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u2654 == ((TFrame*) NIM_NIL))) goto LA3_;
{		(*s_p0).calldepth = ((NI16)0);
}	}
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u2654).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u2654;
 framePtr__system_u2654 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
{		callDepthLimitReached__system_u4587();
}	}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u2654 = (*framePtr__system_u2654).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, check__temp_u8)(tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w flags_p0) {
 NimStringV2 colontmpD_;
 std::exception_ptr T2_;
 tyArray__nHXaesL0DJZHyVS07ARPRA T3_;
 TFrame* _nimCurFrame;
 nimfr_("check", "/home/runner/work/Nim/Nim/temp.nim");
 _nimCurFrame = getFrame();
 colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
 try {
 colontmpD_ = dollar___temp_u95(flags_p0);
 T3_[0] = colontmpD_;
 echoBinSafe(T3_, 1);
 }
 catch (Exception* T3_) {
 setFrame(_nimCurFrame);
 T2_ = std::current_exception();
 }
 catch (...) {
  setFrame(_nimCurFrame);
  T2_ = std::current_exception();
 }
 {
  if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD_.p);
}
  if (T2_) std::rethrow_exception(T2_);
 }
 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;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystematsexceptionsdotnim_DatInit000();
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_Init000();
 (*inner)();
#else
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystematsexceptionsdotnim_DatInit000();
 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) {
{
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 check__temp_u8(3);
 popFrame();
}
}

Stats

  • Started 2024-06-07T13:54:52
  • Finished 2024-06-07T13:54:52
  • Duration

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      nnkPostfix.newTree(
        newIdentNode("*"),
        newIdentNode("Flags")
      ),
      newEmptyNode(),
      nnkEnumTy.newTree(
        newEmptyNode(),
        newIdentNode("A"),
        newIdentNode("B")
      )
    ),
    nnkTypeDef.newTree(
      nnkPragmaExpr.newTree(
        nnkPostfix.newTree(
          newIdentNode("*"),
          newIdentNode("Mask")
        ),
        nnkPragma.newTree(
          nnkExprColonExpr.newTree(
            newIdentNode("size"),
            nnkCall.newTree(
              newIdentNode("sizeof"),
              newIdentNode("uint16")
            )
          )
        )
      ),
      newEmptyNode(),
      nnkBracketExpr.newTree(
        newIdentNode("set"),
        newIdentNode("Flags")
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("check"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("flags"),
        newIdentNode("Mask"),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkCommand.newTree(
        newIdentNode("echo"),
        newIdentNode("flags")
      )
    )
  ),
  nnkCommand.newTree(
    newIdentNode("check"),
    nnkCurly.newTree(
      newIdentNode("A"),
      newIdentNode("B")
    )
  )
)
stable πŸ‘Ž FAIL

Output

Error: Command failed: nim cpp --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/usr/bin/ld: /home/runner/work/Nim/Nim/@mtemp.nim.cpp.o: in function `check__temp_u8(unsigned short)':
@mtemp.nim.cpp:(.text+0x1d2): undefined reference to `dollar___temp_u95(unsigned short)'
/usr/bin/ld: /home/runner/work/Nim/Nim/temp: hidden symbol `_Z17dollar___temp_u95t' isn't defined
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
Error: execution of an external program failed: 'g++   -o /home/runner/work/Nim/Nim/temp  /home/runner/work/Nim/Nim/@m..@s..@[email protected]@[email protected]@slib@[email protected] /home/runner/work/Nim/Nim/@m..@s..@[email protected]@[email protected]@slib@sstd@[email protected] /home/runner/work/Nim/Nim/@m..@s..@[email protected]@[email protected]@slib@[email protected] /home/runner/work/Nim/Nim/@m..@s..@[email protected]@[email protected]@[email protected] /home/runner/work/Nim/Nim/@mtemp.nim.cpp.o  -pthread -pthread   -ldl'
assertions.nim(34)       raiseAssert
Error: unhandled exception: options.nim(681, 5) `false` errGenerated [AssertionDefect]

IR

Compiled filesize 0 bytes (0 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <exception>
#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;
struct NimStrPayload;
struct NimStringV2;
struct Exception;
struct RootObj;
struct TNimTypeV2;
struct tySequence__W5u7dtuXI9c4BOBf9bW9bZhWQ;
struct tySequence__W5u7dtuXI9c4BOBf9bW9bZhWQ_Content;
struct tyObject_StackTraceEntry__6CL1lcV9bxEp7TPS0fN8sRQ;
typedef NU16 tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w;
struct NimStrPayload {
 NI cap;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
 NI len;
 NimStrPayload* p;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
typedef NU8 tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w;
struct TNimTypeV2 {
 void* destructor;
 NI size;
 NI16 align;
 NI16 depth;
 NU32* display;
 void* traceImpl;
 void* typeInfoV1;
 NI flags;
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tySequence__W5u7dtuXI9c4BOBf9bW9bZhWQ {
NI len; tySequence__W5u7dtuXI9c4BOBf9bW9bZhWQ_Content* p;
};
struct Exception : public RootObj {
 Exception* parent;
 NCSTRING name;
 NimStringV2 message;
 tySequence__W5u7dtuXI9c4BOBf9bW9bZhWQ trace;
 Exception* up;
};
struct tyObject_StackTraceEntry__6CL1lcV9bxEp7TPS0fN8sRQ {
 NCSTRING procname;
 NI line;
 NCSTRING filename;
};
struct tySequence__W5u7dtuXI9c4BOBf9bW9bZhWQ_Content { NI cap; tyObject_StackTraceEntry__6CL1lcV9bxEp7TPS0fN8sRQ data[SEQ_DECL_SIZE]; };
N_LIB_PRIVATE N_NIMCALL(void, check__temp_u8)(tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w flags_p0);
N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___temp_u95)(tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w x_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
static N_INLINE(TFrame*, getFrame)(void);
static N_INLINE(void, setFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOCONV(void, deallocShared)(void* p_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4584)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystematsexceptionsdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
static const struct {
NI cap; NIM_CHAR data[1+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_2 = { 1 | NIM_STRLIT_FLAG, "A" };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_3 = {1, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_2};
static const struct {
NI cap; NIM_CHAR data[1+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 1 | NIM_STRLIT_FLAG, "B" };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_5 = {1, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4};
extern NIM_THREADVAR TFrame* framePtr__system_u4020;
N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___temp_u5)(tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w e_p0) {
 NimStringV2 result;
 switch (e_p0) {
 case ((tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w)0):
 {
  result = TM__SRd76hP9cMfCzdUO857UhQQ_3;
 }
 break;
 case ((tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w)1):
 {
  result = TM__SRd76hP9cMfCzdUO857UhQQ_5;
 }
 break;
 }
 return result;
}
static N_INLINE(TFrame*, getFrame)(void) {
 TFrame* result;
 result = framePtr__system_u4020;
 return result;
}
static N_INLINE(void, setFrame)(TFrame* s_p0) {
 framePtr__system_u4020 = s_p0;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u4020 == ((TFrame*) NIM_NIL))) goto LA3_;
{		(*s_p0).calldepth = ((NI16)0);
}	}
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u4020).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u4020;
 framePtr__system_u4020 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
{		callDepthLimitReached__system_u4584();
}	}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u4020 = (*framePtr__system_u4020).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, check__temp_u8)(tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w flags_p0) {
 NimStringV2 colontmpD_;
 tyArray__nHXaesL0DJZHyVS07ARPRA T3_;
 TFrame* _nimCurFrame;
 nimfr_("check", "/home/runner/work/Nim/Nim/temp.nim");
 _nimCurFrame = getFrame();
 colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
 std::exception_ptr T2_;
 try {
 colontmpD_ = dollar___temp_u95(flags_p0);
 T3_[0] = colontmpD_;
 echoBinSafe(T3_, 1);
 }
 catch (Exception* T3_) {
 setFrame(_nimCurFrame);
 T2_ = std::current_exception();
 }
 catch (...) {
  setFrame(_nimCurFrame);
  T2_ = std::current_exception();
 }
 {
  if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD_.p);
}
  if (T2_) std::rethrow_exception(T2_);
 }
 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;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystematsexceptionsdotnim_DatInit000();
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000();
 (*inner)();
#else
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystematsexceptionsdotnim_DatInit000();
 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) {
{
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 check__temp_u8(3);
 popFrame();
}
}

Stats

  • Started 2024-06-07T13:54:53
  • Finished 2024-06-07T13:54:53
  • Duration

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      nnkPostfix.newTree(
        newIdentNode("*"),
        newIdentNode("Flags")
      ),
      newEmptyNode(),
      nnkEnumTy.newTree(
        newEmptyNode(),
        newIdentNode("A"),
        newIdentNode("B")
      )
    ),
    nnkTypeDef.newTree(
      nnkPragmaExpr.newTree(
        nnkPostfix.newTree(
          newIdentNode("*"),
          newIdentNode("Mask")
        ),
        nnkPragma.newTree(
          nnkExprColonExpr.newTree(
            newIdentNode("size"),
            nnkCall.newTree(
              newIdentNode("sizeof"),
              newIdentNode("uint16")
            )
          )
        )
      ),
      newEmptyNode(),
      nnkBracketExpr.newTree(
        newIdentNode("set"),
        newIdentNode("Flags")
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("check"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("flags"),
        newIdentNode("Mask"),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkCommand.newTree(
        newIdentNode("echo"),
        newIdentNode("flags")
      )
    )
  ),
  nnkCommand.newTree(
    newIdentNode("check"),
    nnkCurly.newTree(
      newIdentNode("A"),
      newIdentNode("B")
    )
  )
)
2.0.4 πŸ‘Ž FAIL

Output

Error: Command failed: nim cpp --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/usr/bin/ld: /home/runner/work/Nim/Nim/@mtemp.nim.cpp.o: in function `check__temp_u8(unsigned short)':
@mtemp.nim.cpp:(.text+0x1d2): undefined reference to `dollar___temp_u95(unsigned short)'
/usr/bin/ld: /home/runner/work/Nim/Nim/temp: hidden symbol `_Z17dollar___temp_u95t' isn't defined
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
Error: execution of an external program failed: 'g++   -o /home/runner/work/Nim/Nim/temp  /home/runner/work/Nim/Nim/@m..@s..@[email protected]@[email protected]@slib@[email protected] /home/runner/work/Nim/Nim/@m..@s..@[email protected]@[email protected]@slib@sstd@[email protected] /home/runner/work/Nim/Nim/@m..@s..@[email protected]@[email protected]@slib@[email protected] /home/runner/work/Nim/Nim/@m..@s..@[email protected]@[email protected]@[email protected] /home/runner/work/Nim/Nim/@mtemp.nim.cpp.o  -pthread -pthread   -ldl'
assertions.nim(34)       raiseAssert
Error: unhandled exception: options.nim(681, 5) `false` errGenerated [AssertionDefect]

IR

Compiled filesize 0 bytes (0 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <exception>
#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;
struct NimStrPayload;
struct NimStringV2;
struct Exception;
struct RootObj;
struct TNimTypeV2;
struct tySequence__W5u7dtuXI9c4BOBf9bW9bZhWQ;
struct tySequence__W5u7dtuXI9c4BOBf9bW9bZhWQ_Content;
struct tyObject_StackTraceEntry__6CL1lcV9bxEp7TPS0fN8sRQ;
typedef NU16 tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w;
struct NimStrPayload {
 NI cap;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
 NI len;
 NimStrPayload* p;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
typedef NU8 tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w;
struct TNimTypeV2 {
 void* destructor;
 NI size;
 NI16 align;
 NI16 depth;
 NU32* display;
 void* traceImpl;
 void* typeInfoV1;
 NI flags;
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tySequence__W5u7dtuXI9c4BOBf9bW9bZhWQ {
NI len; tySequence__W5u7dtuXI9c4BOBf9bW9bZhWQ_Content* p;
};
struct Exception : public RootObj {
 Exception* parent;
 NCSTRING name;
 NimStringV2 message;
 tySequence__W5u7dtuXI9c4BOBf9bW9bZhWQ trace;
 Exception* up;
};
struct tyObject_StackTraceEntry__6CL1lcV9bxEp7TPS0fN8sRQ {
 NCSTRING procname;
 NI line;
 NCSTRING filename;
};
struct tySequence__W5u7dtuXI9c4BOBf9bW9bZhWQ_Content { NI cap; tyObject_StackTraceEntry__6CL1lcV9bxEp7TPS0fN8sRQ data[SEQ_DECL_SIZE]; };
N_LIB_PRIVATE N_NIMCALL(void, check__temp_u8)(tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w flags_p0);
N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___temp_u95)(tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w x_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
static N_INLINE(TFrame*, getFrame)(void);
static N_INLINE(void, setFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOCONV(void, deallocShared)(void* p_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4584)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystematsexceptionsdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
static const struct {
NI cap; NIM_CHAR data[1+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_2 = { 1 | NIM_STRLIT_FLAG, "A" };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_3 = {1, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_2};
static const struct {
NI cap; NIM_CHAR data[1+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 1 | NIM_STRLIT_FLAG, "B" };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_5 = {1, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4};
extern NIM_THREADVAR TFrame* framePtr__system_u4020;
N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___temp_u5)(tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w e_p0) {
 NimStringV2 result;
 switch (e_p0) {
 case ((tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w)0):
 {
  result = TM__SRd76hP9cMfCzdUO857UhQQ_3;
 }
 break;
 case ((tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w)1):
 {
  result = TM__SRd76hP9cMfCzdUO857UhQQ_5;
 }
 break;
 }
 return result;
}
static N_INLINE(TFrame*, getFrame)(void) {
 TFrame* result;
 result = framePtr__system_u4020;
 return result;
}
static N_INLINE(void, setFrame)(TFrame* s_p0) {
 framePtr__system_u4020 = s_p0;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u4020 == ((TFrame*) NIM_NIL))) goto LA3_;
{		(*s_p0).calldepth = ((NI16)0);
}	}
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u4020).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u4020;
 framePtr__system_u4020 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
{		callDepthLimitReached__system_u4584();
}	}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u4020 = (*framePtr__system_u4020).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, check__temp_u8)(tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w flags_p0) {
 NimStringV2 colontmpD_;
 tyArray__nHXaesL0DJZHyVS07ARPRA T3_;
 TFrame* _nimCurFrame;
 nimfr_("check", "/home/runner/work/Nim/Nim/temp.nim");
 _nimCurFrame = getFrame();
 colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
 std::exception_ptr T2_;
 try {
 colontmpD_ = dollar___temp_u95(flags_p0);
 T3_[0] = colontmpD_;
 echoBinSafe(T3_, 1);
 }
 catch (Exception* T3_) {
 setFrame(_nimCurFrame);
 T2_ = std::current_exception();
 }
 catch (...) {
  setFrame(_nimCurFrame);
  T2_ = std::current_exception();
 }
 {
  if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD_.p);
}
  if (T2_) std::rethrow_exception(T2_);
 }
 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;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystematsexceptionsdotnim_DatInit000();
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000();
 (*inner)();
#else
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystematsexceptionsdotnim_DatInit000();
 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) {
{
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 check__temp_u8(3);
 popFrame();
}
}

Stats

  • Started 2024-06-07T13:54:54
  • Finished 2024-06-07T13:54:54
  • Duration

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      nnkPostfix.newTree(
        newIdentNode("*"),
        newIdentNode("Flags")
      ),
      newEmptyNode(),
      nnkEnumTy.newTree(
        newEmptyNode(),
        newIdentNode("A"),
        newIdentNode("B")
      )
    ),
    nnkTypeDef.newTree(
      nnkPragmaExpr.newTree(
        nnkPostfix.newTree(
          newIdentNode("*"),
          newIdentNode("Mask")
        ),
        nnkPragma.newTree(
          nnkExprColonExpr.newTree(
            newIdentNode("size"),
            nnkCall.newTree(
              newIdentNode("sizeof"),
              newIdentNode("uint16")
            )
          )
        )
      ),
      newEmptyNode(),
      nnkBracketExpr.newTree(
        newIdentNode("set"),
        newIdentNode("Flags")
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("check"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("flags"),
        newIdentNode("Mask"),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkCommand.newTree(
        newIdentNode("echo"),
        newIdentNode("flags")
      )
    )
  ),
  nnkCommand.newTree(
    newIdentNode("check"),
    nnkCurly.newTree(
      newIdentNode("A"),
      newIdentNode("B")
    )
  )
)
2.0.0 πŸ‘Ž FAIL

Output

Error: Command failed: nim cpp --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/usr/bin/ld: /home/runner/work/Nim/Nim/@mtemp.nim.cpp.o: in function `check__temp_u8(unsigned short)':
@mtemp.nim.cpp:(.text+0x1ea): undefined reference to `dollar___temp_u95(unsigned short)'
/usr/bin/ld: /home/runner/work/Nim/Nim/temp: hidden symbol `_Z17dollar___temp_u95t' isn't defined
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
Error: execution of an external program failed: 'g++   -o /home/runner/work/Nim/Nim/temp  /home/runner/work/Nim/Nim/@m..@s..@[email protected]@[email protected]@slib@[email protected] /home/runner/work/Nim/Nim/@m..@s..@[email protected]@[email protected]@slib@sstd@[email protected] /home/runner/work/Nim/Nim/@m..@s..@[email protected]@[email protected]@slib@[email protected] /home/runner/work/Nim/Nim/@m..@s..@[email protected]@[email protected]@[email protected] /home/runner/work/Nim/Nim/@mtemp.nim.cpp.o  -pthread -pthread   -ldl'
assertions.nim(34)       raiseAssert
Error: unhandled exception: options.nim(664, 5) `false` errGenerated [AssertionDefect]

IR

Compiled filesize 0 bytes (0 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <exception>
#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;
struct NimStrPayload;
struct NimStringV2;
struct Exception;
struct RootObj;
struct TNimTypeV2;
struct tySequence__2ALwPJKv8Nz8mMm4Hy9crdw;
struct tySequence__2ALwPJKv8Nz8mMm4Hy9crdw_Content;
struct tyObject_StackTraceEntry__nOjYJiLBbFH64nNmW1UArA;
typedef NU16 tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w;
struct NimStrPayload {
 NI cap;
 NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
 NI len;
 NimStrPayload* p;
};
typedef NimStringV2 tyArray__nHXaesL0DJZHyVS07ARPRA[1];
typedef NU8 tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w;
struct TNimTypeV2 {
 void* destructor;
 NI size;
 NI16 align;
 NI16 depth;
 NU32* display;
 void* traceImpl;
 void* typeInfoV1;
 NI flags;
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tySequence__2ALwPJKv8Nz8mMm4Hy9crdw {
NI len; tySequence__2ALwPJKv8Nz8mMm4Hy9crdw_Content* p;
};
struct Exception : public RootObj {
 Exception* parent;
 NCSTRING name;
 NimStringV2 message;
 tySequence__2ALwPJKv8Nz8mMm4Hy9crdw trace;
 Exception* up;
};
struct tyObject_StackTraceEntry__nOjYJiLBbFH64nNmW1UArA {
 NCSTRING procname;
 NI line;
 NCSTRING filename;
};
struct tySequence__2ALwPJKv8Nz8mMm4Hy9crdw_Content { NI cap; tyObject_StackTraceEntry__nOjYJiLBbFH64nNmW1UArA data[SEQ_DECL_SIZE]; };
N_LIB_PRIVATE N_NIMCALL(void, check__temp_u8)(tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w flags_p0);
N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___temp_u95)(tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w x_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
static N_INLINE(TFrame*, getFrame)(void);
static N_INLINE(void, setFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOCONV(void, deallocShared)(void* p_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4570)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystematsexceptionsdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
static const struct {
NI cap; NIM_CHAR data[1+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_2 = { 1 | NIM_STRLIT_FLAG, "A" };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_3 = {1, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_2};
static const struct {
NI cap; NIM_CHAR data[1+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 1 | NIM_STRLIT_FLAG, "B" };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_5 = {1, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4};
extern NIM_THREADVAR TFrame* framePtr__system_u4006;
N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___temp_u5)(tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w e_p0) {
 NimStringV2 result;
 result.len = 0; result.p = NIM_NIL;
 switch (e_p0) {
 case ((tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w)0):
 {
  result = TM__SRd76hP9cMfCzdUO857UhQQ_3;
 }
 break;
 case ((tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w)1):
 {
  result = TM__SRd76hP9cMfCzdUO857UhQQ_5;
 }
 break;
 }
 return result;
}
static N_INLINE(TFrame*, getFrame)(void) {
 TFrame* result;
 result = (TFrame*)0;
 result = framePtr__system_u4006;
 return result;
}
static N_INLINE(void, setFrame)(TFrame* s_p0) {
 framePtr__system_u4006 = s_p0;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u4006 == ((TFrame*) NIM_NIL))) goto LA3_;
{		(*s_p0).calldepth = ((NI16)0);
}	}
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u4006).calldepth + ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u4006;
 framePtr__system_u4006 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
{		callDepthLimitReached__system_u4570();
}	}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u4006 = (*framePtr__system_u4006).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, check__temp_u8)(tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w flags_p0) {
 NimStringV2 colontmpD_;
 tyArray__nHXaesL0DJZHyVS07ARPRA T3_;
 TFrame* _nimCurFrame;
 nimfr_("check", "/home/runner/work/Nim/Nim/temp.nim");
 _nimCurFrame = getFrame();
 colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
 std::exception_ptr T2_;
 try {
 colontmpD_ = dollar___temp_u95(flags_p0);
 T3_[0] = colontmpD_;
 echoBinSafe(T3_, 1);
 }
 catch (Exception* T3_) {
 setFrame(_nimCurFrame);
 T2_ = std::current_exception();
 }
 catch (...) {
  setFrame(_nimCurFrame);
  T2_ = std::current_exception();
 }
 {
  if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD_.p);
}
  if (T2_) std::rethrow_exception(T2_);
 }
 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;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystematsexceptionsdotnim_DatInit000();
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_Init000();
 (*inner)();
#else
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystematsexceptionsdotnim_DatInit000();
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_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) {
{
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 check__temp_u8(3);
 popFrame();
}
}

Stats

  • Started 2024-06-07T13:54:57
  • Finished 2024-06-07T13:54:58
  • Duration

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      nnkPostfix.newTree(
        newIdentNode("*"),
        newIdentNode("Flags")
      ),
      newEmptyNode(),
      nnkEnumTy.newTree(
        newEmptyNode(),
        newIdentNode("A"),
        newIdentNode("B")
      )
    ),
    nnkTypeDef.newTree(
      nnkPragmaExpr.newTree(
        nnkPostfix.newTree(
          newIdentNode("*"),
          newIdentNode("Mask")
        ),
        nnkPragma.newTree(
          nnkExprColonExpr.newTree(
            newIdentNode("size"),
            nnkCall.newTree(
              newIdentNode("sizeof"),
              newIdentNode("uint16")
            )
          )
        )
      ),
      newEmptyNode(),
      nnkBracketExpr.newTree(
        newIdentNode("set"),
        newIdentNode("Flags")
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("check"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("flags"),
        newIdentNode("Mask"),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkCommand.newTree(
        newIdentNode("echo"),
        newIdentNode("flags")
      )
    )
  ),
  nnkCommand.newTree(
    newIdentNode("check"),
    nnkCurly.newTree(
      newIdentNode("A"),
      newIdentNode("B")
    )
  )
)
1.6.20 πŸ‘Ž FAIL

Output

Error: Command failed: nim cpp --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/usr/bin/ld: /home/runner/work/Nim/Nim/@mtemp.nim.cpp.o: in function `check__temp_u8(unsigned short)':
@mtemp.nim.cpp:(.text+0x147): undefined reference to `dollar___temp_u74(unsigned short)'
/usr/bin/ld: /home/runner/work/Nim/Nim/temp: hidden symbol `_Z17dollar___temp_u74t' isn't defined
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
Error: execution of an external program failed: 'g++   -o /home/runner/work/Nim/Nim/temp  /home/runner/work/Nim/Nim/@m..@s..@[email protected]@[email protected]@slib@sstd@[email protected] /home/runner/work/Nim/Nim/@m..@s..@[email protected]@[email protected]@slib@[email protected] /home/runner/work/Nim/Nim/@m..@s..@[email protected]@[email protected]@slib@[email protected] /home/runner/work/Nim/Nim/@m..@s..@[email protected]@[email protected]@[email protected] /home/runner/work/Nim/Nim/@mtemp.nim.cpp.o    -ldl'
fatal.nim(54)            sysFatal
Error: unhandled exception: options.nim(662, 14) `false` errGenerated [AssertionDefect]

IR

Compiled filesize 0 bytes (0 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#  define nimfr_(proc, file) \
 TFrame FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#  define nimfrs_(proc, file, slots, length) \
 struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#  define nimln_(n, file) \
 FR_.line = n; FR_.filename = file;
struct NimStringDesc;
struct TGenericSeq;
struct TNimType;
struct TNimNode;
typedef NU16 tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w;
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc : public TGenericSeq {
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NimStringDesc* tyArray__nHXaesL0DJZHyVS07ARPRA[1];
typedef NU8 tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w;
typedef NU8 tyEnum_TNimKind__b9brdfAMvuT12kv1MtmF3IQ;
typedef NU8 tySet_tyEnum_TNimTypeFlag__h29aLKtZInAIaLqhWRujWcA;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
NI align;
tyEnum_TNimKind__b9brdfAMvuT12kv1MtmF3IQ kind;
tySet_tyEnum_TNimTypeFlag__h29aLKtZInAIaLqhWRujWcA flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU8 tyEnum_TNimNodeKind__K6UETQxRj3HYBl69c6NhKig;
struct TNimNode {
tyEnum_TNimNodeKind__K6UETQxRj3HYBl69c6NhKig kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
N_LIB_PRIVATE N_NIMCALL(void, check__temp_u8)(tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w flags);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___temp_u74)(tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w x);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringDesc** args, NI argsLen_0);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u2993)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
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 TNimType NTIflags__poAG8L9aG9aKHvBHjNpFE27w_;
extern TFrame* framePtr__system_u2564;
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a, int v, NI size) {
 void* T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
 nimSetMem__systemZmemory_u7(p, ((int) 0), size);
}
static N_INLINE(void, nimFrame)(TFrame* s) {
 {
  if (!(framePtr__system_u2564 == ((TFrame*) NIM_NIL))) goto LA3_;
{		(*s).calldepth = ((NI16) 0);
}	}
 goto LA1_;
 LA3_: ;
 {
  (*s).calldepth = (NI16)((*framePtr__system_u2564).calldepth + ((NI16) 1));
 }
 LA1_: ;
 (*s).prev = framePtr__system_u2564;
 framePtr__system_u2564 = s;
 {
  if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
{		callDepthLimitReached__system_u2993();
}	}
 LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u2564 = (*framePtr__system_u2564).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, check__temp_u8)(tySet_tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w flags) {
 tyArray__nHXaesL0DJZHyVS07ARPRA T1_;
 nimfr_("check", "/home/runner/work/Nim/Nim/temp.nim");
 nimZeroMem((void*)T1_, sizeof(tyArray__nHXaesL0DJZHyVS07ARPRA));
 T1_[0] = dollar___temp_u74(flags);
 echoBinSafe(T1_, 1);
 popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
 nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE void PreMainInner(void) {
}
 N_LIB_PRIVATE int cmdCount;
 N_LIB_PRIVATE char** cmdLine;
 N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
 void (*volatile inner)(void);
 inner = PreMainInner;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot20atslibatssystemdotnim_DatInit000();
 initStackBottomWith((void *)&inner);
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot20atslibatssystemdotnim_Init000();
 atmtempdotnim_DatInit000();
 (*inner)();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
 NimMainModule();
}
N_CDECL(void, NimMain)(void) {
 void (*volatile inner)(void);
 PreMain();
 inner = NimMainInner;
 initStackBottomWith((void *)&inner);
 (*inner)();
}
int main(int argc, char** args, char** env) {
 cmdLine = args;
 cmdCount = argc;
 gEnv = env;
 NimMain();
 return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 check__temp_u8(3);
 popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void) {
static TNimNode* TM__SRd76hP9cMfCzdUO857UhQQ_2_2[2];
NI TM__SRd76hP9cMfCzdUO857UhQQ_4;
static char* NIM_CONST TM__SRd76hP9cMfCzdUO857UhQQ_3[2] = {
"A", 
"B"};
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[3];
NTIflags__poAG8L9aG9aKHvBHjNpFE27w_.size = sizeof(tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w);
NTIflags__poAG8L9aG9aKHvBHjNpFE27w_.align = NIM_ALIGNOF(tyEnum_Flags__poAG8L9aG9aKHvBHjNpFE27w);
NTIflags__poAG8L9aG9aKHvBHjNpFE27w_.kind = 14;
NTIflags__poAG8L9aG9aKHvBHjNpFE27w_.base = 0;
NTIflags__poAG8L9aG9aKHvBHjNpFE27w_.flags = 3;
for (TM__SRd76hP9cMfCzdUO857UhQQ_4 = 0; TM__SRd76hP9cMfCzdUO857UhQQ_4 < 2; TM__SRd76hP9cMfCzdUO857UhQQ_4++) {
TM__SRd76hP9cMfCzdUO857UhQQ_0[TM__SRd76hP9cMfCzdUO857UhQQ_4+0].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[TM__SRd76hP9cMfCzdUO857UhQQ_4+0].offset = TM__SRd76hP9cMfCzdUO857UhQQ_4;
TM__SRd76hP9cMfCzdUO857UhQQ_0[TM__SRd76hP9cMfCzdUO857UhQQ_4+0].name = TM__SRd76hP9cMfCzdUO857UhQQ_3[TM__SRd76hP9cMfCzdUO857UhQQ_4];
TM__SRd76hP9cMfCzdUO857UhQQ_2_2[TM__SRd76hP9cMfCzdUO857UhQQ_4] = &TM__SRd76hP9cMfCzdUO857UhQQ_0[TM__SRd76hP9cMfCzdUO857UhQQ_4+0];
}
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].len = 2; TM__SRd76hP9cMfCzdUO857UhQQ_0[2].kind = 2; TM__SRd76hP9cMfCzdUO857UhQQ_0[2].sons = &TM__SRd76hP9cMfCzdUO857UhQQ_2_2[0];
NTIflags__poAG8L9aG9aKHvBHjNpFE27w_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[2];
}

Stats

  • Started 2024-06-07T13:55:01
  • Finished 2024-06-07T13:55:01
  • Duration

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      nnkPostfix.newTree(
        newIdentNode("*"),
        newIdentNode("Flags")
      ),
      newEmptyNode(),
      nnkEnumTy.newTree(
        newEmptyNode(),
        newIdentNode("A"),
        newIdentNode("B")
      )
    ),
    nnkTypeDef.newTree(
      nnkPragmaExpr.newTree(
        nnkPostfix.newTree(
          newIdentNode("*"),
          newIdentNode("Mask")
        ),
        nnkPragma.newTree(
          nnkExprColonExpr.newTree(
            newIdentNode("size"),
            nnkCall.newTree(
              newIdentNode("sizeof"),
              newIdentNode("uint16")
            )
          )
        )
      ),
      newEmptyNode(),
      nnkBracketExpr.newTree(
        newIdentNode("set"),
        newIdentNode("Flags")
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("check"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("flags"),
        newIdentNode("Mask"),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkCommand.newTree(
        newIdentNode("echo"),
        newIdentNode("flags")
      )
    )
  ),
  nnkCommand.newTree(
    newIdentNode("check"),
    nnkCurly.newTree(
      newIdentNode("A"),
      newIdentNode("B")
    )
  )
)
1.4.8 πŸ‘Ž FAIL

Output

Error: Command failed: nim cpp --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/usr/bin/ld: /home/runner/work/Nim/Nim/@mtemp.nim.cpp.o: in function `check__UKHWBr5jprrq1q9bYXgsRnQ(unsigned short)':
@mtemp.nim.cpp:(.text+0x147): undefined reference to `dollar___H7tBK6vUybcjPkezQwEk3g(unsigned short)'
/usr/bin/ld: /home/runner/work/Nim/Nim/temp: hidden symbol `_Z31dollar___H7tBK6vUybcjPkezQwEk3gt' isn't defined
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
Error: execution of an external program failed: 'g++   -o /home/runner/work/Nim/Nim/temp  /home/runner/work/Nim/Nim/stdlib_dollars.nim.cpp.o /home/runner/work/Nim/Nim/stdlib_io.nim.cpp.o /home/runner/work/Nim/Nim/stdlib_system.nim.cpp.o /home/runner/work/Nim/Nim/@mtemp.nim.cpp.o    -ldl'

IR

Compiled filesize 0 bytes (0 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#  define nimfr_(proc, file) \
 TFrame FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#  define nimfrs_(proc, file, slots, length) \
 struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#  define nimln_(n, file) \
 FR_.line = n; FR_.filename = file;
struct NimStringDesc;
struct TGenericSeq;
struct TNimType;
struct TNimNode;
typedef NU16 tySet_tyEnum_Flags__kEF5c4A3mE0Q9aypt5hX8aw;
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc : public TGenericSeq {
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NimStringDesc* tyArray__nHXaesL0DJZHyVS07ARPRA[1];
typedef NU8 tyEnum_Flags__kEF5c4A3mE0Q9aypt5hX8aw;
typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
NI align;
tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
N_LIB_PRIVATE N_NIMCALL(void, check__UKHWBr5jprrq1q9bYXgsRnQ)(tySet_tyEnum_Flags__kEF5c4A3mE0Q9aypt5hX8aw flags);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___H7tBK6vUybcjPkezQwEk3g)(tySet_tyEnum_Flags__kEF5c4A3mE0Q9aypt5hX8aw x);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringDesc** 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);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
N_LIB_PRIVATE TNimType NTI__kEF5c4A3mE0Q9aypt5hX8aw_;
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_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
 nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
static N_INLINE(void, nimFrame)(TFrame* s) {
 {
  if (!(framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw == ((TFrame*) NIM_NIL))) goto LA3_;
{		(*s).calldepth = ((NI16) 0);
}	}
 goto LA1_;
 LA3_: ;
 {
  (*s).calldepth = (NI16)((*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).calldepth + ((NI16) 1));
 }
 LA1_: ;
 (*s).prev = framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
 framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = s;
 {
  if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
{		callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw();
}	}
 LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = (*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, check__UKHWBr5jprrq1q9bYXgsRnQ)(tySet_tyEnum_Flags__kEF5c4A3mE0Q9aypt5hX8aw flags) {
 tyArray__nHXaesL0DJZHyVS07ARPRA T1_;
 nimfr_("check", "/home/runner/work/Nim/Nim/temp.nim");
 nimZeroMem((void*)T1_, sizeof(tyArray__nHXaesL0DJZHyVS07ARPRA));
 T1_[0] = dollar___H7tBK6vUybcjPkezQwEk3g(flags);
 echoBinSafe(T1_, 1);
 popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
 nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
 void (*volatile inner)(void);
 inner = PreMainInner;
 systemDatInit000();
 initStackBottomWith((void *)&inner);
 systemInit000();
 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) {
{
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 check__UKHWBr5jprrq1q9bYXgsRnQ(3);
 popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void) {
static TNimNode* TM__SRd76hP9cMfCzdUO857UhQQ_2_2[2];
NI TM__SRd76hP9cMfCzdUO857UhQQ_4;
static char* NIM_CONST TM__SRd76hP9cMfCzdUO857UhQQ_3[2] = {
"A", 
"B"};
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[3];
NTI__kEF5c4A3mE0Q9aypt5hX8aw_.size = sizeof(tyEnum_Flags__kEF5c4A3mE0Q9aypt5hX8aw);
NTI__kEF5c4A3mE0Q9aypt5hX8aw_.align = NIM_ALIGNOF(tyEnum_Flags__kEF5c4A3mE0Q9aypt5hX8aw);
NTI__kEF5c4A3mE0Q9aypt5hX8aw_.kind = 14;
NTI__kEF5c4A3mE0Q9aypt5hX8aw_.base = 0;
NTI__kEF5c4A3mE0Q9aypt5hX8aw_.flags = 3;
for (TM__SRd76hP9cMfCzdUO857UhQQ_4 = 0; TM__SRd76hP9cMfCzdUO857UhQQ_4 < 2; TM__SRd76hP9cMfCzdUO857UhQQ_4++) {
TM__SRd76hP9cMfCzdUO857UhQQ_0[TM__SRd76hP9cMfCzdUO857UhQQ_4+0].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[TM__SRd76hP9cMfCzdUO857UhQQ_4+0].offset = TM__SRd76hP9cMfCzdUO857UhQQ_4;
TM__SRd76hP9cMfCzdUO857UhQQ_0[TM__SRd76hP9cMfCzdUO857UhQQ_4+0].name = TM__SRd76hP9cMfCzdUO857UhQQ_3[TM__SRd76hP9cMfCzdUO857UhQQ_4];
TM__SRd76hP9cMfCzdUO857UhQQ_2_2[TM__SRd76hP9cMfCzdUO857UhQQ_4] = &TM__SRd76hP9cMfCzdUO857UhQQ_0[TM__SRd76hP9cMfCzdUO857UhQQ_4+0];
}
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].len = 2; TM__SRd76hP9cMfCzdUO857UhQQ_0[2].kind = 2; TM__SRd76hP9cMfCzdUO857UhQQ_0[2].sons = &TM__SRd76hP9cMfCzdUO857UhQQ_2_2[0];
NTI__kEF5c4A3mE0Q9aypt5hX8aw_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[2];
}

Stats

  • Started 2024-06-07T13:55:04
  • Finished 2024-06-07T13:55:04
  • Duration

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      nnkPostfix.newTree(
        newIdentNode("*"),
        newIdentNode("Flags")
      ),
      newEmptyNode(),
      nnkEnumTy.newTree(
        newEmptyNode(),
        newIdentNode("A"),
        newIdentNode("B")
      )
    ),
    nnkTypeDef.newTree(
      nnkPragmaExpr.newTree(
        nnkPostfix.newTree(
          newIdentNode("*"),
          newIdentNode("Mask")
        ),
        nnkPragma.newTree(
          nnkExprColonExpr.newTree(
            newIdentNode("size"),
            nnkCall.newTree(
              newIdentNode("sizeof"),
              newIdentNode("uint16")
            )
          )
        )
      ),
      newEmptyNode(),
      nnkBracketExpr.newTree(
        newIdentNode("set"),
        newIdentNode("Flags")
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("check"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("flags"),
        newIdentNode("Mask"),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkCommand.newTree(
        newIdentNode("echo"),
        newIdentNode("flags")
      )
    )
  ),
  nnkCommand.newTree(
    newIdentNode("check"),
    nnkCurly.newTree(
      newIdentNode("A"),
      newIdentNode("B")
    )
  )
)
1.2.18 πŸ‘Ž FAIL

Output

Error: Command failed: nim cpp --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/usr/bin/ld: /home/runner/work/Nim/Nim/@mtemp.nim.cpp.o: in function `check__UKHWBr5jprrq1q9bYXgsRnQ(unsigned short)':
@mtemp.nim.cpp:(.text+0x147): undefined reference to `dollar___H7tBK6vUybcjPkezQwEk3g(unsigned short)'
/usr/bin/ld: /home/runner/work/Nim/Nim/temp: hidden symbol `_Z31dollar___H7tBK6vUybcjPkezQwEk3gt' isn't defined
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
Error: execution of an external program failed: 'g++   -o /home/runner/work/Nim/Nim/temp  /home/runner/work/Nim/Nim/stdlib_dollars.nim.cpp.o /home/runner/work/Nim/Nim/stdlib_io.nim.cpp.o /home/runner/work/Nim/Nim/stdlib_system.nim.cpp.o /home/runner/work/Nim/Nim/@mtemp.nim.cpp.o    -ldl'

IR

Compiled filesize 0 bytes (0 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#  define nimfr_(proc, file) \
 TFrame FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#  define nimfrs_(proc, file, slots, length) \
 struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#  define nimln_(n, file) \
 FR_.line = n; FR_.filename = file;
struct NimStringDesc;
struct TGenericSeq;
struct TNimType;
struct TNimNode;
typedef NU16 tySet_tyEnum_Flags__kEF5c4A3mE0Q9aypt5hX8aw;
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc : public TGenericSeq {
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NimStringDesc* tyArray__nHXaesL0DJZHyVS07ARPRA[1];
typedef NU8 tyEnum_Flags__kEF5c4A3mE0Q9aypt5hX8aw;
typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
N_LIB_PRIVATE N_NIMCALL(void, check__UKHWBr5jprrq1q9bYXgsRnQ)(tySet_tyEnum_Flags__kEF5c4A3mE0Q9aypt5hX8aw flags);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___H7tBK6vUybcjPkezQwEk3g)(tySet_tyEnum_Flags__kEF5c4A3mE0Q9aypt5hX8aw x);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringDesc** 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);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
N_LIB_PRIVATE TNimType NTI__kEF5c4A3mE0Q9aypt5hX8aw_;
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_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
 nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
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, check__UKHWBr5jprrq1q9bYXgsRnQ)(tySet_tyEnum_Flags__kEF5c4A3mE0Q9aypt5hX8aw flags) {
 tyArray__nHXaesL0DJZHyVS07ARPRA T1_;
 nimfr_("check", "/home/runner/work/Nim/Nim/temp.nim");
 nimZeroMem((void*)T1_, sizeof(tyArray__nHXaesL0DJZHyVS07ARPRA));
 T1_[0] = dollar___H7tBK6vUybcjPkezQwEk3g(flags);
 echoBinSafe(T1_, 1);
 popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
 nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
 void (*volatile inner)(void);
 inner = PreMainInner;
 systemDatInit000();
 initStackBottomWith((void *)&inner);
 systemInit000();
 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) {
{
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 check__UKHWBr5jprrq1q9bYXgsRnQ(3);
 popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void) {
static TNimNode* TM__SRd76hP9cMfCzdUO857UhQQ_2_2[2];
NI TM__SRd76hP9cMfCzdUO857UhQQ_4;
static char* NIM_CONST TM__SRd76hP9cMfCzdUO857UhQQ_3[2] = {
"A", 
"B"};
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[3];
NTI__kEF5c4A3mE0Q9aypt5hX8aw_.size = sizeof(tyEnum_Flags__kEF5c4A3mE0Q9aypt5hX8aw);
NTI__kEF5c4A3mE0Q9aypt5hX8aw_.kind = 14;
NTI__kEF5c4A3mE0Q9aypt5hX8aw_.base = 0;
NTI__kEF5c4A3mE0Q9aypt5hX8aw_.flags = 3;
for (TM__SRd76hP9cMfCzdUO857UhQQ_4 = 0; TM__SRd76hP9cMfCzdUO857UhQQ_4 < 2; TM__SRd76hP9cMfCzdUO857UhQQ_4++) {
TM__SRd76hP9cMfCzdUO857UhQQ_0[TM__SRd76hP9cMfCzdUO857UhQQ_4+0].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[TM__SRd76hP9cMfCzdUO857UhQQ_4+0].offset = TM__SRd76hP9cMfCzdUO857UhQQ_4;
TM__SRd76hP9cMfCzdUO857UhQQ_0[TM__SRd76hP9cMfCzdUO857UhQQ_4+0].name = TM__SRd76hP9cMfCzdUO857UhQQ_3[TM__SRd76hP9cMfCzdUO857UhQQ_4];
TM__SRd76hP9cMfCzdUO857UhQQ_2_2[TM__SRd76hP9cMfCzdUO857UhQQ_4] = &TM__SRd76hP9cMfCzdUO857UhQQ_0[TM__SRd76hP9cMfCzdUO857UhQQ_4+0];
}
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].len = 2; TM__SRd76hP9cMfCzdUO857UhQQ_0[2].kind = 2; TM__SRd76hP9cMfCzdUO857UhQQ_0[2].sons = &TM__SRd76hP9cMfCzdUO857UhQQ_2_2[0];
NTI__kEF5c4A3mE0Q9aypt5hX8aw_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[2];
}

Stats

  • Started 2024-06-07T13:55:07
  • Finished 2024-06-07T13:55:07
  • Duration

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      nnkPostfix.newTree(
        newIdentNode("*"),
        newIdentNode("Flags")
      ),
      newEmptyNode(),
      nnkEnumTy.newTree(
        newEmptyNode(),
        newIdentNode("A"),
        newIdentNode("B")
      )
    ),
    nnkTypeDef.newTree(
      nnkPragmaExpr.newTree(
        nnkPostfix.newTree(
          newIdentNode("*"),
          newIdentNode("Mask")
        ),
        nnkPragma.newTree(
          nnkExprColonExpr.newTree(
            newIdentNode("size"),
            nnkCall.newTree(
              newIdentNode("sizeof"),
              newIdentNode("uint16")
            )
          )
        )
      ),
      newEmptyNode(),
      nnkBracketExpr.newTree(
        newIdentNode("set"),
        newIdentNode("Flags")
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("check"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("flags"),
        newIdentNode("Mask"),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkCommand.newTree(
        newIdentNode("echo"),
        newIdentNode("flags")
      )
    )
  ),
  nnkCommand.newTree(
    newIdentNode("check"),
    nnkCurly.newTree(
      newIdentNode("A"),
      newIdentNode("B")
    )
  )
)
1.0.10 πŸ‘Ž FAIL

Output

Error: Command failed: nim cpp --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/usr/bin/ld: /home/runner/work/Nim/Nim/@mtemp.nim.cpp.o: in function `check__UKHWBr5jprrq1q9bYXgsRnQ(unsigned short)':
@mtemp.nim.cpp:(.text+0x159): undefined reference to `dollar___H7tBK6vUybcjPkezQwEk3g(unsigned short)'
/usr/bin/ld: /home/runner/work/Nim/Nim/temp: hidden symbol `_Z31dollar___H7tBK6vUybcjPkezQwEk3gt' isn't defined
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
Error: execution of an external program failed: 'g++   -o /home/runner/work/Nim/Nim/temp  /home/runner/work/Nim/Nim/stdlib_dollars.nim.cpp.o /home/runner/work/Nim/Nim/stdlib_io.nim.cpp.o /home/runner/work/Nim/Nim/stdlib_system.nim.cpp.o /home/runner/work/Nim/Nim/@mtemp.nim.cpp.o    -ldl'

IR

Compiled filesize 0 bytes (0 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#  define nimfr_(proc, file) \
 TFrame FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#  define nimfrs_(proc, file, slots, length) \
 struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR_; \
 FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#  define nimln_(n, file) \
 FR_.line = n; FR_.filename = file;
struct NimStringDesc;
struct TGenericSeq;
struct TNimType;
struct TNimNode;
typedef NU16 tySet_tyEnum_Flags__kEF5c4A3mE0Q9aypt5hX8aw;
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc : public TGenericSeq {
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NimStringDesc* tyArray__nHXaesL0DJZHyVS07ARPRA[1];
typedef NU8 tyEnum_Flags__kEF5c4A3mE0Q9aypt5hX8aw;
typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
N_LIB_PRIVATE N_NIMCALL(void, check__UKHWBr5jprrq1q9bYXgsRnQ)(tySet_tyEnum_Flags__kEF5c4A3mE0Q9aypt5hX8aw flags);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___H7tBK6vUybcjPkezQwEk3g)(tySet_tyEnum_Flags__kEF5c4A3mE0Q9aypt5hX8aw x);
N_NIMCALL(void, echoBinSafe)(NimStringDesc** 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);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
TNimType NTI__kEF5c4A3mE0Q9aypt5hX8aw_;
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_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {	nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
static N_INLINE(void, nimFrame)(TFrame* s) {	NI T1_;
 T1_ = (NI)0;
 {
  if (!(framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw == NIM_NIL)) goto LA4_;
{		T1_ = ((NI) 0);
}	}
 goto LA2_;
 LA4_: ;
 {
  T1_ = ((NI) ((NI16)((*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).calldepth + ((NI16) 1))));
 }
 LA2_: ;
 (*s).calldepth = ((NI16) (T1_));
 (*s).prev = framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
 framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = s;
 {
  if (!((*s).calldepth == ((NI16) (((NI) 2000))))) goto LA9_;
{		callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw();
}	}
 LA9_: ;
}
static N_INLINE(void, popFrame)(void) {	framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = (*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, check__UKHWBr5jprrq1q9bYXgsRnQ)(tySet_tyEnum_Flags__kEF5c4A3mE0Q9aypt5hX8aw flags) {	tyArray__nHXaesL0DJZHyVS07ARPRA T1_;
 nimfr_("check", "/home/runner/work/Nim/Nim/temp.nim");
 nimZeroMem((void*)T1_, sizeof(tyArray__nHXaesL0DJZHyVS07ARPRA));
 T1_[0] = dollar___H7tBK6vUybcjPkezQwEk3g(flags);
 echoBinSafe(T1_, 1);
 popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals) {	nimGC_setStackBottom(locals);
}
void PreMainInner(void) {
}
int cmdCount;
char** cmdLine;
char** gEnv;
void PreMain(void) {
 void (*volatile inner)(void);
 inner = PreMainInner;
 systemDatInit000();
 initStackBottomWith((void *)&inner);
 systemInit000();
 tempDatInit000();
 (*inner)();
}
N_CDECL(void, NimMainInner)(void) {
 NimMainModule();
}
N_CDECL(void, NimMain)(void) {
 void (*volatile inner)(void);
 PreMain();
 inner = NimMainInner;
 initStackBottomWith((void *)&inner);
 (*inner)();
}
int main(int argc, char** args, char** env) {
 cmdLine = args;
 cmdCount = argc;
 gEnv = env;
 NimMain();
 return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
 nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
 check__UKHWBr5jprrq1q9bYXgsRnQ(3);
 popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void) {
static TNimNode* TM__SRd76hP9cMfCzdUO857UhQQ_2_2[2];
NI TM__SRd76hP9cMfCzdUO857UhQQ_4;
static char* NIM_CONST TM__SRd76hP9cMfCzdUO857UhQQ_3[2] = {
"A", 
"B"};
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[3];
NTI__kEF5c4A3mE0Q9aypt5hX8aw_.size = sizeof(tyEnum_Flags__kEF5c4A3mE0Q9aypt5hX8aw);
NTI__kEF5c4A3mE0Q9aypt5hX8aw_.kind = 14;
NTI__kEF5c4A3mE0Q9aypt5hX8aw_.base = 0;
NTI__kEF5c4A3mE0Q9aypt5hX8aw_.flags = 3;
for (TM__SRd76hP9cMfCzdUO857UhQQ_4 = 0; TM__SRd76hP9cMfCzdUO857UhQQ_4 < 2; TM__SRd76hP9cMfCzdUO857UhQQ_4++) {
TM__SRd76hP9cMfCzdUO857UhQQ_0[TM__SRd76hP9cMfCzdUO857UhQQ_4+0].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[TM__SRd76hP9cMfCzdUO857UhQQ_4+0].offset = TM__SRd76hP9cMfCzdUO857UhQQ_4;
TM__SRd76hP9cMfCzdUO857UhQQ_0[TM__SRd76hP9cMfCzdUO857UhQQ_4+0].name = TM__SRd76hP9cMfCzdUO857UhQQ_3[TM__SRd76hP9cMfCzdUO857UhQQ_4];
TM__SRd76hP9cMfCzdUO857UhQQ_2_2[TM__SRd76hP9cMfCzdUO857UhQQ_4] = &TM__SRd76hP9cMfCzdUO857UhQQ_0[TM__SRd76hP9cMfCzdUO857UhQQ_4+0];
}
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].len = 2; TM__SRd76hP9cMfCzdUO857UhQQ_0[2].kind = 2; TM__SRd76hP9cMfCzdUO857UhQQ_0[2].sons = &TM__SRd76hP9cMfCzdUO857UhQQ_2_2[0];
NTI__kEF5c4A3mE0Q9aypt5hX8aw_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[2];
}

Stats

  • Started 2024-06-07T13:55:10
  • Finished 2024-06-07T13:55:10
  • Duration

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      nnkPostfix.newTree(
        newIdentNode("*"),
        newIdentNode("Flags")
      ),
      newEmptyNode(),
      nnkEnumTy.newTree(
        newEmptyNode(),
        newIdentNode("A"),
        newIdentNode("B")
      )
    ),
    nnkTypeDef.newTree(
      nnkPragmaExpr.newTree(
        nnkPostfix.newTree(
          newIdentNode("*"),
          newIdentNode("Mask")
        ),
        nnkPragma.newTree(
          nnkExprColonExpr.newTree(
            newIdentNode("size"),
            nnkCall.newTree(
              newIdentNode("sizeof"),
              newIdentNode("uint16")
            )
          )
        )
      ),
      newEmptyNode(),
      nnkBracketExpr.newTree(
        newIdentNode("set"),
        newIdentNode("Flags")
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("check"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("flags"),
        newIdentNode("Mask"),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkCommand.newTree(
        newIdentNode("echo"),
        newIdentNode("flags")
      )
    )
  ),
  nnkCommand.newTree(
    newIdentNode("check"),
    nnkCurly.newTree(
      newIdentNode("A"),
      newIdentNode("B")
    )
  )
)
Stats
  • GCC 11.4.0
  • Clang 14.0.0
  • NodeJS 20.3
  • Created 2024-06-07T13:54:25Z
  • Comments 1
  • Commands nim cpp --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim

πŸ€– Bug found in 22 minutes bisecting 8 commits at 0 commits per second

from nim.

juancarlospaco avatar juancarlospaco commented on July 22, 2024

Looks like it never really worked properly in cpp (?). πŸ€”

from nim.

Related Issues (20)

Recommend Projects

  • React photo React

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

  • Vue.js photo Vue.js

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

  • Typescript photo Typescript

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

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

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

  • web

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

  • server

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

  • Machine learning

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

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

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

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.