From 648f82c2edbf34c1a8d9df464fa0987accce3b03 Mon Sep 17 00:00:00 2001 From: ringabout <43030857+ringabout@users.noreply.github.com> Date: Tue, 16 Jul 2024 13:37:33 +0800 Subject: [PATCH] fixes semi-regression; discard check now skips `nkHiddenSubConv` (#23840) follow up https://github.com/nim-lang/Nim/pull/23681 ref https://forum.nim-lang.org/t/11987 --- compiler/semstmts.nim | 2 +- tests/discard/tdiscardable.nim | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/compiler/semstmts.nim b/compiler/semstmts.nim index bb34d8a647..915f2dcb6d 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 31020251f8..84b669ed8f 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()