From 4d0663096cb4dd41dc4aa18d935df03d3a567f22 Mon Sep 17 00:00:00 2001 From: ringabout <43030857+ringabout@users.noreply.github.com> Date: Tue, 9 Jun 2026 20:46:48 +0800 Subject: [PATCH] Revert "fixes #22122; raise effects for complex expressions" (#25888) Reverts nim-lang/Nim#25845 ```nim case ecode of ECONNABORTED, EPERM, ETIMEDOUT, ENOTCONN: getConnectionAbortedError(ecode) of EMFILE, ENFILE, ENOBUFS, ENOMEM: getTransportTooManyError(ecode) else: (ref TransportOsError)(code: ecode, msg: "(" & $int(ecode) & ") " & osErrorMsg(ecode)) ``` The compiler inserts a hidden conv for the case expression. Perhaps we can skip hidden convs to inspect the types that are actually raised --- compiler/sempass2.nim | 22 +--------- tests/effects/tcase_raises.nim | 74 ---------------------------------- 2 files changed, 1 insertion(+), 95 deletions(-) delete mode 100644 tests/effects/tcase_raises.nim diff --git a/compiler/sempass2.nim b/compiler/sempass2.nim index 75ad510b1a..7b2be510f9 100644 --- a/compiler/sempass2.nim +++ b/compiler/sempass2.nim @@ -497,26 +497,6 @@ proc addRaiseEffect(a: PEffects, e, comesFrom: PNode) = if not isDefectException(e.typ): throws(a.exc, e, comesFrom) -proc addRaiseEffectsFromExpr(a: PEffects, e, comesFrom: PNode) = - if e.isNil: - return - let x = skipConvCastAndClosure(e) - case x.kind - of nkStmtList, nkStmtListExpr, nkBlockStmt, nkBlockExpr: - if x.len > 0: - addRaiseEffectsFromExpr(a, x.lastSon, comesFrom) - of nkIfExpr, nkIfStmt: - for branch in items(x): - if branch.len > 0: - addRaiseEffectsFromExpr(a, branch.lastSon, comesFrom) - of nkCaseStmt: - for i in 1.. 0: - addRaiseEffectsFromExpr(a, branch.lastSon, comesFrom) - else: - addRaiseEffect(a, x, x) - proc addTag(a: PEffects, e, comesFrom: PNode) = var aa = a.tags for i in 0..