Skip to content
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

Method calling proc with return value overlapping declared generic type generates invalid C #23765

Open
tersec opened this issue Jun 27, 2024 · 2 comments

Comments

@tersec
Copy link
Contributor

tersec commented Jun 27, 2024

Description

type
  X[T, E] = object
    m: T
  B = X[culonglong, cstring]
  S = ref object of RootObj

proc j[T, E](m: X[T, E]): T = discard
proc n(T: typedesc[SomeUnsignedInt]): X[T, cstring] = discard
method call(client: S): uint64 {.base.} =
  discard j(n(uint64))

Nim Version

Nim Compiler Version 2.0.7 [Linux: amd64]
Compiled at 2024-06-27
Copyright (c) 2006-2023 by Andreas Rumpf

git hash: 915cd5b28b27285cd46259196ce120a4ea2c84c0
active boot switches: -d:release
Nim Compiler Version 2.1.1 [Linux: amd64]
Compiled at 2024-06-27
Copyright (c) 2006-2024 by Andreas Rumpf

git hash: 828cd58d8a0376a5b7a6ad58d73d66617b37629a
active boot switches: -d:release

Current Output

.cache/nim/results_d/@mresults.nim.c:81:83: note: expected ‘tyObject_X__WHq49bCMxAEQUfebzACSwaA’ but argument is of type ‘tyObject_X__P0e5mZLnE3NiPTIl4BhvZA’
   81 | IVATE N_NIMCALL(NU64, j__results_u29)(tyObject_X__WHq49bCMxAEQUfebzACSwaA m_p0) {
      |                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~

Error: execution of an external compiler program 'gcc -c  -w -fmax-errors=3 -pthread   -Inimdevel/lib -Irepro -o .cache/nim/results_d/@mresults.nim.c.o .cache/nim/results_d/@mresults.nim.c' failed with exit code: 1

Expected Output

No invalid generated C

Possible Solution

No response

Additional Information

No response

@juancarlospaco
Copy link
Collaborator

!nim c

type
  X[T, E] = object
    m: T
  B = X[culonglong, cstring]
  S = ref object of RootObj

proc j[T, E](m: X[T, E]): T = discard
proc n(T: typedesc[SomeUnsignedInt]): X[T, cstring] = discard
method call(client: S): uint64 {.base.} =
  discard j(n(uint64))

Copy link
Contributor

🐧 Linux bisect by @juancarlospaco (collaborator)
devel 👎 FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/@mtemp.nim.c: In function ‘call__temp_u20’:
/home/runner/work/Nim/Nim/@mtemp.nim.c:123:27: error: incompatible type for argument 1 of ‘j__temp_u29’
  123 |         T2_ = j__temp_u29(T1_);
      |                           ^~~
      |                           |
      |                           tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw
/home/runner/work/Nim/Nim/@mtemp.nim.c:81:81: note: expected ‘tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw’ but argument is of type ‘tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw’
   81 | N_LIB_PRIVATE N_NIMCALL(NU64, j__temp_u29)(tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw m_p0) {
      |                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
Error: execution of an external compiler program 'gcc -c  -w -fmax-errors=3 -pthread   -I'/home/runner/.choosenim/toolchains/nim-#devel/lib' -I/home/runner/work/Nim/Nim -o /home/runner/work/Nim/Nim/@mtemp.nim.c.o /home/runner/work/Nim/Nim/@mtemp.nim.c' failed with exit code: 1


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

IR

Compiled filesize 0 (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_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ;
typedef struct tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw;
typedef struct tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw;
struct tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw {
 unsigned long long m;
};
struct tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw {
 NU64 m;
};
N_LIB_PRIVATE N_NIMCALL(NU64, call__temp_u20)(tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ* client_p0);
N_LIB_PRIVATE N_NIMCALL(NU64, j__temp_u29)(tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw m_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4613)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw, n__temp_u23)(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, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern NIM_THREADVAR TFrame* framePtr__system_u2654;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4397;
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_u4613();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u2654 = (*framePtr__system_u2654).prev;
}
N_LIB_PRIVATE N_NIMCALL(NU64, j__temp_u29)(tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw m_p0) {
 NU64 result;
 nimfr_("j", "/home/runner/work/Nim/Nim/temp.nim");
 result = (NU64)0;
 popFrame();
 return result;
}
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2) {
 void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a_p0, v_p1, ((size_t) (size_p2)));
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (&nimInErrorMode__system_u4397);
 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_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw, n__temp_u23)(void) {
 tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw result;
 nimfr_("n", "/home/runner/work/Nim/Nim/temp.nim");
 nimZeroMem((void*)(&result), sizeof(tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw));
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, call__temp_u20)(tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ* client_p0) {
 NU64 result;
 tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw T1_;
 NU64 T2_;
NIM_BOOL* nimErr_;
 nimfr_("call", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 result = (NU64)0;
 T1_ = n__temp_u23();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 T2_ = (NU64)0;
 T2_ = j__temp_u29(T1_);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 (void)(T2_);
 }BeforeRet_: ;
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, call__temp_u53)(tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ* client_p0) {
 NU64 result;
NIM_BOOL* nimErr_;
 nimfr_("call", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 result = (NU64)0;
 result = call__temp_u20(client_p0);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
 return result;
}
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) {
{
 nimTestErrorFlag();
}
}

