mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-18 17:08:32 +00:00
Make unreachable code a warning instead of an error (#14816)
* Make unreachable code a warning * Adapt test * Trigger CI
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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() =
|
||||
|
||||
Reference in New Issue
Block a user