diff options
author | ringabout <43030857+ringabout@users.noreply.github.com> | 2022-09-16 12:35:44 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-16 00:35:44 -0400 |
commit | d44b547144e2db5ec7083219a77b318d4dff0133 (patch) | |
tree | 0fcaeea76960a677cbc8c1d7c88b50810117aba1 /lib | |
parent | c7ee4ab50924c33eaf66f99d1bfbe47faffc8443 (diff) | |
download | Nim-d44b547144e2db5ec7083219a77b318d4dff0133.tar.gz |
add docs to copyNimNode and copyNimTree (#20357)
* add docs to copyNimNode and copyNimTree * Apply suggestions from code review Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com> Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/core/macros.nim | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/lib/core/macros.nim b/lib/core/macros.nim index 59ed943d7..24901180e 100644 --- a/lib/core/macros.nim +++ b/lib/core/macros.nim @@ -394,8 +394,31 @@ proc newNimNode*(kind: NimNodeKind, ## produced code crashes. You should ensure that it is set to a node that ## you are transforming. -proc copyNimNode*(n: NimNode): NimNode {.magic: "NCopyNimNode", noSideEffect.} -proc copyNimTree*(n: NimNode): NimNode {.magic: "NCopyNimTree", noSideEffect.} +proc copyNimNode*(n: NimNode): NimNode {.magic: "NCopyNimNode", noSideEffect.} = + ## Creates a new AST node by copying the node `n`. Note that unlike `copyNimTree`, + ## child nodes of `n` are not copied. + runnableExamples: + macro foo(x: typed) = + var s = copyNimNode(x) + doAssert s.len == 0 + doAssert s.kind == nnkStmtList + + foo: + let x = 12 + echo x + +proc copyNimTree*(n: NimNode): NimNode {.magic: "NCopyNimTree", noSideEffect.} = + ## Creates a new AST node by recursively copying the node `n`. Note that + ## unlike `copyNimNode`, this copies `n`, the children of `n`, etc. + runnableExamples: + macro foo(x: typed) = + var s = copyNimTree(x) + doAssert s.len == 2 + doAssert s.kind == nnkStmtList + + foo: + let x = 12 + echo x proc error*(msg: string, n: NimNode = nil) {.magic: "NError", benign.} ## Writes an error message at compile time. The optional `n: NimNode` |