summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/semstmts.nim1
-rw-r--r--tests/discard/tdiscardable.nim11
2 files changed, 11 insertions, 1 deletions
diff --git a/compiler/semstmts.nim b/compiler/semstmts.nim
index 356c2d63e..96883255c 100644
--- a/compiler/semstmts.nim
+++ b/compiler/semstmts.nim
@@ -105,7 +105,6 @@ proc semWhile(c: PContext, n: PNode; flags: TExprFlags): PNode =
     result.typ = n[1].typ
   elif implicitlyDiscardable(n[1]):
     result[1].typ = c.enforceVoidContext
-    result.typ = c.enforceVoidContext
 
 proc semProc(c: PContext, n: PNode): PNode
 
diff --git a/tests/discard/tdiscardable.nim b/tests/discard/tdiscardable.nim
index b13130a13..69cb9f6a1 100644
--- a/tests/discard/tdiscardable.nim
+++ b/tests/discard/tdiscardable.nim
@@ -99,3 +99,14 @@ block: # bug #13583
     let t = test
     doAssert t() == 12
 
+block:
+  proc bar(): string {.discardable.} =
+    "15"
+
+  proc foo(): int =
+    while true:
+      raise newException(ValueError, "check")
+    12
+
+  doAssertRaises(ValueError):
+    doAssert foo() == 12