fixes #13240
This commit is contained in:
parent
861a5340fe
commit
60f8fdcdab
2 changed files with 33 additions and 1 deletions
|
|
@ -1340,7 +1340,14 @@ proc genObjConstr(p: BProc, e: PNode, d: var TLoc) =
|
||||||
#echo rendertree e, " ", e.isDeepConstExpr
|
#echo rendertree e, " ", e.isDeepConstExpr
|
||||||
# inheritance in C++ does not allow struct initialization so
|
# inheritance in C++ does not allow struct initialization so
|
||||||
# we skip this step here:
|
# 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
|
if handleConstExpr(p, e, d): return
|
||||||
var t = e.typ.skipTypes(abstractInstOwned)
|
var t = e.typ.skipTypes(abstractInstOwned)
|
||||||
let isRef = t.kind == tyRef
|
let isRef = t.kind == tyRef
|
||||||
|
|
|
||||||
25
tests/arc/tconst_to_sink.nim
Normal file
25
tests/arc/tconst_to_sink.nim
Normal 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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue