blob: 6e564a04434d188a67ce4a454285cabb1e911eb5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
discard """
cmd: "nim c --gc:arc --exceptions:goto --panics:off $file"
output: '''prevented!
caught
AssertionDefect
900'''
"""
type
E = enum
kindA, kindB
Obj = object
case kind: E
of kindA: s: string
of kindB: i: int
ObjA = ref object of RootObj
ObjB = ref object of ObjA
proc takeRange(x: range[0..4]) = discard
proc bplease(x: ObjB) = discard
proc helper = doAssert(false)
proc main(i: int) =
var obj = Obj(kind: kindA, s: "abc")
obj.kind = kindB
obj.i = 2
try:
var objA = ObjA()
bplease(ObjB(objA))
except ObjectConversionDefect:
echo "prevented!"
try:
takeRange(i)
except RangeDefect:
echo "caught"
try:
helper()
except AssertionDefect:
echo "AssertionDefect"
echo i * i
main(30)
|