fixes #12340; enable refc with move analyzer (#23782)

fixes https://github.com/nim-lang/Nim/issues/12340

(cherry picked from commit a7a8e364ea)
This commit is contained in:
ringabout
2025-02-26 03:20:24 +08:00
committed by narimiran
parent 3a9c88239b
commit 8038ad4e58
3 changed files with 14 additions and 3 deletions

View File

@@ -137,8 +137,9 @@ proc createTypeBoundOps(tracked: PEffects, typ: PType; info: TLineInfo; explicit
createTypeBoundOps(tracked.graph, tracked.c, realType.lastSon, info)
createTypeBoundOps(tracked.graph, tracked.c, typ, info, tracked.c.idgen)
if (tfHasAsgn in typ.flags) or
optSeqDestructors in tracked.config.globalOptions:
if tracked.config.selectedGC == gcRefc or
optSeqDestructors in tracked.config.globalOptions or
tfHasAsgn in typ.flags:
tracked.owner.flags.incl sfInjectDestructors
proc isLocalSym(a: PEffects, s: PSym): bool =

View File

@@ -240,3 +240,11 @@ block: # bug #17197
result = true
doAssert needlemanWunsch("ABC", "DEFG", 1, 2, 3)
block: # bug #12340
func consume(x: sink seq[int]) =
x[0] += 5
let x = @[1, 2, 3, 4]
consume x
doAssert x == @[1, 2, 3, 4]

View File

@@ -1,7 +1,9 @@
discard """
matrix: "--mm:orc; --mm:refc"
matrix: "--mm:orc"
"""
# TODO: --mm:refc
import std/marshal
import std/[assertions, objectdollar, streams]