Improve effect propagation by skipping hooks in trackCall (#25940)

ref https://github.com/nim-lang/Nim/pull/25731
don't propagate effects for assignment hooks without effect lists
This commit is contained in:
ringabout
2026-06-27 01:57:03 +08:00
committed by GitHub
parent 5688a122f1
commit 6828effd13
2 changed files with 12 additions and 2 deletions

View File

@@ -1197,7 +1197,9 @@ proc trackCall(tracked: PEffects; n: PNode) =
else:
if laxEffects notin tracked.c.config.legacyFeatures and a.kind == nkSym and
a.sym.kind in routineKinds:
propagateEffects(tracked, n, a.sym)
let (isHook, opKind) = findHookKind(a.sym.name.s)
if (not isHook) or opKind notin {attachedAsgn, attachedSink, attachedDup}:
propagateEffects(tracked, n, a.sym)
else:
mergeRaises(tracked, effectList[exceptionEffects], n)
mergeTags(tracked, effectList[tagEffects], n)