Make unreachable code a warning instead of an error (#14816)

* Make unreachable code a warning

* Adapt test

* Trigger CI
This commit is contained in:
Clyybber
2020-06-29 08:49:53 +02:00
committed by GitHub
parent 3732556468
commit 299ddda5f6
3 changed files with 9 additions and 9 deletions

View File

@@ -49,7 +49,8 @@ type
warnEachIdentIsTuple,
warnUnsafeSetLen,
warnUnsafeDefault,
warnProveInit, warnProveField, warnProveIndex, warnUnreachableElse,
warnProveInit, warnProveField, warnProveIndex,
warnUnreachableElse, warnUnreachableCode,
warnStaticIndexCheck, warnGcUnsafe, warnGcUnsafe2,
warnUninit, warnGcMem, warnDestructor, warnLockLevel, warnResultShadowed,
warnInconsistentSpacing, warnCaseTransition, warnCycleCreated,
@@ -110,6 +111,7 @@ const
warnProveField: "cannot prove that field '$1' is accessible",
warnProveIndex: "cannot prove index '$1' is valid",
warnUnreachableElse: "unreachable else, all cases are already covered",
warnUnreachableCode: "unreachable code after 'return' statement or '{.noReturn.}' proc",
warnStaticIndexCheck: "$1",
warnGcUnsafe: "not GC-safe: '$1'",
warnGcUnsafe2: "$1",
@@ -169,7 +171,7 @@ const
"UnsafeCode", "UnusedImport", "InheritFromException",
"EachIdentIsTuple",
"UnsafeSetLen", "UnsafeDefault",
"ProveInit", "ProveField", "ProveIndex", "UnreachableElse",
"ProveInit", "ProveField", "ProveIndex", "UnreachableElse", "UnreachableCode",
"IndexCheck", "GcUnsafe", "GcUnsafe2", "Uninit",
"GcMem", "Destructor", "LockLevel", "ResultShadowed",
"Spacing", "CaseTransition", "CycleCreated",

View File

@@ -2269,10 +2269,8 @@ proc semStmtList(c: PContext, n: PNode, flags: TExprFlags): PNode =
sfNoReturn in n[i][0].sym.flags:
for j in i + 1..<n.len:
case n[j].kind
of nkPragma, nkCommentStmt, nkNilLit, nkEmpty, nkBlockExpr,
nkBlockStmt, nkState: discard
else: localError(c.config, n[j].info,
"unreachable statement after 'return' statement or '{.noReturn.}' proc")
of nkPragma, nkCommentStmt, nkNilLit, nkEmpty, nkState: discard
else: message(c.config, n[j].info, warnUnreachableCode)
else: discard
if result.len == 1 and

View File

@@ -1,7 +1,7 @@
discard """
errormsg: "unreachable statement after 'return' statement or '{.noReturn.}' proc"
file: "tstatret.nim"
line: 9
nimout: '''
tstatret.nim(9, 7) Warning: unreachable code after 'return' statement or '{.noReturn.}' proc [UnreachableCode]
'''
"""
# no statement after return
proc main() =