Skip to content

Commit c6a5a83

Browse files
committed
makes compile-time define pragmas works when using cache
1 parent 61831e5 commit c6a5a83

File tree

1 file changed

+23
-7
lines changed

1 file changed

+23
-7
lines changed

compiler/nimconfcache.nim

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,13 @@ proc configToNif(conf: ConfigRef; dest: var TokenBuf) =
206206
dest.toNif "configVars", conf.configVars
207207

208208
dest.buildTree "defines":
209-
for def in definedSymbolNames(conf.symbols):
210-
dest.addStrLit def
209+
for def, val in conf.symbols:
210+
if val == "true":
211+
dest.addStrLit def
212+
else:
213+
dest.buildTree "kv":
214+
dest.addStrLit def
215+
dest.addStrLit val
211216

212217
dest.toNif "nimblepaths", conf.nimblePaths
213218
dest.toNif "searchPaths", conf.searchPaths
@@ -356,10 +361,20 @@ proc loadConfigsFromNif(conf: ConfigRef; n: var Cursor) =
356361
expectTag n, "defines"
357362
inc n
358363
while n.kind != ParRi:
359-
assert n.kind == StringLit
360-
let def = pool.strings[n.litId]
361-
inc n
362-
conf.symbols.defineSymbol(def)
364+
if n.kind == ParLe:
365+
expectTag n, "kv"
366+
inc n
367+
let def = pool.strings[n.litId]
368+
inc n
369+
let val = pool.strings[n.litId]
370+
inc n
371+
conf.symbols.defineSymbol(def, val)
372+
assert n.kind == ParRi
373+
inc n
374+
else:
375+
let def = pool.strings[n.litId]
376+
inc n
377+
conf.symbols.defineSymbol(def)
363378
inc n
364379

365380
fromNif conf.nimblePaths, "nimblepaths", n
@@ -513,7 +528,7 @@ when isMainModule:
513528
assertImpl maxLoopIterationsVM
514529
assertImpl maxCallDepthVM
515530
assertImpl configVars
516-
assert eqlKeys(x.symbols, y.symbols)
531+
assertImpl symbols
517532
assertImpl nimblePaths
518533
assertImpl searchPaths
519534
assertImpl outFile
@@ -602,6 +617,7 @@ when isMainModule:
602617
conf.setConfigVar(".", "")
603618
conf.symbols.initDefines()
604619
conf.symbols.defineSymbol("test")
620+
conf.symbols.defineSymbol("FooBar", "123")
605621
conf.nimblePaths = @[AbsoluteDir"/foo", AbsoluteDir"/lib/nimble"]
606622
conf.searchPaths = @[AbsoluteDir"/lib", AbsoluteDir"/user/lib"]
607623
conf.outFile = RelativeFile"foo"

0 commit comments

Comments
 (0)