Nim
Nim copied to clipboard
Compiling with --hotcodereloading:on generates clang compile errors
Description
Repro:
- Create a
test.nim
file with e.g.echo "hello"
in. - Compile with
nim c -r --hotcodereloading:on test.nim
- The build fails with clang errors.
Nim Version
Nim Compiler Version 2.0.1 [MacOSX: arm64] Compiled at 2023-10-09 Copyright (c) 2006-2023 by Andreas Rumpf
git hash: d30565f810ba5165ea2e5bcd91ea3dee9950051f active boot switches: -d:release
Current Output
CC: ../dev/nim/nim-source/lib/system/exceptions.nim
CC: ../dev/nim/nim-source/lib/std/private/dragonbox.nim
CC: ../dev/nim/nim-source/lib/std/private/schubfach.nim
CC: ../dev/nim/nim-source/lib/std/formatfloat.nim
CC: ../dev/nim/nim-source/lib/std/objectdollar.nim
CC: ../dev/nim/nim-source/lib/system/dollars.nim
CC: ../dev/nim/nim-source/lib/std/typedthreads.nim
CC: ../dev/nim/nim-source/lib/system/stacktraces.nim
CC: ../dev/nim/nim-source/lib/std/private/bitops_utils.nim
CC: ../dev/nim/nim-source/lib/system/countbits_impl.nim
/Users/scarter/.cache/nim/test_d/@m..@sdev@snim@snim-source@slib@[email protected]:150:76: error: initializer element is not a compile-time constant
N_LIB_PRIVATE TNimTypeV2 NTIv2__NGi9coTMIImwEn9bbid4fqyA_ = {.destructor = (void*)rttiDestroy__systemZexceptions_u56___grOaF4HD6uomto1opDGctg, .size = sizeof(tyObject_IndexDefect__NGi9coTMIImwEn9bbid4fqyA), .align = (NI16) NIM_ALIGNOF(tyObject_IndexDefect__NGi9coTMIImwEn9bbid4fqyA), .depth = 3, .display = TM__TzI3paKQY09cLjc9cmCvur3A_2, .traceImpl = (void*)eqtrace___system_u4614___o4n9cZBHzw1IHR5fm4fPePA, .flags = 0};
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/scarter/.cache/nim/test_d/@m..@sdev@snim@snim-source@slib@[email protected]:152:76: error: initializer element is not a compile-time constant
N_LIB_PRIVATE TNimTypeV2 NTIv2__aIK9b0jMDtIHpNwgmCTcc9bQ_ = {.destructor = (void*)rttiDestroy__systemZexceptions_u58___grOaF4HD6uomto1opDGctg_2, .size = sizeof(tyObject_OverflowDefect__aIK9b0jMDtIHpNwgmCTcc9bQ), .align = (NI16) NIM_ALIGNOF(tyObject_OverflowDefect__aIK9b0jMDtIHpNwgmCTcc9bQ), .depth = 4, .display = TM__TzI3paKQY09cLjc9cmCvur3A_3, .traceImpl = (void*)eqtrace___system_u5009___Ec9cY8mQrpjwZoTV9aw9aOu1g, .flags = 0};
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/scarter/.cache/nim/test_d/@m..@sdev@snim@snim-source@slib@[email protected]:154:74: error: initializer element is not a compile-time constant
N_LIB_PRIVATE TNimTypeV2 NTIv2__sLkvReWT178tWm5f6a1NSQ_ = {.destructor = (void*)rttiDestroy__systemZexceptions_u60___grOaF4HD6uomto1opDGctg_3, .size = sizeof(tyObject_RangeDefect__sLkvReWT178tWm5f6a1NSQ), .align = (NI16) NIM_ALIGNOF(tyObject_RangeDefect__sLkvReWT178tWm5f6a1NSQ), .depth = 3, .display = TM__TzI3paKQY09cLjc9cmCvur3A_4, .traceImpl = (void*)eqtrace___system_u4545___Hx1ZqdfqfHhcaX3KdyUbmw, .flags = 0};
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 errors generated.
CC: ../dev/nim/nim-source/lib/system/repr_v2.nim
Error: execution of an external compiler program 'clang -c -w -ferror-limit=3 -pthread -fPIC -I/Users/scarter/dev/nim/nim-source/lib -I/Users/scarter/temp -o /Users/scarter/.cache/nim/test_d/@m..@sdev@snim@snim-source@slib@[email protected] /Users/scarter/.cache/nim/test_d/@m..@sdev@snim@snim-source@slib@[email protected]' failed with exit code: 1
Expected Output
File should compile.
Possible Solution
No response
Additional Information
Curiosities:
- Compiling the empty nim file with
cpp
works. - However, adding and raising custom exception does fail (and only with
--hotcodereloading:on
) e.g.
type TT = object of Defect
TT.newException("Test")
and compiling it with:
nim cpp -r --hotcodereloading:on test.nim
fails with:
......................................................................
/Users/scarter/temp/test.nim(4, 1) Warning: unreachable code after 'return' statement or '{.noReturn.}' proc [UnreachableCode]
CC: ../dev/nim/nim-source/lib/system/exceptions.nim
CC: ../dev/nim/nim-source/lib/std/private/since.nim
CC: ../dev/nim/nim-source/lib/system/ctypes.nim
CC: ../dev/nim/nim-source/lib/std/sysatomics.nim
CC: ../dev/nim/nim-source/lib/system/ansi_c.nim
CC: ../dev/nim/nim-source/lib/system/memory.nim
CC: ../dev/nim/nim-source/lib/std/private/syslocks.nim
CC: ../dev/nim/nim-source/lib/std/private/threadtypes.nim
CC: ../dev/nim/nim-source/lib/std/private/digitsutils.nim
CC: ../dev/nim/nim-source/lib/std/private/miscdollars.nim
CC: ../dev/nim/nim-source/lib/std/assertions.nim
CC: ../dev/nim/nim-source/lib/system/iterators.nim
CC: ../dev/nim/nim-source/lib/system/coro_detection.nim
CC: ../dev/nim/nim-source/lib/std/private/dragonbox.nim
CC: ../dev/nim/nim-source/lib/std/private/schubfach.nim
CC: ../dev/nim/nim-source/lib/std/formatfloat.nim
CC: ../dev/nim/nim-source/lib/std/objectdollar.nim
CC: ../dev/nim/nim-source/lib/system/dollars.nim
CC: ../dev/nim/nim-source/lib/std/typedthreads.nim
CC: ../dev/nim/nim-source/lib/system/stacktraces.nim
CC: ../dev/nim/nim-source/lib/std/private/bitops_utils.nim
CC: ../dev/nim/nim-source/lib/system/countbits_impl.nim
CC: ../dev/nim/nim-source/lib/system/repr_v2.nim
CC: ../dev/nim/nim-source/lib/std/widestrs.nim
CC: ../dev/nim/nim-source/lib/std/syncio.nim
CC: ../dev/nim/nim-source/lib/system.nim
CC: test.nim
/Users/scarter/.cache/nim/test_d/@mtest.nim.cpp:338:19: error: assigning to 'TNimTypeV2 *' from incompatible type 'TNimTypeV2'; take the address with &
(*T2_).m_type = (NTIv2__CAcjV9bDJGOM79bve11d5T9aA_);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&
1 error generated.
Error: execution of an external compiler program 'clang++ -c -std=gnu++17 -funsigned-char -pthread -I/Users/scarter/dev/nim/nim-source/lib -I/Users/scarter/temp -o /Users/scarter/.cache/nim/test_d/@mtest.nim.cpp.o /Users/scarter/.cache/nim/test_d/@mtest.nim.cpp' failed with exit code: 1