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:
Andreas Rumpf 2019-03-05 09:54:59 +01:00
commit 142a2d3551
7 changed files with 50 additions and 11 deletions

View file

@ -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()