Render bug: if expression with statement list expression as condition (#8375)
* Fixes #8348
This commit is contained in:
parent
5ea3b4d581
commit
ec02940185
3 changed files with 29 additions and 5 deletions
|
|
@ -634,9 +634,16 @@ proc gstmts(g: var TSrcGen, n: PNode, c: TContext, doIndent=true) =
|
|||
optNL(g)
|
||||
|
||||
|
||||
proc gcond(g: var TSrcGen, n: PNode) =
|
||||
if n.kind == nkStmtListExpr:
|
||||
put(g, tkParLe, "(")
|
||||
gsub(g, n)
|
||||
if n.kind == nkStmtListExpr:
|
||||
put(g, tkParRi, ")")
|
||||
|
||||
proc gif(g: var TSrcGen, n: PNode) =
|
||||
var c: TContext
|
||||
gsub(g, n.sons[0].sons[0])
|
||||
gcond(g, n.sons[0].sons[0])
|
||||
initContext(c)
|
||||
putWithSpace(g, tkColon, ":")
|
||||
if longMode(g, n) or (lsub(g, n.sons[0].sons[1]) + g.lineLen > MaxLineLen):
|
||||
|
|
@ -651,7 +658,7 @@ proc gif(g: var TSrcGen, n: PNode) =
|
|||
proc gwhile(g: var TSrcGen, n: PNode) =
|
||||
var c: TContext
|
||||
putWithSpace(g, tkWhile, "while")
|
||||
gsub(g, n.sons[0])
|
||||
gcond(g, n.sons[0])
|
||||
putWithSpace(g, tkColon, ":")
|
||||
initContext(c)
|
||||
if longMode(g, n) or (lsub(g, n.sons[1]) + g.lineLen > MaxLineLen):
|
||||
|
|
@ -715,7 +722,7 @@ proc gcase(g: var TSrcGen, n: PNode) =
|
|||
var last = if n.sons[length-1].kind == nkElse: -2 else: -1
|
||||
if longMode(g, n, 0, last): incl(c.flags, rfLongMode)
|
||||
putWithSpace(g, tkCase, "case")
|
||||
gsub(g, n.sons[0])
|
||||
gcond(g, n.sons[0])
|
||||
gcoms(g)
|
||||
optNL(g)
|
||||
gsons(g, n, c, 1, last)
|
||||
|
|
@ -1102,13 +1109,13 @@ proc gsub(g: var TSrcGen, n: PNode, c: TContext) =
|
|||
put(g, tkAccent, "`")
|
||||
of nkIfExpr:
|
||||
putWithSpace(g, tkIf, "if")
|
||||
if n.len > 0: gsub(g, n.sons[0], 0)
|
||||
if n.len > 0: gcond(g, n.sons[0].sons[0])
|
||||
putWithSpace(g, tkColon, ":")
|
||||
if n.len > 0: gsub(g, n.sons[0], 1)
|
||||
gsons(g, n, emptyContext, 1)
|
||||
of nkElifExpr:
|
||||
putWithSpace(g, tkElif, " elif")
|
||||
gsub(g, n, 0)
|
||||
gcond(g, n[0])
|
||||
putWithSpace(g, tkColon, ":")
|
||||
gsub(g, n, 1)
|
||||
of nkElseExpr:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue