summary refs log tree commit diff stats
path: root/lib/core
diff options
context:
space:
mode:
authorArne Döring <arne.doering@gmx.net>2020-03-11 08:27:31 +0100
committerGitHub <noreply@github.com>2020-03-11 08:27:31 +0100
commitf95eef99a97dc813cf2f819a6bbaa3b3ead67267 (patch)
tree6ae6783b2c82374025f34c1ccba680fad5b931a6 /lib/core
parent8e3a349561fb0af7f5bc77a4d436abb3ced75d9e (diff)
downloadNim-f95eef99a97dc813cf2f819a6bbaa3b3ead67267.tar.gz
add expectIdent to macros (#12778)
* add expectIdent to macros

* apply feedback

* Update lib/core/macros.nim

Co-Authored-By: Clyybber <darkmine956@gmail.com>

* Update texpectIdent2.nim

* Update texpectIdent1.nim

Co-authored-by: Clyybber <darkmine956@gmail.com>
Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
Diffstat (limited to 'lib/core')
-rw-r--r--lib/core/macros.nim7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/core/macros.nim b/lib/core/macros.nim
index cc20f1dac..57ce89c02 100644
--- a/lib/core/macros.nim
+++ b/lib/core/macros.nim
@@ -1433,6 +1433,13 @@ else:
     else:
       result = false
 
+proc expectIdent*(n: NimNode, name: string) {.compileTime, since: (1,1).} =
+  ## Check that ``eqIdent(n,name)`` holds true. If this is not the
+  ## case, compilation aborts with an error message. This is useful
+  ## for writing macros that check the AST that is passed to them.
+  if not eqIdent(n, name):
+    error("Expected identifier to be `" & name & "` here", n)
+
 proc hasArgOfName*(params: NimNode; name: string): bool {.compileTime.}=
   ## Search ``nnkFormalParams`` for an argument.
   expectKind(params, nnkFormalParams)