Allow noreturn procs with void type (#6973)
This commit is contained in:
parent
2b3ec0a7c6
commit
53cf0b2c24
2 changed files with 5 additions and 1 deletions
|
|
@ -771,7 +771,7 @@ proc singlePragma(c: PContext, sym: PSym, n: PNode, i: int,
|
||||||
of wNoreturn:
|
of wNoreturn:
|
||||||
noVal(it)
|
noVal(it)
|
||||||
incl(sym.flags, sfNoReturn)
|
incl(sym.flags, sfNoReturn)
|
||||||
if sym.ast[paramsPos][0].kind != nkEmpty:
|
if sym.typ[0] != nil:
|
||||||
localError(sym.ast[paramsPos][0].info, errNoReturnWithReturnTypeNotAllowed)
|
localError(sym.ast[paramsPos][0].info, errNoReturnWithReturnTypeNotAllowed)
|
||||||
of wDynlib:
|
of wDynlib:
|
||||||
processDynLib(c, it, sym)
|
processDynLib(c, it, sym)
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,10 @@ ccodeCheck: "\\i @'__attribute__((noreturn))' .*"
|
||||||
proc noret1*(i: int) {.noreturn.} =
|
proc noret1*(i: int) {.noreturn.} =
|
||||||
echo i
|
echo i
|
||||||
|
|
||||||
|
|
||||||
|
proc noret2*(i: int): void {.noreturn.} =
|
||||||
|
echo i
|
||||||
|
|
||||||
var p {.used.}: proc(i: int): int
|
var p {.used.}: proc(i: int): int
|
||||||
doAssert(not compiles(
|
doAssert(not compiles(
|
||||||
p = proc(i: int): int {.noreturn.} = i # noreturn lambda returns int
|
p = proc(i: int): int {.noreturn.} = i # noreturn lambda returns int
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue