parent
cf01945f54
commit
3bdc000521
2 changed files with 28 additions and 2 deletions
|
|
@ -994,8 +994,10 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
|
||||||
let nb = regs[rb].node
|
let nb = regs[rb].node
|
||||||
let nc = regs[rc].node
|
let nc = regs[rc].node
|
||||||
if nb.kind != nc.kind: discard
|
if nb.kind != nc.kind: discard
|
||||||
elif (nb == nc) or (nb.kind == nkNilLit): ret = true
|
elif (nb == nc) or (nb.kind == nkNilLit): ret = true # intentional
|
||||||
elif nb.kind == nkIntLit and nb.intVal == nc.intVal: # TODO: nkPtrLit
|
elif sameConstant(nb, nc): ret = true
|
||||||
|
# this also takes care of procvar's, represented as nkTupleConstr, eg (nil, nil)
|
||||||
|
elif nb.kind == nkIntLit and nc.kind == nkIntLit and nb.intVal == nc.intVal: # TODO: nkPtrLit
|
||||||
let tb = nb.getTyp
|
let tb = nb.getTyp
|
||||||
let tc = nc.getTyp
|
let tc = nc.getTyp
|
||||||
ret = tb.kind in PtrLikeKinds and tc.kind == tb.kind
|
ret = tb.kind in PtrLikeKinds and tc.kind == tb.kind
|
||||||
|
|
|
||||||
|
|
@ -205,6 +205,30 @@ block: # bug #13081
|
||||||
static:
|
static:
|
||||||
doAssert j1.x1 == 12
|
doAssert j1.x1 == 12
|
||||||
|
|
||||||
|
block: # bug #15595
|
||||||
|
proc fn0()=echo 0
|
||||||
|
proc fn1()=discard
|
||||||
|
proc main=
|
||||||
|
var local = 0
|
||||||
|
proc fn2()=echo local
|
||||||
|
var a0 = fn0
|
||||||
|
var a1 = fn1
|
||||||
|
var a2 = fn2
|
||||||
|
var a3: proc()
|
||||||
|
var a4: proc()
|
||||||
|
doAssert a0 == fn0 # bugfix
|
||||||
|
doAssert a1 == fn1 # ditto
|
||||||
|
doAssert a2 == fn2 # ditto
|
||||||
|
|
||||||
|
doAssert fn0 != fn1
|
||||||
|
|
||||||
|
doAssert a2 != nil
|
||||||
|
doAssert a3 == nil # bugfix
|
||||||
|
|
||||||
|
doAssert a3 == a4 # bugfix
|
||||||
|
static: main()
|
||||||
|
main()
|
||||||
|
|
||||||
# bug #15363
|
# bug #15363
|
||||||
import sequtils
|
import sequtils
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue