diff options
author | hlaaftana <10591326+hlaaftana@users.noreply.github.com> | 2021-12-05 08:44:22 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-05 06:44:22 +0100 |
commit | 1ef945668d458163cb7116a8c936ff92b63d679d (patch) | |
tree | 1a2a614f5359922ed1bf94f02ade77002e4ce637 /compiler | |
parent | c658de24b04be9f898359a4091c5815f28de8785 (diff) | |
download | Nim-1ef945668d458163cb7116a8c936ff92b63d679d.tar.gz |
treat do with pragmas but no parens as proc (#19191)
fixes #19188
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/parser.nim | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/compiler/parser.nim b/compiler/parser.nim index 0ef6d1f54..9ff847ef6 100644 --- a/compiler/parser.nim +++ b/compiler/parser.nim @@ -1110,11 +1110,14 @@ proc optPragmas(p: var Parser): PNode = proc parseDoBlock(p: var Parser; info: TLineInfo): PNode = #| doBlock = 'do' paramListArrow pragma? colcom stmt - let params = parseParamList(p, retColon=false) + var params = parseParamList(p, retColon=false) let pragmas = optPragmas(p) colcom(p, result) result = parseStmt(p) - if params.kind != nkEmpty: + if params.kind != nkEmpty or pragmas.kind != nkEmpty: + if params.kind == nkEmpty: + params = newNodeP(nkFormalParams, p) + params.add(p.emptyNode) # return type result = newProcNode(nkDo, info, body = result, params = params, name = p.emptyNode, pattern = p.emptyNode, genericParams = p.emptyNode, pragmas = pragmas, exceptions = p.emptyNode) @@ -1381,7 +1384,10 @@ proc postExprBlocks(p: var Parser, x: PNode): PNode = if stmtList[0].kind == nkStmtList: stmtList = stmtList[0] stmtList.flags.incl nfBlockArg - if openingParams.kind != nkEmpty: + if openingParams.kind != nkEmpty or openingPragmas.kind != nkEmpty: + if openingParams.kind == nkEmpty: + openingParams = newNodeP(nkFormalParams, p) + openingParams.add(p.emptyNode) # return type result.add newProcNode(nkDo, stmtList.info, body = stmtList, params = openingParams, name = p.emptyNode, pattern = p.emptyNode, |