Fix array's high & low return type for empty arrays (#17705)

* fix array.high/low return type

* Add test for empty array low return type

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>
This commit is contained in:
Tanguy Cizain 2021-04-15 15:45:38 +02:00 • committed by GitHub
commit 363467fc00
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 0 deletions

View file

@ -348,6 +348,8 @@ proc high*[T](x: openArray[T]): int {.magic: "High", noSideEffect.}
proc high*[I, T](x: array[I, T]): I {.magic: "High", noSideEffect.}
## Returns the highest possible index of an array `x`.
##
## For empty arrays, the return type is `int`.
##
## See also:
## * `low(array) <#low,array[I,T]>`_
##
@ -360,6 +362,8 @@ proc high*[I, T](x: array[I, T]): I {.magic: "High", noSideEffect.}
proc high*[I, T](x: typedesc[array[I, T]]): I {.magic: "High", noSideEffect.}
## Returns the highest possible index of an array type.
##
## For empty arrays, the return type is `int`.
##
## See also:
## * `low(typedesc[array]) <#low,typedesc[array[I,T]]>`_
##
@ -420,6 +424,8 @@ proc low*[T](x: openArray[T]): int {.magic: "Low", noSideEffect.}
proc low*[I, T](x: array[I, T]): I {.magic: "Low", noSideEffect.}
## Returns the lowest possible index of an array `x`.
##
## For empty arrays, the return type is `int`.
##
## See also:
## * `high(array) <#high,array[I,T]>`_
##
@ -432,6 +438,8 @@ proc low*[I, T](x: array[I, T]): I {.magic: "Low", noSideEffect.}
proc low*[I, T](x: typedesc[array[I, T]]): I {.magic: "Low", noSideEffect.}
## Returns the lowest possible index of an array type.
##
## For empty arrays, the return type is `int`.
##
## See also:
## * `high(typedesc[array]) <#high,typedesc[array[I,T]]>`_
##