mirror of
https://github.com/nim-lang/Nim.git
synced 2026-09-17 18:44:53 +00:00
fixes #26015 Fixes imported global variables with codegenDecl being emitted as definitions instead of extern declarations. A variable’s codegenDecl format should customize its definition in the owning module. Other modules referencing the variable must emit a normal declaration: ```c extern NI variable; ``` After the variable-declaration builder refactor, genVarPrototype passed Extern visibility to addVar. However, the sfCodegenDecl branch returned before applying that visibility. This caused importing modules to emit another tentative definition, resulting in duplicate-symbol linker errors. The fix restores the previous distinction between the custom definition and cross-module prototypes. It also adds C and C++ regression coverage for both direct access and access through an inline procedure. follows up https://github.com/nim-lang/Nim/pull/24423
14 lines
214 B
Nim
14 lines
214 B
Nim
discard """
|
|
output: '''
|
|
123
|
|
123
|
|
'''
|
|
ccodecheck: "'extern NI /* custom declaration */ codegenDeclGlobal'"
|
|
targets: "c cpp"
|
|
"""
|
|
|
|
import ./mcodegendeclglobal
|
|
|
|
echo codegenDeclGlobal
|
|
echo readCodegenDeclGlobal()
|