Skip to content

Commit

Permalink
add docs to copyNimNode and copyNimTree (#20357)
Browse files Browse the repository at this point in the history
* 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>
  • Loading branch information
ringabout and Varriount authored Sep 16, 2022
1 parent c7ee4ab commit d44b547
Showing 1 changed file with 25 additions and 2 deletions.
27 changes: 25 additions & 2 deletions lib/core/macros.nim
Original file line number Diff line number Diff line change
Expand Up @@ -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`
Expand Down

0 comments on commit d44b547

Please sign in to comment.