summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--lib/core/macros.nim7
-rw-r--r--[-rwxr-xr-x]tests/js/tarrayboundscheck.nim0
2 files changed, 7 insertions, 0 deletions
diff --git a/lib/core/macros.nim b/lib/core/macros.nim
index 7c60e4992..ebc9f7714 100644
--- a/lib/core/macros.nim
+++ b/lib/core/macros.nim
@@ -441,6 +441,13 @@ proc expectLen*(n: NimNode, len: int) {.compileTime.} =
   ## macros that check its number of arguments.
   if n.len != len: error("macro expects a node with " & $len & " children", n)
 
+proc expectLen*(n: NimNode, min, max: int) {.compileTime.} =
+  ## checks that `n` has a number of children in the range ``min..max``.
+  ## If this is not the case, compilation aborts with an error message.
+  ## This is useful for writing macros that check its number of arguments.
+  if n.len < min or n.len > max:
+    error("macro expects a node with " & $min & ".." & $max " children", n)
+
 proc newTree*(kind: NimNodeKind,
               children: varargs[NimNode]): NimNode {.compileTime.} =
   ## produces a new node with children.
diff --git a/tests/js/tarrayboundscheck.nim b/tests/js/tarrayboundscheck.nim
index f0eaeb89d..f0eaeb89d 100755..100644
--- a/tests/js/tarrayboundscheck.nim
+++ b/tests/js/tarrayboundscheck.nim