diff options
-rw-r--r-- | compiler/semstmts.nim | 2 | ||||
-rw-r--r-- | tests/discard/tdiscardable.nim | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/compiler/semstmts.nim b/compiler/semstmts.nim index bb34d8a64..915f2dcb6 100644 --- a/compiler/semstmts.nim +++ b/compiler/semstmts.nim @@ -135,7 +135,7 @@ const skipForDiscardable = {nkStmtList, nkStmtListExpr, nkOfBranch, nkElse, nkFinally, nkExceptBranch, nkElifBranch, nkElifExpr, nkElseExpr, nkBlockStmt, nkBlockExpr, - nkHiddenStdConv, nkHiddenDeref} + nkHiddenStdConv, nkHiddenSubConv, nkHiddenDeref} proc implicitlyDiscardable(n: PNode): bool = # same traversal as endsInNoReturn diff --git a/tests/discard/tdiscardable.nim b/tests/discard/tdiscardable.nim index 31020251f..84b669ed8 100644 --- a/tests/discard/tdiscardable.nim +++ b/tests/discard/tdiscardable.nim @@ -164,3 +164,12 @@ block: # bug #23775 let _ = retString() doStuff(C) + +block: + proc test(): (int, int) {.discardable.} = + discard + + if true: + test() + else: + quit() |