mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 01:14:41 +00:00
fix #14312
This commit is contained in:
@@ -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 == "")
|
||||
|
||||
Reference in New Issue
Block a user