This commit is contained in:
Araq
2020-03-10 11:10:52 +01:00
committed by Andreas Rumpf
parent 861a5340fe
commit 60f8fdcdab
2 changed files with 33 additions and 1 deletions

View File

@@ -1340,7 +1340,14 @@ proc genObjConstr(p: BProc, e: PNode, d: var TLoc) =
#echo rendertree e, " ", e.isDeepConstExpr
# inheritance in C++ does not allow struct initialization so
# we skip this step here:
if not p.module.compileToCpp:
if not p.module.compileToCpp and optSeqDestructors notin p.config.globalOptions:
# disabled optimization: it is wrong for C++ and now also
# causes trouble for --gc:arc, see bug #13240
#[
var box: seq[Thing]
for i in 0..3:
box.add Thing(s1: "121") # pass by sink can mutate Thing.
]#
if handleConstExpr(p, e, d): return
var t = e.typ.skipTypes(abstractInstOwned)
let isRef = t.kind == tyRef

View File

@@ -0,0 +1,25 @@
discard """
output: '''@[(s1: "333", s2: ""), (s1: "abc", s2: "def"), (s1: "3x", s2: ""), (s1: "3x", s2: ""), (s1: "3x", s2: ""), (s1: "3x", s2: ""), (s1: "lastone", s2: "")]'''
cmd: "nim c --gc:arc $file"
"""
# bug #13240
type
Thing = object
s1: string
s2: string
var box: seq[Thing]
const c = [Thing(s1: "333"), Thing(s1: "abc", s2: "def")]
for i in 0..high(c):
box.add c[i]
for i in 0..3:
box.add Thing(s1: "3x")
box.add Thing(s1: "lastone")
echo box