fixes result requires explicit initialization on noReturn code (#22717)

fixes #21615; fixes #16735

It also partially fixes | #22673, though It still gives 'baseless'
warnings.
This commit is contained in:
ringabout
2023-09-18 14:28:40 +08:00
committed by GitHub
parent bd857151d8
commit deefbc420e
2 changed files with 28 additions and 1 deletions

View File

@@ -1556,7 +1556,7 @@ proc trackProc*(c: PContext; s: PSym, body: PNode) =
strictDefs in c.features) and
s.kind in {skProc, skFunc, skConverter, skMethod} and s.magic == mNone:
var res = s.ast[resultPos].sym # get result symbol
if res.id notin t.init:
if res.id notin t.init and breaksBlock(body) != bsNoReturn:
if tfRequiresInit in s.typ[0].flags:
localError(g.config, body.info, "'$1' requires explicit initialization" % "result")
else: