Skip to content

Commit 30f3113

Browse files
committed
In place
1 parent 3eda9d5 commit 30f3113

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

breeze.nim

+22-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import macros, strutils, sequtils, tables
22

3-
const debugMacro = false
3+
const debugMacro = true
44

55
proc build(b: NimNode): NimNode
66

@@ -131,11 +131,30 @@ macro buildMacro*(b: untyped): untyped =
131131
var stmtsNode = newIdentNode(!"stmts")
132132
var lastNode = newIdentNode(!"last")
133133
var x = newIdentNode(!"x")
134-
result = quote:
134+
var resultNode = newIdentNode(!"result")
135+
var start = quote:
135136
var `stmtsNode` = nnkStmtList.newTree()
136137
var `lastNode` = `stmtsNode`
137138
var `x`: NimNode
138-
result.add(build(b))
139+
var finish = quote:
140+
`resultNode` = `stmtsNode`
141+
142+
start.add(build(b))
143+
start.add(finish)
144+
var empty = newEmptyNode()
145+
146+
result = nnkCall.newTree(
147+
nnkPar.newTree(
148+
nnkLambda.newTree(
149+
empty,
150+
empty,
151+
empty,
152+
nnkFormalParams.newTree(
153+
newIdentNode(!"NimNode")),
154+
empty,
155+
empty,
156+
start)))
157+
139158
when debugMacro:
140159
echo "build: $1" % repr(result)
141160

breeze.nimble

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
version = "0.0.1"
1+
version = "0.0.4"
22
packageName = "breeze"
33
author = "Alexander Ivanov"
44
description = "macro dsl"

0 commit comments

Comments
 (0)