summary refs log tree commit diff stats
path: root/compiler/patterns.nim
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/patterns.nim')
0 files changed, 0 insertions, 0 deletions
'>30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51


















































                                                                         
import macros

macro test(a: untyped): untyped =
  # proc hello*(x: int = 3, y: float32): int {.inline.} = discard
  let
    nameNode = nnkPostfix.newTree(
      newIdentNode("*"),
      newIdentNode("hello")
    )
    params = @[
      newIdentNode("int"),
      nnkIdentDefs.newTree(
        newIdentNode("x"),
        newIdentNode("int"),
        newLit(3)
      ),
      nnkIdentDefs.newTree(
        newIdentNode("y"),
        newIdentNode("float32"),
        newEmptyNode()
      )
    ]
    paramsNode = nnkFormalParams.newTree(params)
    pragmasNode = nnkPragma.newTree(
      newIdentNode("inline")
    )
    bodyNode = nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )

  var
    expected = nnkProcDef.newTree(
      nameNode,
      newEmptyNode(),
      newEmptyNode(),
      paramsNode,
      pragmasNode,
      newEmptyNode(),
      bodyNode
    )

  doAssert expected == newProc(name=nameNode, params=params,
                                    body = bodyNode, pragmas=pragmasNode)
  expected.pragma = newEmptyNode()
  doAssert expected == newProc(name=nameNode, params=params,
                                    body = bodyNode)

test:
  42