added system.default in order to prevent the abstraction inversion that 'template default(T): untyped = (var x: T; x)' causes
This commit is contained in:
parent
2dc8a32324
commit
142a2d3551
7 changed files with 50 additions and 11 deletions
|
|
@ -1,3 +1,6 @@
|
|||
discard """
|
||||
output: '''0'''
|
||||
"""
|
||||
static:
|
||||
type Obj = object
|
||||
field: int
|
||||
|
|
@ -5,6 +8,17 @@ static:
|
|||
reset(o)
|
||||
doAssert o.field == 0
|
||||
|
||||
var x = 4
|
||||
reset(x)
|
||||
doAssert x == 0
|
||||
|
||||
static:
|
||||
type ObjB = object
|
||||
field: int
|
||||
var o = ObjB(field: 1)
|
||||
o = default(ObjB)
|
||||
doAssert o.field == 0
|
||||
|
||||
static:
|
||||
var i = 2
|
||||
reset(i)
|
||||
|
|
@ -25,4 +39,15 @@ static:
|
|||
var i = 2
|
||||
reset(i)
|
||||
doAssert i == 0
|
||||
f()
|
||||
f()
|
||||
|
||||
proc main =
|
||||
var y = [1, 2, 3, 4]
|
||||
y = default(array[4, int])
|
||||
for a in y: doAssert(a == 0)
|
||||
|
||||
var x = 4
|
||||
x = default(int)
|
||||
echo x
|
||||
|
||||
main()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue