Allow noreturn procs with void type (#6973)

This commit is contained in:
cooldome
2017-12-27 12:09:24 +03:00
committed by Andreas Rumpf
parent 2b3ec0a7c6
commit 53cf0b2c24
2 changed files with 5 additions and 1 deletions

View File

@@ -771,7 +771,7 @@ proc singlePragma(c: PContext, sym: PSym, n: PNode, i: int,
of wNoreturn:
noVal(it)
incl(sym.flags, sfNoReturn)
if sym.ast[paramsPos][0].kind != nkEmpty:
if sym.typ[0] != nil:
localError(sym.ast[paramsPos][0].info, errNoReturnWithReturnTypeNotAllowed)
of wDynlib:
processDynLib(c, it, sym)

View File

@@ -5,6 +5,10 @@ ccodeCheck: "\\i @'__attribute__((noreturn))' .*"
proc noret1*(i: int) {.noreturn.} =
echo i
proc noret2*(i: int): void {.noreturn.} =
echo i
var p {.used.}: proc(i: int): int
doAssert(not compiles(
p = proc(i: int): int {.noreturn.} = i # noreturn lambda returns int