summary refs log tree commit diff stats
path: root/tests/arc/topt_cursor.nim
blob: a8020e72b8a1809af18480b5e79054b0ac11a264 (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
49
50
51
52
53
54
55
56
57
58
59
60
discard """
  output: '''("string here", 80)'''
  cmd: '''nim c --gc:arc --expandArc:main --expandArc:sio --hint:Performance:off $file'''
  nimout: '''--expandArc: main

var
  :tmpD
  :tmpD_1
  :tmpD_2
try:
  var x_cursor = ("hi", 5)
  x_cursor = if cond:
    :tmpD = ("different", 54)
    :tmpD else:
    :tmpD_1 = ("string here", 80)
    :tmpD_1
  echo [
    :tmpD_2 = `$`(x_cursor)
    :tmpD_2]
finally:
  `=destroy`(:tmpD_2)
-- end of expandArc ------------------------
--expandArc: sio

block :tmp:
  var x_cursor
  var f = open("debug.txt", fmRead, 8000)
  try:
    var res
    try:
      res = TaintedString(newStringOfCap(80))
      block :tmp_1:
        while readLine(f, res):
          x_cursor = res
          echo [x_cursor]
    finally:
      `=destroy`(res)
  finally:
    close(f)
-- end of expandArc ------------------------'''
"""

proc main(cond: bool) =
  var x = ("hi", 5) # goal: computed as cursor

  x = if cond:
        ("different", 54)
      else:
        ("string here", 80)

  echo x

main(false)

proc sio =
  for x in lines("debug.txt"):
    echo x

if false:
  sio()