summary refs log tree commit diff stats
path: root/lib
diff options
context:
space:
mode:
authorTimothee Cour <timothee.cour2@gmail.com>2020-02-19 02:07:18 -0800
committerGitHub <noreply@github.com>2020-02-19 11:07:17 +0100
commit273a93581f851d2d16d6891d7dd1d7d9edfbb4ef (patch)
tree1e9e772bb7c839e2469bdd6aed122dca5050d2c8 /lib
parentd1f9f11245a29f00bfa8cd86f9b4eb4ab0963a15 (diff)
downloadNim-273a93581f851d2d16d6891d7dd1d7d9edfbb4ef.tar.gz
fix incorrect lenTuple implementation (#13423)
Diffstat (limited to 'lib')
-rw-r--r--lib/pure/typetraits.nim15
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: