mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 09:24:36 +00:00
* Allow let to not have value when using importc
This allows a let statement with the `{.importc.}` pragma to not be
initialised with a value. This allows us to declare C constants as Nim
lets without putting the value in the Nim code (which can lead to
errors, and requires us to go looking for the value). Fixes #14253
* Proper fix and documentation + changelog entry
* Improve testcase with one from timotheecour
* Add test to verify it working with macros
25 lines
416 B
Nim
25 lines
416 B
Nim
discard """
|
|
targets: "c cpp js"
|
|
"""
|
|
|
|
when defined(c) or defined(cpp):
|
|
{.emit:"""
|
|
const int TEST1 = 123;
|
|
#define TEST2 321
|
|
""".}
|
|
|
|
when defined(js):
|
|
{.emit:"""
|
|
const TEST1 = 123;
|
|
const TEST2 = 321; // JS doesn't have macros, so we just duplicate
|
|
""".}
|
|
|
|
let
|
|
TEST0 = 1
|
|
TEST1 {.importc, nodecl.}: cint
|
|
TEST2 {.importc, nodecl.}: cint
|
|
|
|
doAssert TEST0 == 1
|
|
doAssert TEST1 == 123
|
|
doAssert TEST2 == 321
|