gdb_pretty_printer_test_program.nim 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import tables
  2. type
  3. MyEnum = enum
  4. meOne,
  5. meTwo,
  6. meThree,
  7. meFour,
  8. MyOtherEnum = enum
  9. moOne,
  10. moTwo,
  11. moThree,
  12. moFoure,
  13. MyObj = object
  14. a*: int
  15. b*: string
  16. # MyVariant = ref object
  17. # id*: int
  18. # case kind*: MyEnum
  19. # of meOne: mInt*: int
  20. # of meTwo, meThree: discard
  21. # of meFour:
  22. # moInt*: int
  23. # babies*: seq[MyVariant]
  24. # after: float
  25. # MyIntVariant = ref object
  26. # stuff*: int
  27. # case myKind*: range[0..32766]
  28. # of 0: mFloat*: float
  29. # of 2: mString*: string
  30. # else: mBabies*: seq[MyIntVariant]
  31. var counter = 0
  32. proc myDebug[T](arg: T): void =
  33. counter += 1
  34. proc testProc(): void =
  35. var myEnum = meTwo
  36. myDebug(myEnum) #1
  37. # create a string, but don't allocate it
  38. var myString: string
  39. myDebug(myString) #2
  40. # create a string object but also make the NTI for MyEnum is generated
  41. myString = $myEnum
  42. myDebug(myString) #3
  43. var mySet = {meOne,meThree}
  44. myDebug(mySet) #4
  45. # for MyOtherEnum there is no NTI. This tests the fallback for the pretty printer.
  46. var moEnum = moTwo
  47. myDebug(moEnum) #5
  48. var moSet = {moOne,moThree}
  49. myDebug(moSet) #6
  50. let myArray = [1,2,3,4,5]
  51. myDebug(myArray) #7
  52. # implicitly initialized seq test
  53. var mySeq: seq[string]
  54. myDebug(mySeq) #8
  55. # len not equal to capacity
  56. let myOtherSeq = newSeqOfCap[string](10)
  57. myDebug(myOtherSeq) #9
  58. let myOtherArray = ["one","two"]
  59. myDebug(myOtherArray) #10
  60. # numeric sec
  61. var mySeq3 = @[1,2,3]
  62. myDebug(mySeq3) #11
  63. # seq had to grow
  64. var mySeq4 = @["one","two","three"]
  65. myDebug(mySeq4) #12
  66. var myTable = initTable[int, string]()
  67. myTable[4] = "four"
  68. myTable[5] = "five"
  69. myTable[6] = "six"
  70. myDebug(myTable) #13
  71. var myOtherTable = {"one": 1, "two": 2, "three": 3}.toTable
  72. myDebug(myOtherTable) #14
  73. var obj = MyObj(a: 1, b: "some string")
  74. myDebug(obj) #15
  75. # var varObj = MyVariant(id: 13, kind: meFour, moInt: 94,
  76. # babies: @[MyVariant(id: 18, kind: meOne, mInt: 7, after: 1.0),
  77. # MyVariant(id: 21, kind: meThree, after: 2.0)],
  78. # after: 3.0)
  79. # myDebug(varObj) #16
  80. # var varObjInt = MyIntVariant(stuff: 5, myKind: 2, mString: "this is my sweet string")
  81. # myDebug(varObjInt) #17
  82. echo(counter)
  83. testProc()