summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorSirOlaf <34164198+SirOlaf@users.noreply.github.com>2023-07-22 21:13:55 +0200
committerGitHub <noreply@github.com>2023-07-22 21:13:55 +0200
commit62869a5c68e4dd91e00ee77b039f0175482ef4fa (patch)
treeb7a6acbdeac77ccaeeeea11f301b4a844e6f9323
parentb10d3cd98d66b9fff20f9bf37d454c07ebbd42b2 (diff)
downloadNim-62869a5c68e4dd91e00ee77b039f0175482ef4fa.tar.gz
Check try block for endsInNoReturn (#22314)
Co-authored-by: SirOlaf <>
-rw-r--r--compiler/semstmts.nim5
1 files changed, 3 insertions, 2 deletions
diff --git a/compiler/semstmts.nim b/compiler/semstmts.nim
index 836be6e4a..5c1a363b4 100644
--- a/compiler/semstmts.nim
+++ b/compiler/semstmts.nim
@@ -235,8 +235,8 @@ proc semTry(c: PContext, n: PNode; flags: TExprFlags; expectedType: PType = nil)
   var typ = commonTypeBegin
   var expectedType = expectedType
   n[0] = semExprBranchScope(c, n[0], expectedType)
-  typ = commonType(c, typ, n[0].typ)
   if not endsInNoReturn(n[0]):
+    typ = commonType(c, typ, n[0].typ)
     expectedType = typ
 
   var last = n.len - 1
@@ -312,7 +312,8 @@ proc semTry(c: PContext, n: PNode; flags: TExprFlags; expectedType: PType = nil)
       result.typ = c.enforceVoidContext
   else:
     if n.lastSon.kind == nkFinally: discardCheck(c, n.lastSon.lastSon, flags)
-    n[0] = fitNode(c, typ, n[0], n[0].info)
+    if not endsInNoReturn(n[0]):
+      n[0] = fitNode(c, typ, n[0], n[0].info)
     for i in 1..last:
       var it = n[i]
       let j = it.len-1