fix #14312
This commit is contained in:
parent
55446c05a4
commit
2d7ccf0928
2 changed files with 22 additions and 8 deletions
|
|
@ -62,9 +62,18 @@ proc newAsgnStmt(le, ri: PNode): PNode =
|
|||
result[0] = le
|
||||
result[1] = ri
|
||||
|
||||
proc genBuiltin(g: ModuleGraph; magic: TMagic; name: string; i: PNode): PNode =
|
||||
result = newNodeI(nkCall, i.info)
|
||||
result.add createMagic(g, name, magic).newSymNode
|
||||
result.add i
|
||||
|
||||
proc defaultOp(c: var TLiftCtx; t: PType; body, x, y: PNode) =
|
||||
if c.kind in {attachedAsgn, attachedDeepCopy, attachedSink}:
|
||||
body.add newAsgnStmt(x, y)
|
||||
elif c.kind == attachedDestructor and c.addMemReset:
|
||||
let call = genBuiltin(c.g, mDefault, "default", x)
|
||||
call.typ = t
|
||||
body.add newAsgnStmt(x, call)
|
||||
|
||||
proc genAddr(g: ModuleGraph; x: PNode): PNode =
|
||||
if x.kind == nkHiddenDeref:
|
||||
|
|
@ -74,12 +83,6 @@ proc genAddr(g: ModuleGraph; x: PNode): PNode =
|
|||
result = newNodeIT(nkHiddenAddr, x.info, makeVarType(x.typ.owner, x.typ))
|
||||
result.add x
|
||||
|
||||
|
||||
proc genBuiltin(g: ModuleGraph; magic: TMagic; name: string; i: PNode): PNode =
|
||||
result = newNodeI(nkCall, i.info)
|
||||
result.add createMagic(g, name, magic).newSymNode
|
||||
result.add i
|
||||
|
||||
proc genWhileLoop(c: var TLiftCtx; i, dest: PNode): PNode =
|
||||
result = newNodeI(nkWhileStmt, c.info, 2)
|
||||
let cmp = genBuiltin(c.g, mLtI, "<", i)
|
||||
|
|
|
|||
|
|
@ -194,8 +194,6 @@ proc test_myobject =
|
|||
test_myobject()
|
||||
|
||||
|
||||
|
||||
|
||||
#------------------------------------------------
|
||||
# bug #14244
|
||||
|
||||
|
|
@ -212,3 +210,16 @@ proc init(): RocksDBResult[string] =
|
|||
result.value = "ok"
|
||||
|
||||
echo init()
|
||||
|
||||
|
||||
#------------------------------------------------
|
||||
# bug #14312
|
||||
|
||||
type MyObj = object
|
||||
case kind: bool
|
||||
of false: x0: int # would work with a type like seq[int]; value would be reset
|
||||
of true: x1: string
|
||||
|
||||
var a = MyObj(kind: false, x0: 1234)
|
||||
a.kind = true
|
||||
doAssert(a.x1 == "")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue