diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pure/pegs.nim | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/pure/pegs.nim b/lib/pure/pegs.nim index 844fbd13c..7ce65b438 100644 --- a/lib/pure/pegs.nim +++ b/lib/pure/pegs.nim @@ -890,12 +890,13 @@ macro mkHandlerTplts(handlers: untyped): untyped = # <handler code block> # ... proc mkEnter(hdName, body: NimNode): NimNode = - quote do: - template `hdName`(s, p, start) = + template helper(hdName, body) {.dirty.} = + template hdName(s, p, start) = let s {.inject.} = s let p {.inject.} = p let start {.inject.} = start - `body` + body + result = getAst(helper(hdName, body)) template mkLeave(hdPostf, body) {.dirty.} = # this has to be dirty to be able to capture *result* as *length* in |