Stats

  • Started 2024-06-27T12:33:45
  • Finished 2024-06-27T12:33:46
  • Duration

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("X"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newIdentNode("E"),
          newEmptyNode(),
          newEmptyNode()
        )
      ),
      nnkObjectTy.newTree(
        newEmptyNode(),
        newEmptyNode(),
        nnkRecList.newTree(
          nnkIdentDefs.newTree(
            newIdentNode("m"),
            newIdentNode("T"),
            newEmptyNode()
          )
        )
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("B"),
      newEmptyNode(),
      nnkBracketExpr.newTree(
        newIdentNode("X"),
        newIdentNode("culonglong"),
        newIdentNode("cstring")
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("S"),
      newEmptyNode(),
      nnkRefTy.newTree(
        nnkObjectTy.newTree(
          newEmptyNode(),
          nnkOfInherit.newTree(
            newIdentNode("RootObj")
          ),
          newEmptyNode()
        )
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("j"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("m"),
        nnkBracketExpr.newTree(
          newIdentNode("X"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("n"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("X"),
        newIdentNode("T"),
        newIdentNode("cstring")
      ),
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        nnkBracketExpr.newTree(
          newIdentNode("typedesc"),
          newIdentNode("SomeUnsignedInt")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkMethodDef.newTree(
    newIdentNode("call"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newIdentNode("uint64"),
      nnkIdentDefs.newTree(
        newIdentNode("client"),
        newIdentNode("S"),
        newEmptyNode()
      )
    ),
    nnkPragma.newTree(
      newIdentNode("base")
    ),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        nnkCall.newTree(
          newIdentNode("j"),
          nnkCall.newTree(
            newIdentNode("n"),
            newIdentNode("uint64")
          )
        )
      )
    )
  )
)
stable 👎 FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/@mtemp.nim.c: In function ‘call__temp_u20’:
/home/runner/work/Nim/Nim/@mtemp.nim.c:123:27: error: incompatible type for argument 1 of ‘j__temp_u29’
  123 |         T2_ = j__temp_u29(T1_);
      |                           ^~~
      |                           |
      |                           tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw
/home/runner/work/Nim/Nim/@mtemp.nim.c:81:81: note: expected ‘tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw’ but argument is of type ‘tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw’
   81 | N_LIB_PRIVATE N_NIMCALL(NU64, j__temp_u29)(tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw m_p0) {
      |                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
Error: execution of an external compiler program 'gcc -c  -w -fmax-errors=3 -pthread   -I/home/runner/.choosenim/toolchains/nim-2.0.6/lib -I/home/runner/work/Nim/Nim -o /home/runner/work/Nim/Nim/@mtemp.nim.c.o /home/runner/work/Nim/Nim/@mtemp.nim.c' failed with exit code: 1


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

IR

Compiled filesize 0 (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_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ;
typedef struct tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw;
typedef struct tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw;
struct tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw {
 unsigned long long m;
};
struct tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw {
 NU64 m;
};
N_LIB_PRIVATE N_NIMCALL(NU64, call__temp_u20)(tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ* client_p0);
N_LIB_PRIVATE N_NIMCALL(NU64, j__temp_u29)(tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw m_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4620)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw, n__temp_u23)(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, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot6atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern NIM_THREADVAR TFrame* framePtr__system_u4059;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4402;
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u4059 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s_p0).calldepth = ((NI16)0);
 }
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u4059).calldepth   ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u4059;
 framePtr__system_u4059 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
  callDepthLimitReached__system_u4620();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u4059 = (*framePtr__system_u4059).prev;
}
N_LIB_PRIVATE N_NIMCALL(NU64, j__temp_u29)(tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw m_p0) {
 NU64 result;
 nimfr_("j", "/home/runner/work/Nim/Nim/temp.nim");
 result = (NU64)0;
 popFrame();
 return result;
}
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2) {
 void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a_p0, v_p1, ((size_t) (size_p2)));
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (&nimInErrorMode__system_u4402);
 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_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw, n__temp_u23)(void) {
 tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw result;
 nimfr_("n", "/home/runner/work/Nim/Nim/temp.nim");
 nimZeroMem((void*)(&result), sizeof(tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw));
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, call__temp_u20)(tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ* client_p0) {
 NU64 result;
 tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw T1_;
 NU64 T2_;
NIM_BOOL* nimErr_;
 nimfr_("call", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 result = (NU64)0;
 T1_ = n__temp_u23();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 T2_ = (NU64)0;
 T2_ = j__temp_u29(T1_);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 (void)(T2_);
 }BeforeRet_: ;
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, call__temp_u53)(tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ* client_p0) {
 NU64 result;
NIM_BOOL* nimErr_;
 nimfr_("call", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 result = call__temp_u20(client_p0);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
 return result;
}
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;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot6atslibatssystemdotnim_Init000();
 (*inner)();
#else
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot6atslibatssystemdotnim_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) {
{
 nimTestErrorFlag();
}
}

