diff options
author | Araq <rumpf_a@web.de> | 2020-03-16 12:54:31 +0100 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2020-03-16 14:55:58 +0100 |
commit | a102eb5ef653a71e4286312ff9027d37b814a2f6 (patch) | |
tree | 3a256641fff243180c911f4b46d2e2bd7e8d2e1a /tests | |
parent | 3a6b4704122f84f9cf1d9cc227f303d2eee3bc66 (diff) | |
download | Nim-a102eb5ef653a71e4286312ff9027d37b814a2f6.tar.gz |
fixes #13646
Diffstat (limited to 'tests')
-rw-r--r-- | tests/metatype/tmetatype_various.nim | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/tests/metatype/tmetatype_various.nim b/tests/metatype/tmetatype_various.nim index a56eca018..0dd948293 100644 --- a/tests/metatype/tmetatype_various.nim +++ b/tests/metatype/tmetatype_various.nim @@ -1,4 +1,7 @@ - +discard """ + output: '''[1, 0, 0, 0, 0, 0, 0, 0] + CTBool[Ct[system.uint32]]''' +""" block tconstraints: proc myGenericProc[T: object|tuple|int|ptr|ref|distinct](x: T): string = @@ -37,13 +40,29 @@ block tfieldaccessor: block tprocbothmeta: proc myFun[A](x: A): auto = result = float(x+10) - + proc myMap[T,S](sIn: seq[T], f: proc (q: T): S): seq[S] = result = newSeq[S](sIn.len) for i in 0..<sIn.len: result[i] = f(sIn[i]) - + assert myMap(@[1,2,3], myFun) == @[11.0, 12.0, 13.0] +# https://github.com/nim-lang/Nim/issues/13646 + +type + BaseUint* = SomeUnsignedInt or byte + Ct*[T] = distinct T + ## Constant-Time wrapper + ## Only constant-time operations in particular the ternary operator equivalent + ## condition: if true: a else: b + ## are allowed + + CTBool*[T] = distinct range[T(0)..T(1)] + ## Constant-Time boolean wrapper + +var x: array[8, CTBool[Ct[uint32]]] +x[0] = (CTBool[Ct[uint32]])(1) +echo x.repr, " ", typeof(x[0]) |