mirror of
https://github.com/nim-lang/Nim.git
synced 2026-05-05 05:24:49 +00:00
This reverts commit 216be4060a.
This commit is contained in:
@@ -93,6 +93,7 @@ destroy
|
||||
destroy
|
||||
destroy
|
||||
sink
|
||||
sink
|
||||
destroy
|
||||
copy
|
||||
(f: 1)
|
||||
@@ -686,7 +687,7 @@ caseNotAConstant()
|
||||
|
||||
proc potentialSelfAssign(i: var int) =
|
||||
var a: array[2, OO]
|
||||
a[i] = OO(f: 1) # turned into a memcopy
|
||||
a[i] = OO(f: 1)
|
||||
a[1] = OO(f: 2)
|
||||
a[i+1] = a[i] # This must not =sink, but =copy
|
||||
inc i
|
||||
@@ -743,30 +744,3 @@ proc partToWholeUnownedRef =
|
||||
|
||||
partToWholeUnownedRef()
|
||||
|
||||
|
||||
#--------------------------------------------------------------------
|
||||
# test that nodes that get copied during the transformation
|
||||
# (like dot exprs) don't loose their firstWrite/lastRead property
|
||||
|
||||
type
|
||||
OOO = object
|
||||
initialized: bool
|
||||
|
||||
C = object
|
||||
o: OOO
|
||||
|
||||
proc `=destroy`(o: var OOO) =
|
||||
doAssert o.initialized, "OOO was destroyed before initialization!"
|
||||
|
||||
proc initO(): OOO =
|
||||
OOO(initialized: true)
|
||||
|
||||
proc initC(): C =
|
||||
C(o: initO())
|
||||
|
||||
proc pair(): tuple[a: C, b: C] =
|
||||
result.a = initC() # <- when firstWrite tries to find this node to start its analysis it fails, because injectdestructors uses copyTree/shallowCopy
|
||||
result.b = initC()
|
||||
|
||||
discard pair()
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ _ = (
|
||||
blitTmp, ";")
|
||||
lvalue = _[0]
|
||||
lnext = _[1]
|
||||
result.value = move lvalue
|
||||
`=sink`(result.value, move lvalue)
|
||||
`=destroy`(lnext)
|
||||
`=destroy_1`(lvalue)
|
||||
-- end of expandArc ------------------------
|
||||
|
||||
Reference in New Issue
Block a user