fixes #20026; marks system procs which can raise defects (#20864)

* marks system procs which can raise defects

* add tests

* add more systemRaisesDefect

* add comment
This commit is contained in:
ringabout 2022-11-23 03:07:00 +08:00 • committed by GitHub
commit 0448f30fd9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 26 additions and 19 deletions

View file

@ -14,7 +14,8 @@ proc canRaiseDisp(p: BProc; n: PNode): bool =
if n.kind == nkSym and {sfNeverRaises, sfImportc, sfCompilerProc} * n.sym.flags != {}:
result = false
elif optPanics in p.config.globalOptions or
(n.kind == nkSym and sfSystemModule in getModule(n.sym).flags):
(n.kind == nkSym and sfSystemModule in getModule(n.sym).flags and
sfSystemRaisesDefect notin n.sym.flags):
# we know we can be strict:
result = canRaise(n)
else: