supports default for range types using firstOrd with nimPreviewRangeDefault (#23950)

ref https://github.com/nim-lang/Nim/issues/23943
This commit is contained in:
ringabout
2024-08-13 23:08:30 +08:00
committed by GitHub
parent ddc47fecca
commit a33e2b76ae
2 changed files with 26 additions and 5 deletions

View File

@@ -121,7 +121,7 @@ template main {.dirty.} =
rVal: R = default(R) # Works fine
objVal = default(Obj)
doAssert rVal == 0 # it should be 1
doAssert rVal == 1
doAssert objVal.r == 1
block: # bug #16744
@@ -134,7 +134,7 @@ template main {.dirty.} =
rVal: R = default(R) # Works fine
objVal = Obj()
doAssert rVal == 0 # it should be 1
doAssert rVal == 1 # it should be 1
doAssert objVal.r == 1
block: # bug #3608
@@ -745,5 +745,19 @@ template main {.dirty.} =
doAssert b.list[North] == 1
block:
type
range1 = range[1..10]
range2 = range[-1..10]
proc foo =
doAssert default(range1) == 1
doAssert default(range2) == -1
let s = default(array[5, range1])
doAssert s == [range1 1, 1, 1, 1, 1]
foo()
static: main()
main()