'.push raises: []' now also affects proc types (#13776)

* '.push raises: []' now also affects proc types

* fixes the regression

* less disruptive bugfix

* another attempt
This commit is contained in:
Andreas Rumpf 2020-03-29 22:00:18 +02:00 • committed by GitHub
commit 2a278f6eba
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 32 additions and 5 deletions

View file

@ -1,7 +1,13 @@
discard """
errormsg: "can raise an unlisted exception: ref IOError"
errormsg: "type mismatch: got <proc (x: int): string{.noSideEffect, gcsafe, locks: 0.}> but expected 'MyProcType = proc (x: int): string{.closure.}'"
file: "teffects1.nim"
line: 17
line: 38
cmd: "nim check $file"
nimout: '''teffects1.nim(22, 28) template/generic instantiation from here
teffects1.nim(23, 13) Error: can raise an unlisted exception: ref IOError
teffects1.nim(22, 29) Hint: 'IO2Error' is declared but not used [XDeclaredButNotUsed]
teffects1.nim(38, 21) Error: type mismatch: got <proc (x: int): string{.noSideEffect, gcsafe, locks: 0.}> but expected 'MyProcType = proc (x: int): string{.closure.}'
.raise effects differ'''
"""
type
@ -18,3 +24,16 @@ proc lier(): int {.raises: [IO2Error].} =
proc forw: int =
raise newException(IOError, "arg")
{.push raises: [Defect].}
type
MyProcType* = proc(x: int): string #{.raises: [ValueError, Defect].}
proc foo(x: int): string {.raises: [ValueError].} =
if x > 9:
raise newException(ValueError, "Use single digit")
$x
var p: MyProcType = foo
{.pop.}