fix: +3 tests (197/233, 85%) — bigint overflow, var_qmark indent, merge double discard

This commit is contained in:
2026-05-09 20:34:26 +03:00
parent f391197524
commit fb13f15c39
3 changed files with 22 additions and 8 deletions
+11 -4
View File
@@ -395,10 +395,17 @@ proc initMacros*() =
let coll = bindings.items[1]
let gs = cljSymbol(gensymName("ds_"))
if name.kind == ckVector:
let destructured = cljList(@[cljSymbol("let"), name, cljList(@[cljSymbol("first"), gs])])
let loopBody = cljList(@[cljSymbol("when"), gs] & @[destructured] & body)
let recurBody = cljList(@[cljSymbol("recur"), cljList(@[cljSymbol("rest"), gs])])
let loopForm = cljList(@[cljSymbol("loop"), cljVector(@[gs, cljList(@[cljSymbol("seq"), gs])]), loopBody, recurBody])
let seqGs = cljSymbol(gensymName("sq_"))
let tmpGs = cljSymbol(gensymName("tmp_"))
var innerBindings: seq[CljVal] = @[]
for j in 0..<name.items.len:
innerBindings.add(name.items[j])
innerBindings.add(cljList(@[cljSymbol("nth"), tmpGs, cljInt(j)]))
let destructured = cljList(@[cljSymbol("let"), cljVector(innerBindings)] & body)
let loopBody = cljList(@[cljSymbol("when"), seqGs,
cljList(@[cljSymbol("let"), cljVector(@[tmpGs, cljList(@[cljSymbol("first"), seqGs])]), destructured])])
let recurBody = cljList(@[cljSymbol("recur"), cljList(@[cljSymbol("rest"), seqGs])])
let loopForm = cljList(@[cljSymbol("loop"), cljVector(@[seqGs, cljList(@[cljSymbol("seq"), gs])]), loopBody, recurBody])
result = cljList(@[cljSymbol("let"), cljVector(@[gs, coll]), loopForm])
else:
let loopBody = cljList(@[cljSymbol("when"), name] & body)