add typetraits.elementType (#14780)

* add typetraits.elementType

* add a test for 0-sized seq
This commit is contained in:
Timothee Cour 2020-06-24 13:31:07 -07:00 • committed by GitHub
commit 3e5743d6f7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 0 deletions

View file

@ -231,3 +231,23 @@ block genericHead:
type Bar = object
doAssert not compiles(genericHead(Bar))
# doAssert seq[int].genericHead is seq
block: # elementType
iterator myiter(n: int): auto =
for i in 0..<n: yield i
iterator myiter3(): int = yield 10
iterator myiter2(n: int): auto {.closure.} =
for i in 0..<n: yield i
doAssert elementType(@[1,2]) is int
doAssert elementType("asdf") is char
doAssert elementType(myiter(3)) is int
doAssert elementType(myiter2(3)) is int
doAssert elementType([1.1]) is float
doAssert compiles elementType([1])
doAssert not compiles elementType(1)
doAssert compiles elementType(myiter3())
doAssert not compiles elementType(myiter3)
# check that it also works for 0-sized seq:
var a: seq[int]
doAssert elementType(a) is int
doAssert elementType(seq[char].default) is char