summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/evals.nim4
-rw-r--r--lib/pure/typetraits.nim2
2 files changed, 6 insertions, 0 deletions
diff --git a/compiler/evals.nim b/compiler/evals.nim
index be6f625ec..f8336fce7 100644
--- a/compiler/evals.nim
+++ b/compiler/evals.nim
@@ -914,6 +914,10 @@ proc evalTypeTrait*(trait, operand: PNode, context: PSym): PNode =
     result = newStrNode(nkStrLit, typ.typeToString(preferName))
     result.typ = newType(tyString, context)
     result.info = trait.info
+  of "arity":    
+    result = newIntNode(nkIntLit, typ.n.len-1)
+    result.typ = newType(tyInt, context)
+    result.info = trait.info
   else:
     internalAssert false
 
diff --git a/lib/pure/typetraits.nim b/lib/pure/typetraits.nim
index 45b79dcb6..e7bd363cf 100644
--- a/lib/pure/typetraits.nim
+++ b/lib/pure/typetraits.nim
@@ -13,3 +13,5 @@
 proc name*(t: typedesc): string {.magic: "TypeTrait".}
   ## Returns the name of the given type
 
+proc arity*(t: typedesc): int {.magic: "TypeTrait".}
+  ## Returns the arity of the given type
\ No newline at end of file