mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-11 22:08:54 +00:00
added a test case ensuring exception inference continues to work
This commit is contained in:
32
tests/exception/texception_inference.nim
Normal file
32
tests/exception/texception_inference.nim
Normal file
@@ -0,0 +1,32 @@
|
||||
discard """
|
||||
output: '''good'''
|
||||
cmd: "nim c --gc:orc -d:release $file"
|
||||
"""
|
||||
|
||||
type
|
||||
Raising[T, E] = object
|
||||
|
||||
proc foo[T, Errors](x: proc (x: Raising[T, Errors])) {.raises: Errors.} =
|
||||
discard
|
||||
|
||||
proc callback(x: Raising[int, ValueError]) =
|
||||
echo "callback"
|
||||
|
||||
proc xy() {.raises: [ValueError].} =
|
||||
foo callback
|
||||
|
||||
proc x[E]() {.raises: [E, IOError].} =
|
||||
raise newException(E, "text here")
|
||||
|
||||
try:
|
||||
x[ValueError]()
|
||||
except ValueError:
|
||||
echo "good"
|
||||
|
||||
proc callback2(x: Raising[int, IOError]) =
|
||||
discard
|
||||
|
||||
proc foo2[T, OtherErrors](x: proc(x: Raising[T, OtherErrors])) {.raises: [ValueError, OtherErrors].} =
|
||||
discard
|
||||
|
||||
foo2 callback2
|
||||
Reference in New Issue
Block a user