breaking change: getAst strips away pointless nnkStmtList nodes; node rendering of nnkStmtList without wrong indentation
This commit is contained in:
parent
eeb2661a28
commit
61720e0df9
3 changed files with 13 additions and 5 deletions
|
|
@ -1366,7 +1366,13 @@ proc gsub(g: var TSrcGen, n: PNode, c: TContext) =
|
||||||
proc renderTree(n: PNode, renderFlags: TRenderFlags = {}): string =
|
proc renderTree(n: PNode, renderFlags: TRenderFlags = {}): string =
|
||||||
var g: TSrcGen
|
var g: TSrcGen
|
||||||
initSrcGen(g, renderFlags)
|
initSrcGen(g, renderFlags)
|
||||||
gsub(g, n)
|
# do not indent the initial statement list so that
|
||||||
|
# writeFile("file.nim", repr n)
|
||||||
|
# produces working Nim code:
|
||||||
|
if n.kind in {nkStmtList, nkStmtListExpr, nkStmtListType}:
|
||||||
|
gstmts(g, n, emptyContext, doIndent = false)
|
||||||
|
else:
|
||||||
|
gsub(g, n)
|
||||||
result = g.buf
|
result = g.buf
|
||||||
|
|
||||||
proc renderModule(n: PNode, filename: string,
|
proc renderModule(n: PNode, filename: string,
|
||||||
|
|
|
||||||
|
|
@ -1617,9 +1617,10 @@ proc semExpandToAst(c: PContext, n: PNode): PNode =
|
||||||
# Preserve the magic symbol in order to be handled in evals.nim
|
# Preserve the magic symbol in order to be handled in evals.nim
|
||||||
internalAssert n.sons[0].sym.magic == mExpandToAst
|
internalAssert n.sons[0].sym.magic == mExpandToAst
|
||||||
#n.typ = getSysSym("NimNode").typ # expandedSym.getReturnType
|
#n.typ = getSysSym("NimNode").typ # expandedSym.getReturnType
|
||||||
n.typ = if getCompilerProc("NimNode") != nil: sysTypeFromName"NimNode"
|
if n.kind == nkStmtList and n.len == 1: result = n[0]
|
||||||
else: sysTypeFromName"PNimrodNode"
|
else: result = n
|
||||||
result = n
|
result.typ = if getCompilerProc("NimNode") != nil: sysTypeFromName"NimNode"
|
||||||
|
else: sysTypeFromName"PNimrodNode"
|
||||||
|
|
||||||
proc semExpandToAst(c: PContext, n: PNode, magicSym: PSym,
|
proc semExpandToAst(c: PContext, n: PNode, magicSym: PSym,
|
||||||
flags: TExprFlags = {}): PNode =
|
flags: TExprFlags = {}): PNode =
|
||||||
|
|
|
||||||
|
|
@ -979,7 +979,8 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
|
||||||
let node = regs[rb+i].regToNode
|
let node = regs[rb+i].regToNode
|
||||||
node.info = c.debug[pc]
|
node.info = c.debug[pc]
|
||||||
macroCall.add(node)
|
macroCall.add(node)
|
||||||
let a = evalTemplate(macroCall, prc, genSymOwner)
|
var a = evalTemplate(macroCall, prc, genSymOwner)
|
||||||
|
if a.kind == nkStmtList and a.len == 1: a = a[0]
|
||||||
a.recSetFlagIsRef
|
a.recSetFlagIsRef
|
||||||
ensureKind(rkNode)
|
ensureKind(rkNode)
|
||||||
regs[ra].node = a
|
regs[ra].node = a
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue