diff options
author | Timothee Cour <timothee.cour2@gmail.com> | 2020-02-19 02:07:18 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-19 11:07:17 +0100 |
commit | 273a93581f851d2d16d6891d7dd1d7d9edfbb4ef (patch) | |
tree | 1e9e772bb7c839e2469bdd6aed122dca5050d2c8 /lib | |
parent | d1f9f11245a29f00bfa8cd86f9b4eb4ab0963a15 (diff) | |
download | Nim-273a93581f851d2d16d6891d7dd1d7d9edfbb4ef.tar.gz |
fix incorrect lenTuple implementation (#13423)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pure/typetraits.nim | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/lib/pure/typetraits.nim b/lib/pure/typetraits.nim index fd729b59e..04231db09 100644 --- a/lib/pure/typetraits.nim +++ b/lib/pure/typetraits.nim @@ -71,15 +71,14 @@ proc distinctBase*(T: typedesc): typedesc {.magic: "TypeTrait".} ## Returns base type for distinct types, works only for distinct types. ## compile time error otherwise -import std/macros - -macro lenTuple*(t: tuple): int {.since: (1, 1).} = - ## Return number of elements of `t` - newLit t.len -macro lenTuple*(t: typedesc[tuple]): int {.since: (1, 1).} = +proc lenTuple*(T: typedesc[tuple]): int {.magic: "TypeTrait", since: (1, 1).} ## Return number of elements of `T` - newLit t.len + +since (1, 1): + template lenTuple*(t: tuple): int = + ## Return number of elements of `t` + lenTuple(type(t)) since (1, 1): template get*(T: typedesc[tuple], i: static int): untyped = @@ -87,6 +86,8 @@ since (1, 1): # Note: `[]` currently gives: `Error: no generic parameters allowed for ...` type(default(T)[i]) +import std/macros + macro genericParams*(T: typedesc): untyped {.since: (1, 1).} = ## return tuple of generic params for generic `T` runnableExamples: |