summary refs log tree commit diff stats
path: root/tests/bind/told_bind_expr.nim
Commit message (Expand)AuthorAgeFilesLines
* remove deprecated type pragma syntax, fix bugs that required it (#20199)metagn2022-09-031-0/+15
re>9295251e6 ^
a6682de00 ^
7d6cbf290 ^
a6682de00 ^





















9295251e6 ^

a6682de00 ^


7d6cbf290 ^
a6682de00 ^



7d6cbf290 ^
a6682de00 ^



7d6cbf290 ^

a6682de00 ^



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)