Stats

  • Started 2024-06-27T12:33:46
  • Finished 2024-06-27T12:33:47
  • Duration

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("X"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newIdentNode("E"),
          newEmptyNode(),
          newEmptyNode()
        )
      ),
      nnkObjectTy.newTree(
        newEmptyNode(),
        newEmptyNode(),
        nnkRecList.newTree(
          nnkIdentDefs.newTree(
            newIdentNode("m"),
            newIdentNode("T"),
            newEmptyNode()
          )
        )
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("B"),
      newEmptyNode(),
      nnkBracketExpr.newTree(
        newIdentNode("X"),
        newIdentNode("culonglong"),
        newIdentNode("cstring")
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("S"),
      newEmptyNode(),
      nnkRefTy.newTree(
        nnkObjectTy.newTree(
          newEmptyNode(),
          nnkOfInherit.newTree(
            newIdentNode("RootObj")
          ),
          newEmptyNode()
        )
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("j"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("m"),
        nnkBracketExpr.newTree(
          newIdentNode("X"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("n"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("X"),
        newIdentNode("T"),
        newIdentNode("cstring")
      ),
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        nnkBracketExpr.newTree(
          newIdentNode("typedesc"),
          newIdentNode("SomeUnsignedInt")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkMethodDef.newTree(
    newIdentNode("call"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newIdentNode("uint64"),
      nnkIdentDefs.newTree(
        newIdentNode("client"),
        newIdentNode("S"),
        newEmptyNode()
      )
    ),
    nnkPragma.newTree(
      newIdentNode("base")
    ),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        nnkCall.newTree(
          newIdentNode("j"),
          nnkCall.newTree(
            newIdentNode("n"),
            newIdentNode("uint64")
          )
        )
      )
    )
  )
)
2.0.4 👎 FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/@mtemp.nim.c: In function ‘call__temp_u20’:
/home/runner/work/Nim/Nim/@mtemp.nim.c:123:27: error: incompatible type for argument 1 of ‘j__temp_u29’
  123 |         T2_ = j__temp_u29(T1_);
      |                           ^~~
      |                           |
      |                           tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw
/home/runner/work/Nim/Nim/@mtemp.nim.c:81:81: note: expected ‘tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw’ but argument is of type ‘tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw’
   81 | N_LIB_PRIVATE N_NIMCALL(NU64, j__temp_u29)(tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw m_p0) {
      |                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
Error: execution of an external compiler program 'gcc -c  -w -fmax-errors=3 -pthread   -I/home/runner/.choosenim/toolchains/nim-2.0.4/lib -I/home/runner/work/Nim/Nim -o /home/runner/work/Nim/Nim/@mtemp.nim.c.o /home/runner/work/Nim/Nim/@mtemp.nim.c' failed with exit code: 1


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

IR

Compiled filesize 0 (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_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ;
typedef struct tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw;
typedef struct tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw;
struct tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw {
 unsigned long long m;
};
struct tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw {
 NU64 m;
};
N_LIB_PRIVATE N_NIMCALL(NU64, call__temp_u20)(tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ* client_p0);
N_LIB_PRIVATE N_NIMCALL(NU64, j__temp_u29)(tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw m_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4621)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw, n__temp_u23)(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, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern NIM_THREADVAR TFrame* framePtr__system_u4020;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4403;
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
 {
  if (!(framePtr__system_u4020 == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s_p0).calldepth = ((NI16)0);
 }
 goto LA1_;
LA3_: ;
 {
  (*s_p0).calldepth = (NI16)((*framePtr__system_u4020).calldepth   ((NI16)1));
 }
LA1_: ;
 (*s_p0).prev = framePtr__system_u4020;
 framePtr__system_u4020 = s_p0;
 {
  if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
  callDepthLimitReached__system_u4621();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u4020 = (*framePtr__system_u4020).prev;
}
N_LIB_PRIVATE N_NIMCALL(NU64, j__temp_u29)(tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw m_p0) {
 NU64 result;
 nimfr_("j", "/home/runner/work/Nim/Nim/temp.nim");
 result = (NU64)0;
 popFrame();
 return result;
}
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2) {
 void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a_p0, v_p1, ((size_t) (size_p2)));
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (&nimInErrorMode__system_u4403);
 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_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw, n__temp_u23)(void) {
 tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw result;
 nimfr_("n", "/home/runner/work/Nim/Nim/temp.nim");
 nimZeroMem((void*)(&result), sizeof(tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw));
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, call__temp_u20)(tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ* client_p0) {
 NU64 result;
 tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw T1_;
 NU64 T2_;
NIM_BOOL* nimErr_;
 nimfr_("call", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 result = (NU64)0;
 T1_ = n__temp_u23();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 T2_ = (NU64)0;
 T2_ = j__temp_u29(T1_);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 (void)(T2_);
 }BeforeRet_: ;
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, call__temp_u53)(tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ* client_p0) {
 NU64 result;
NIM_BOOL* nimErr_;
 nimfr_("call", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 result = call__temp_u20(client_p0);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
 return result;
}
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) {
{
 nimTestErrorFlag();
}
}

Stats

  • Started 2024-06-27T12:33:50
  • Finished 2024-06-27T12:33:50
  • Duration

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("X"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newIdentNode("E"),
          newEmptyNode(),
          newEmptyNode()
        )
      ),
      nnkObjectTy.newTree(
        newEmptyNode(),
        newEmptyNode(),
        nnkRecList.newTree(
          nnkIdentDefs.newTree(
            newIdentNode("m"),
            newIdentNode("T"),
            newEmptyNode()
          )
        )
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("B"),
      newEmptyNode(),
      nnkBracketExpr.newTree(
        newIdentNode("X"),
        newIdentNode("culonglong"),
        newIdentNode("cstring")
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("S"),
      newEmptyNode(),
      nnkRefTy.newTree(
        nnkObjectTy.newTree(
          newEmptyNode(),
          nnkOfInherit.newTree(
            newIdentNode("RootObj")
          ),
          newEmptyNode()
        )
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("j"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("m"),
        nnkBracketExpr.newTree(
          newIdentNode("X"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("n"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("X"),
        newIdentNode("T"),
        newIdentNode("cstring")
      ),
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        nnkBracketExpr.newTree(
          newIdentNode("typedesc"),
          newIdentNode("SomeUnsignedInt")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkMethodDef.newTree(
    newIdentNode("call"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newIdentNode("uint64"),
      nnkIdentDefs.newTree(
        newIdentNode("client"),
        newIdentNode("S"),
        newEmptyNode()
      )
    ),
    nnkPragma.newTree(
      newIdentNode("base")
    ),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        nnkCall.newTree(
          newIdentNode("j"),
          nnkCall.newTree(
            newIdentNode("n"),
            newIdentNode("uint64")
          )
        )
      )
    )
  )
)
2.0.0 👎 FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/@mtemp.nim.c: In function ‘call__temp_u20’:
/home/runner/work/Nim/Nim/@mtemp.nim.c:124:27: error: incompatible type for argument 1 of ‘j__temp_u29’
  124 |         T2_ = j__temp_u29(T1_);
      |                           ^~~
      |                           |
      |                           tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw
/home/runner/work/Nim/Nim/@mtemp.nim.c:81:81: note: expected ‘tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw’ but argument is of type ‘tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw’
   81 | N_LIB_PRIVATE N_NIMCALL(NU64, j__temp_u29)(tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw m_p0) {
      |                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
Error: execution of an external compiler program 'gcc -c  -w -fmax-errors=3 -pthread   -I/home/runner/.choosenim/toolchains/nim-2.0.0/lib -I/home/runner/work/Nim/Nim -o /home/runner/work/Nim/Nim/@mtemp.nim.c.o /home/runner/work/Nim/Nim/@mtemp.nim.c' failed with exit code: 1


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

IR

Compiled filesize 0 (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_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ;
typedef struct tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw;
typedef struct tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw;
struct tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw {
 unsigned long long m;
};
struct tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw {
 NU64 m;
};
N_LIB_PRIVATE N_NIMCALL(NU64, call__temp_u20)(tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ* client_p0);
N_LIB_PRIVATE N_NIMCALL(NU64, j__temp_u29)(tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw m_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4607)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw, n__temp_u23)(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, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern NIM_THREADVAR TFrame* framePtr__system_u4006;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4389;
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_u4607();
 }
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u4006 = (*framePtr__system_u4006).prev;
}
N_LIB_PRIVATE N_NIMCALL(NU64, j__temp_u29)(tyObject_X__9bxT9cLWUZzoAs7ZlDBbKYBw m_p0) {
 NU64 result;
 nimfr_("j", "/home/runner/work/Nim/Nim/temp.nim");
 result = (NU64)0;
 popFrame();
 return result;
}
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2) {
 void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a_p0, v_p1, ((size_t) (size_p2)));
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
 NIM_BOOL* result;
 result = (NIM_BOOL*)0;
 result = (&nimInErrorMode__system_u4389);
 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_: ;
}
N_LIB_PRIVATE N_NIMCALL(tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw, n__temp_u23)(void) {
 tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw result;
 nimfr_("n", "/home/runner/work/Nim/Nim/temp.nim");
 nimZeroMem((void*)(&result), sizeof(tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw));
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, call__temp_u20)(tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ* client_p0) {
 NU64 result;
 tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw T1_;
 NU64 T2_;
NIM_BOOL* nimErr_;
 nimfr_("call", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 result = (NU64)0;
 T1_ = n__temp_u23();
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 T2_ = (NU64)0;
 T2_ = j__temp_u29(T1_);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 (void)(T2_);
 }BeforeRet_: ;
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, call__temp_u53)(tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ* client_p0) {
 NU64 result;
NIM_BOOL* nimErr_;
 nimfr_("call", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
 result = (NU64)0;
 result = call__temp_u20(client_p0);
 if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
 goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
 return result;
}
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;
 atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_Init000();
 (*inner)();
#else
 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) {
{
 nimTestErrorFlag();
}
}

Stats

  • Started 2024-06-27T12:33:53
  • Finished 2024-06-27T12:33:54
  • Duration

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("X"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newIdentNode("E"),
          newEmptyNode(),
          newEmptyNode()
        )
      ),
      nnkObjectTy.newTree(
        newEmptyNode(),
        newEmptyNode(),
        nnkRecList.newTree(
          nnkIdentDefs.newTree(
            newIdentNode("m"),
            newIdentNode("T"),
            newEmptyNode()
          )
        )
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("B"),
      newEmptyNode(),
      nnkBracketExpr.newTree(
        newIdentNode("X"),
        newIdentNode("culonglong"),
        newIdentNode("cstring")
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("S"),
      newEmptyNode(),
      nnkRefTy.newTree(
        nnkObjectTy.newTree(
          newEmptyNode(),
          nnkOfInherit.newTree(
            newIdentNode("RootObj")
          ),
          newEmptyNode()
        )
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("j"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("m"),
        nnkBracketExpr.newTree(
          newIdentNode("X"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("n"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("X"),
        newIdentNode("T"),
        newIdentNode("cstring")
      ),
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        nnkBracketExpr.newTree(
          newIdentNode("typedesc"),
          newIdentNode("SomeUnsignedInt")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkMethodDef.newTree(
    newIdentNode("call"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newIdentNode("uint64"),
      nnkIdentDefs.newTree(
        newIdentNode("client"),
        newIdentNode("S"),
        newEmptyNode()
      )
    ),
    nnkPragma.newTree(
      newIdentNode("base")
    ),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        nnkCall.newTree(
          newIdentNode("j"),
          nnkCall.newTree(
            newIdentNode("n"),
            newIdentNode("uint64")
          )
        )
      )
    )
  )
)
1.6.20 👎 FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/@mtemp.nim.c: In function ‘call__temp_u20’:
/home/runner/work/Nim/Nim/@mtemp.nim.c:107:27: error: incompatible type for argument 1 of ‘j__temp_u29’
  107 |         T2_ = j__temp_u29(T1_);
      |                           ^~~
      |                           |
      |                           tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw
/home/runner/work/Nim/Nim/@mtemp.nim.c:77:81: note: expected ‘tyObject_X__9a17RSvHziOoIyKRBB7Mq9cw’ but argument is of type ‘tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw’
   77 | N_LIB_PRIVATE N_NIMCALL(NU64, j__temp_u29)(tyObject_X__9a17RSvHziOoIyKRBB7Mq9cw m) {
      |                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
Error: execution of an external compiler program 'gcc -c  -w -fmax-errors=3   -I/home/runner/.choosenim/toolchains/nim-1.6.20/lib -I/home/runner/work/Nim/Nim -o /home/runner/work/Nim/Nim/@mtemp.nim.c.o /home/runner/work/Nim/Nim/@mtemp.nim.c' failed with exit code: 1


fatal.nim(54)            sysFatal
Error: unhandled exception: options.nim(662, 14) `false` errGenerated [AssertionDefect]

IR

Compiled filesize 0 (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;
typedef struct tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ;
typedef struct tyObject_X__9a17RSvHziOoIyKRBB7Mq9cw tyObject_X__9a17RSvHziOoIyKRBB7Mq9cw;
typedef struct tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw;
struct tyObject_X__9a17RSvHziOoIyKRBB7Mq9cw {
unsigned long long m;
};
struct tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw {
NU64 m;
};
N_LIB_PRIVATE N_NIMCALL(NU64, call__temp_u20)(tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ* client);
N_LIB_PRIVATE N_NIMCALL(NU64, j__temp_u29)(tyObject_X__9a17RSvHziOoIyKRBB7Mq9cw m);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u2997)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw, n__temp_u23)(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(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, NimMainModule)(void);
extern TFrame* framePtr__system_u2564;
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_u2997();
 }
 LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__system_u2564 = (*framePtr__system_u2564).prev;
}
N_LIB_PRIVATE N_NIMCALL(NU64, j__temp_u29)(tyObject_X__9a17RSvHziOoIyKRBB7Mq9cw m) {
 NU64 result;
 nimfr_("j", "/home/runner/work/Nim/Nim/temp.nim");
 result = (NU64)0;
 popFrame();
 return result;
}
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(void, nimZeroMem)(void* p, NI size) {
 nimSetMem__systemZmemory_u7(p, ((int) 0), size);
}
N_LIB_PRIVATE N_NIMCALL(tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw, n__temp_u23)(void) {
 tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw result;
 nimfr_("n", "/home/runner/work/Nim/Nim/temp.nim");
 nimZeroMem((void*)(&result), sizeof(tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw));
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, call__temp_u20)(tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ* client) {
 NU64 result;
 tyObject_X__kx3RxK9ah9a9axs4ulh9cdDSMw T1_;
 NU64 T2_;
 nimfr_("call", "/home/runner/work/Nim/Nim/temp.nim");
 result = (NU64)0;
 T1_ = n__temp_u23();
 T2_ = (NU64)0;
 T2_ = j__temp_u29(T1_);
 (void)(T2_);
 popFrame();
 return result;
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
 nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE N_NIMCALL(NU64, call__temp_u43)(tyObject_ScolonObjectType___B3SHSrdFXvjxk9bKAp8ArxQ* client) {
 NU64 result;
 nimfr_("call", "/home/runner/work/Nim/Nim/temp.nim");
{	result = (NU64)0;
 result = call__temp_u20(client);
 goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
 return result;
}
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();
 (*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) {
{
}
}

Stats

  • Started 2024-06-27T12:33:56
  • Finished 2024-06-27T12:33:57
  • Duration

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("X"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newIdentNode("E"),
          newEmptyNode(),
          newEmptyNode()
        )
      ),
      nnkObjectTy.newTree(
        newEmptyNode(),
        newEmptyNode(),
        nnkRecList.newTree(
          nnkIdentDefs.newTree(
            newIdentNode("m"),
            newIdentNode("T"),
            newEmptyNode()
          )
        )
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("B"),
      newEmptyNode(),
      nnkBracketExpr.newTree(
        newIdentNode("X"),
        newIdentNode("culonglong"),
        newIdentNode("cstring")
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("S"),
      newEmptyNode(),
      nnkRefTy.newTree(
        nnkObjectTy.newTree(
          newEmptyNode(),
          nnkOfInherit.newTree(
            newIdentNode("RootObj")
          ),
          newEmptyNode()
        )
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("j"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("m"),
        nnkBracketExpr.newTree(
          newIdentNode("X"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("n"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("X"),
        newIdentNode("T"),
        newIdentNode("cstring")
      ),
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        nnkBracketExpr.newTree(
          newIdentNode("typedesc"),
          newIdentNode("SomeUnsignedInt")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkMethodDef.newTree(
    newIdentNode("call"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newIdentNode("uint64"),
      nnkIdentDefs.newTree(
        newIdentNode("client"),
        newIdentNode("S"),
        newEmptyNode()
      )
    ),
    nnkPragma.newTree(
      newIdentNode("base")
    ),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        nnkCall.newTree(
          newIdentNode("j"),
          nnkCall.newTree(
            newIdentNode("n"),
            newIdentNode("uint64")
          )
        )
      )
    )
  )
)
1.4.8 👎 FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/@mtemp.nim.c: In function ‘call__v36VS9br88QDiLYu9cM1mj5w’:
/home/runner/work/Nim/Nim/@mtemp.nim.c:128:43: error: incompatible type for argument 1 of ‘j__Imd1mTdZ9aihAMHG0r9cEjZQ’
  128 |         T2_ = j__Imd1mTdZ9aihAMHG0r9cEjZQ(T1_);
      |                                           ^~~
      |                                           |
      |                                           tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw
/home/runner/work/Nim/Nim/@mtemp.nim.c:98:95: note: expected ‘tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ’ but argument is of type ‘tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw’
   98 | N_LIB_PRIVATE N_NIMCALL(NU64, j__Imd1mTdZ9aihAMHG0r9cEjZQ)(tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ m) {
      |                                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
Error: execution of an external compiler program 'gcc -c  -w -fmax-errors=3   -I/home/runner/.choosenim/toolchains/nim-1.4.8/lib -I/home/runner/work/Nim/Nim -o /home/runner/work/Nim/Nim/@mtemp.nim.c.o /home/runner/work/Nim/Nim/@mtemp.nim.c' failed with exit code: 1

IR

Compiled filesize 0 (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;
typedef struct tyObject_ScolonObjectType___mfMAkYueFxPIYxcSL9bSGzQ tyObject_ScolonObjectType___mfMAkYueFxPIYxcSL9bSGzQ;
typedef struct tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ;
typedef struct tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw;
struct tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ {
unsigned long long m;
};
struct tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw {
NU64 m;
};
N_LIB_PRIVATE N_NIMCALL(NU64, call__v36VS9br88QDiLYu9cM1mj5w)(tyObject_ScolonObjectType___mfMAkYueFxPIYxcSL9bSGzQ* client);
N_LIB_PRIVATE N_NIMCALL(NU64, j__Imd1mTdZ9aihAMHG0r9cEjZQ)(tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ m);
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_NIMCALL(tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw, n__29b7BEWoBPUP01Sy8VzCX9cA)(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(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
static N_INLINE(void, nimFrame)(TFrame* s) {
 {
  if (!(framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw == ((TFrame*) NIM_NIL))) goto LA3_;
  (*s).calldepth = ((NI16) 0);
 }
 goto LA1_;
 LA3_: ;
 {
  (*s).calldepth = (NI16)((*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).calldepth   ((NI16) 1));
 }
 LA1_: ;
 (*s).prev = framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
 framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = s;
 {
  if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
  callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw();
 }
 LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = (*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).prev;
}
N_LIB_PRIVATE N_NIMCALL(NU64, j__Imd1mTdZ9aihAMHG0r9cEjZQ)(tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ m) {
 NU64 result;
 nimfr_("j", "/home/runner/work/Nim/Nim/temp.nim");
 result = (NU64)0;
 popFrame();
 return result;
}
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {
 void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
 nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
N_LIB_PRIVATE N_NIMCALL(tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw, n__29b7BEWoBPUP01Sy8VzCX9cA)(void) {
 tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw result;
 nimfr_("n", "/home/runner/work/Nim/Nim/temp.nim");
 nimZeroMem((void*)(&result), sizeof(tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw));
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, call__v36VS9br88QDiLYu9cM1mj5w)(tyObject_ScolonObjectType___mfMAkYueFxPIYxcSL9bSGzQ* client) {
 NU64 result;
 tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw T1_;
 NU64 T2_;
 nimfr_("call", "/home/runner/work/Nim/Nim/temp.nim");
 result = (NU64)0;
 T1_ = n__29b7BEWoBPUP01Sy8VzCX9cA();
 T2_ = (NU64)0;
 T2_ = j__Imd1mTdZ9aihAMHG0r9cEjZQ(T1_);
 (void)(T2_);
 popFrame();
 return result;
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
 nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE N_NIMCALL(NU64, call__BaCc1O83Ne3QBLG4X3sUmQ)(tyObject_ScolonObjectType___mfMAkYueFxPIYxcSL9bSGzQ* client) {
 NU64 result;
 nimfr_("call", "/home/runner/work/Nim/Nim/temp.nim");
{	result = (NU64)0;
 result = call__v36VS9br88QDiLYu9cM1mj5w(client);
 goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
 return result;
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
 void (*volatile inner)(void);
 inner = PreMainInner;
 systemDatInit000();
 initStackBottomWith((void *)&inner);
 systemInit000();
 (*inner)();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
 NimMainModule();
}
N_CDECL(void, NimMain)(void) {
 void (*volatile inner)(void);
 PreMain();
 inner = NimMainInner;
 initStackBottomWith((void *)&inner);
 (*inner)();
}
int main(int argc, char** args, char** env) {
 cmdLine = args;
 cmdCount = argc;
 gEnv = env;
 NimMain();
 return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
}
}

Stats

  • Started 2024-06-27T12:34:00
  • Finished 2024-06-27T12:34:00
  • Duration

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("X"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newIdentNode("E"),
          newEmptyNode(),
          newEmptyNode()
        )
      ),
      nnkObjectTy.newTree(
        newEmptyNode(),
        newEmptyNode(),
        nnkRecList.newTree(
          nnkIdentDefs.newTree(
            newIdentNode("m"),
            newIdentNode("T"),
            newEmptyNode()
          )
        )
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("B"),
      newEmptyNode(),
      nnkBracketExpr.newTree(
        newIdentNode("X"),
        newIdentNode("culonglong"),
        newIdentNode("cstring")
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("S"),
      newEmptyNode(),
      nnkRefTy.newTree(
        nnkObjectTy.newTree(
          newEmptyNode(),
          nnkOfInherit.newTree(
            newIdentNode("RootObj")
          ),
          newEmptyNode()
        )
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("j"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("m"),
        nnkBracketExpr.newTree(
          newIdentNode("X"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("n"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("X"),
        newIdentNode("T"),
        newIdentNode("cstring")
      ),
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        nnkBracketExpr.newTree(
          newIdentNode("typedesc"),
          newIdentNode("SomeUnsignedInt")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkMethodDef.newTree(
    newIdentNode("call"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newIdentNode("uint64"),
      nnkIdentDefs.newTree(
        newIdentNode("client"),
        newIdentNode("S"),
        newEmptyNode()
      )
    ),
    nnkPragma.newTree(
      newIdentNode("base")
    ),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        nnkCall.newTree(
          newIdentNode("j"),
          nnkCall.newTree(
            newIdentNode("n"),
            newIdentNode("uint64")
          )
        )
      )
    )
  )
)
1.2.18 👎 FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/@mtemp.nim.c: In function ‘call__v36VS9br88QDiLYu9cM1mj5w’:
/home/runner/work/Nim/Nim/@mtemp.nim.c:114:43: error: incompatible type for argument 1 of ‘j__Imd1mTdZ9aihAMHG0r9cEjZQ’
  114 |         T2_ = j__Imd1mTdZ9aihAMHG0r9cEjZQ(T1_);
      |                                           ^~~
      |                                           |
      |                                           tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw
/home/runner/work/Nim/Nim/@mtemp.nim.c:84:95: note: expected ‘tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ’ but argument is of type ‘tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw’
   84 | N_LIB_PRIVATE N_NIMCALL(NU64, j__Imd1mTdZ9aihAMHG0r9cEjZQ)(tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ m) {
      |                                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
Error: execution of an external compiler program 'gcc -c  -w   -I/home/runner/.choosenim/toolchains/nim-1.2.18/lib -I/home/runner/work/Nim/Nim -o /home/runner/work/Nim/Nim/@mtemp.nim.c.o /home/runner/work/Nim/Nim/@mtemp.nim.c' failed with exit code: 1

IR

Compiled filesize 0 (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;
typedef struct tyObject_ScolonObjectType___mfMAkYueFxPIYxcSL9bSGzQ tyObject_ScolonObjectType___mfMAkYueFxPIYxcSL9bSGzQ;
typedef struct tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ;
typedef struct tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw;
struct tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ {
unsigned long long m;
};
struct tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw {
NU64 m;
};
N_LIB_PRIVATE N_NIMCALL(NU64, call__v36VS9br88QDiLYu9cM1mj5w)(tyObject_ScolonObjectType___mfMAkYueFxPIYxcSL9bSGzQ* client);
N_LIB_PRIVATE N_NIMCALL(NU64, j__Imd1mTdZ9aihAMHG0r9cEjZQ)(tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ m);
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_NIMCALL(tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw, n__29b7BEWoBPUP01Sy8VzCX9cA)(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(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
static N_INLINE(void, nimFrame)(TFrame* s) {
 {
  if (!(framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw == NIM_NIL)) goto LA3_;
  (*s).calldepth = ((NI16) 0);
 }
 goto LA1_;
 LA3_: ;
 {
  (*s).calldepth = (NI16)((*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).calldepth   ((NI16) 1));
 }
 LA1_: ;
 (*s).prev = framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
 framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = s;
 {
  if (!((*s).calldepth == ((NI16) (((NI) 2000))))) goto LA8_;
  callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw();
 }
 LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
 framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = (*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).prev;
}
N_LIB_PRIVATE N_NIMCALL(NU64, j__Imd1mTdZ9aihAMHG0r9cEjZQ)(tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ m) {
 NU64 result;
 nimfr_("j", "/home/runner/work/Nim/Nim/temp.nim");
 result = (NU64)0;
 popFrame();
 return result;
}
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {
 void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
 nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
N_LIB_PRIVATE N_NIMCALL(tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw, n__29b7BEWoBPUP01Sy8VzCX9cA)(void) {
 tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw result;
 nimfr_("n", "/home/runner/work/Nim/Nim/temp.nim");
 nimZeroMem((void*)(&result), sizeof(tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw));
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, call__v36VS9br88QDiLYu9cM1mj5w)(tyObject_ScolonObjectType___mfMAkYueFxPIYxcSL9bSGzQ* client) {
 NU64 result;
 tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw T1_;
 NU64 T2_;
 nimfr_("call", "/home/runner/work/Nim/Nim/temp.nim");
 result = (NU64)0;
 T1_ = n__29b7BEWoBPUP01Sy8VzCX9cA();
 T2_ = (NU64)0;
 T2_ = j__Imd1mTdZ9aihAMHG0r9cEjZQ(T1_);
 (void)(T2_);
 popFrame();
 return result;
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
 nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE N_NIMCALL(NU64, call__BaCc1O83Ne3QBLG4X3sUmQ)(tyObject_ScolonObjectType___mfMAkYueFxPIYxcSL9bSGzQ* client) {
 NU64 result;
 nimfr_("call", "/home/runner/work/Nim/Nim/temp.nim");
{	result = (NU64)0;
 result = call__v36VS9br88QDiLYu9cM1mj5w(client);
 goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
 return result;
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
 void (*volatile inner)(void);
 inner = PreMainInner;
 systemDatInit000();
 initStackBottomWith((void *)&inner);
 systemInit000();
 (*inner)();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
 NimMainModule();
}
N_CDECL(void, NimMain)(void) {
 void (*volatile inner)(void);
 PreMain();
 inner = NimMainInner;
 initStackBottomWith((void *)&inner);
 (*inner)();
}
int main(int argc, char** args, char** env) {
 cmdLine = args;
 cmdCount = argc;
 gEnv = env;
 NimMain();
 return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
}
}

Stats

  • Started 2024-06-27T12:34:03
  • Finished 2024-06-27T12:34:03
  • Duration

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("X"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newIdentNode("E"),
          newEmptyNode(),
          newEmptyNode()
        )
      ),
      nnkObjectTy.newTree(
        newEmptyNode(),
        newEmptyNode(),
        nnkRecList.newTree(
          nnkIdentDefs.newTree(
            newIdentNode("m"),
            newIdentNode("T"),
            newEmptyNode()
          )
        )
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("B"),
      newEmptyNode(),
      nnkBracketExpr.newTree(
        newIdentNode("X"),
        newIdentNode("culonglong"),
        newIdentNode("cstring")
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("S"),
      newEmptyNode(),
      nnkRefTy.newTree(
        nnkObjectTy.newTree(
          newEmptyNode(),
          nnkOfInherit.newTree(
            newIdentNode("RootObj")
          ),
          newEmptyNode()
        )
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("j"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("m"),
        nnkBracketExpr.newTree(
          newIdentNode("X"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("n"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("X"),
        newIdentNode("T"),
        newIdentNode("cstring")
      ),
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        nnkBracketExpr.newTree(
          newIdentNode("typedesc"),
          newIdentNode("SomeUnsignedInt")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkMethodDef.newTree(
    newIdentNode("call"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newIdentNode("uint64"),
      nnkIdentDefs.newTree(
        newIdentNode("client"),
        newIdentNode("S"),
        newEmptyNode()
      )
    ),
    nnkPragma.newTree(
      newIdentNode("base")
    ),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        nnkCall.newTree(
          newIdentNode("j"),
          nnkCall.newTree(
            newIdentNode("n"),
            newIdentNode("uint64")
          )
        )
      )
    )
  )
)
1.0.10 👎 FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
Error: execution of an external compiler program 'gcc -c  -w  -I/home/runner/.choosenim/toolchains/nim-1.0.10/lib -I/home/runner/work/Nim/Nim -o /home/runner/work/Nim/Nim/@mtemp.nim.c.o /home/runner/work/Nim/Nim/@mtemp.nim.c' failed with exit code: 1

/home/runner/work/Nim/Nim/@mtemp.nim.c: In function ‘call__v36VS9br88QDiLYu9cM1mj5w’:
/home/runner/work/Nim/Nim/@mtemp.nim.c:110:43: error: incompatible type for argument 1 of ‘j__Imd1mTdZ9aihAMHG0r9cEjZQ’
  110 |         T2_ = j__Imd1mTdZ9aihAMHG0r9cEjZQ(T1_);
      |                                           ^~~
      |                                           |
      |                                           tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw
/home/runner/work/Nim/Nim/@mtemp.nim.c:85:95: note: expected ‘tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ’ but argument is of type ‘tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw’
   85 | N_LIB_PRIVATE N_NIMCALL(NU64, j__Imd1mTdZ9aihAMHG0r9cEjZQ)(tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ m) {      NU64 result;
      |                                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^

IR

Compiled filesize 0 (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;
typedef struct tyObject_ScolonObjectType___mfMAkYueFxPIYxcSL9bSGzQ tyObject_ScolonObjectType___mfMAkYueFxPIYxcSL9bSGzQ;
typedef struct tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ;
typedef struct tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw;
struct tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ {
unsigned long long m;
};
struct tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw {
NU64 m;
};
N_LIB_PRIVATE N_NIMCALL(NU64, call__v36VS9br88QDiLYu9cM1mj5w)(tyObject_ScolonObjectType___mfMAkYueFxPIYxcSL9bSGzQ* client);
N_LIB_PRIVATE N_NIMCALL(NU64, j__Imd1mTdZ9aihAMHG0r9cEjZQ)(tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ m);
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_NIMCALL(tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw, n__29b7BEWoBPUP01Sy8VzCX9cA)(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(void, initStackBottomWith)(void* locals);
N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
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(NU64, j__Imd1mTdZ9aihAMHG0r9cEjZQ)(tyObject_X__OprfyvD7Gq45Ut7GxSEZRQ m) {	NU64 result;
 nimfr_("j", "/home/runner/work/Nim/Nim/temp.nim");
 result = (NU64)0;
 popFrame();
 return result;
}
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {	void* T1_;
 T1_ = (void*)0;
 T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {	nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
N_LIB_PRIVATE N_NIMCALL(tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw, n__29b7BEWoBPUP01Sy8VzCX9cA)(void) {	tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw result;
 nimfr_("n", "/home/runner/work/Nim/Nim/temp.nim");
 nimZeroMem((void*)(&result), sizeof(tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw));
 popFrame();
 return result;
}
N_LIB_PRIVATE N_NIMCALL(NU64, call__v36VS9br88QDiLYu9cM1mj5w)(tyObject_ScolonObjectType___mfMAkYueFxPIYxcSL9bSGzQ* client) {	NU64 result;
 tyObject_X__Okq1I8cM9cYZst9a1fRcQhRw T1_;
 NU64 T2_;
 nimfr_("call", "/home/runner/work/Nim/Nim/temp.nim");
 result = (NU64)0;
 T1_ = n__29b7BEWoBPUP01Sy8VzCX9cA();
 T2_ = (NU64)0;
 T2_ = j__Imd1mTdZ9aihAMHG0r9cEjZQ(T1_);
 (void)(T2_);
 popFrame();
 return result;
}
static N_INLINE(void, initStackBottomWith)(void* locals) {	nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE N_NIMCALL(NU64, call__BaCc1O83Ne3QBLG4X3sUmQ)(tyObject_ScolonObjectType___mfMAkYueFxPIYxcSL9bSGzQ* client) {	NU64 result;
 nimfr_("call", "/home/runner/work/Nim/Nim/temp.nim");
{	result = (NU64)0;
 result = call__v36VS9br88QDiLYu9cM1mj5w(client);
 goto BeforeRet_;
 }BeforeRet_: ;
 popFrame();
 return result;
}
void PreMainInner(void) {
}
int cmdCount;
char** cmdLine;
char** gEnv;
void PreMain(void) {
 void (*volatile inner)(void);
 inner = PreMainInner;
 systemDatInit000();
 initStackBottomWith((void *)&inner);
 systemInit000();
 (*inner)();
}
N_CDECL(void, NimMainInner)(void) {
 NimMainModule();
}
N_CDECL(void, NimMain)(void) {
 void (*volatile inner)(void);
 PreMain();
 inner = NimMainInner;
 initStackBottomWith((void *)&inner);
 (*inner)();
}
int main(int argc, char** args, char** env) {
 cmdLine = args;
 cmdCount = argc;
 gEnv = env;
 NimMain();
 return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
}
}

Stats

  • Started 2024-06-27T12:34:05
  • Finished 2024-06-27T12:34:05
  • Duration

AST

nnkStmtList.newTree(
  nnkTypeSection.newTree(
    nnkTypeDef.newTree(
      newIdentNode("X"),
      nnkGenericParams.newTree(
        nnkIdentDefs.newTree(
          newIdentNode("T"),
          newIdentNode("E"),
          newEmptyNode(),
          newEmptyNode()
        )
      ),
      nnkObjectTy.newTree(
        newEmptyNode(),
        newEmptyNode(),
        nnkRecList.newTree(
          nnkIdentDefs.newTree(
            newIdentNode("m"),
            newIdentNode("T"),
            newEmptyNode()
          )
        )
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("B"),
      newEmptyNode(),
      nnkBracketExpr.newTree(
        newIdentNode("X"),
        newIdentNode("culonglong"),
        newIdentNode("cstring")
      )
    ),
    nnkTypeDef.newTree(
      newIdentNode("S"),
      newEmptyNode(),
      nnkRefTy.newTree(
        nnkObjectTy.newTree(
          newEmptyNode(),
          nnkOfInherit.newTree(
            newIdentNode("RootObj")
          ),
          newEmptyNode()
        )
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("j"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newIdentNode("E"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newIdentNode("T"),
      nnkIdentDefs.newTree(
        newIdentNode("m"),
        nnkBracketExpr.newTree(
          newIdentNode("X"),
          newIdentNode("T"),
          newIdentNode("E")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkProcDef.newTree(
    newIdentNode("n"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      nnkBracketExpr.newTree(
        newIdentNode("X"),
        newIdentNode("T"),
        newIdentNode("cstring")
      ),
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        nnkBracketExpr.newTree(
          newIdentNode("typedesc"),
          newIdentNode("SomeUnsignedInt")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkMethodDef.newTree(
    newIdentNode("call"),
    newEmptyNode(),
    newEmptyNode(),
    nnkFormalParams.newTree(
      newIdentNode("uint64"),
      nnkIdentDefs.newTree(
        newIdentNode("client"),
        newIdentNode("S"),
        newEmptyNode()
      )
    ),
    nnkPragma.newTree(
      newIdentNode("base")
    ),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        nnkCall.newTree(
          newIdentNode("j"),
          nnkCall.newTree(
            newIdentNode("n"),
            newIdentNode("uint64")
          )
        )
      )
    )
  )
)
Stats
  • GCC 11.4.0
  • Clang 14.0.0
  • NodeJS 20.3
  • Created 2024-06-27T12:27:16Z
  • Comments 1
  • Commands nim c --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim

🤖 Bug found in 24 minutes bisecting 8 commits at 0 commits per second

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants