> It should have checked for `{.noreturn.}` but it didn't.
Not exactly. This compiles well: <https://play.nim-lang.org/#ix=4gXj> # test.nim proc raiseError(msg: string) {.noreturn.} = raise newException(Defect, msg) proc change(v: var int, s: string) = let tmp = case s: of "A": 11 else: raiseError("invalid value") v = tmp static: var a: int a.change("A") echo(a) Run