summary refs log tree commit diff stats
path: root/tests/destructor/tv2_cast.nim
diff options
context:
space:
mode:
authorAntonis Geralis <43617260+planetis-m@users.noreply.github.com>2021-06-23 18:56:20 +0300
committerGitHub <noreply@github.com>2021-06-23 17:56:20 +0200
commit63456c6d7f84f29da38703fb3e59acf00acec1b8 (patch)
treeb8714f83dedb134f75533e40a1c9d3a9beef32fa /tests/destructor/tv2_cast.nim
parent0eee7f572796d3626db1d94d3eb344b399780db1 (diff)
downloadNim-63456c6d7f84f29da38703fb3e59acf00acec1b8.tar.gz
Add some tests (#18333)
Diffstat (limited to 'tests/destructor/tv2_cast.nim')
-rw-r--r--tests/destructor/tv2_cast.nim72
1 files changed, 70 insertions, 2 deletions
diff --git a/tests/destructor/tv2_cast.nim b/tests/destructor/tv2_cast.nim
index ef0b3a936..5502cb38d 100644
--- a/tests/destructor/tv2_cast.nim
+++ b/tests/destructor/tv2_cast.nim
@@ -1,10 +1,78 @@
 discard """
-  cmd: '''nim c --gc:arc $file'''
   output: '''@[1]
 @[116, 101, 115, 116]
 @[1953719668, 875770417]'''
+  cmd: '''nim c --gc:arc --expandArc:main --expandArc:main1 --expandArc:main2 --expandArc:main3 --hints:off --assertions:off $file'''
+  nimout: '''--expandArc: main
+
+var
+  data
+  :tmpD
+`=copy`(data, cast[string](encode(cast[seq[byte]](
+  :tmpD = newString(100)
+  :tmpD))))
+`=destroy`(:tmpD)
+`=destroy`(data)
+-- end of expandArc ------------------------
+--expandArc: main1
+
+var
+  s
+  data
+s = newString(100)
+`=copy`(data, cast[string](encode(toOpenArrayByte(s, 0, len(s) - 1))))
+`=destroy`(data)
+`=destroy`(s)
+-- end of expandArc ------------------------
+--expandArc: main2
+
+var
+  s
+  data
+s = newSeq(100)
+`=copy`(data, cast[string](encode(s)))
+`=destroy`(data)
+`=destroy_1`(s)
+-- end of expandArc ------------------------
+--expandArc: main3
+
+var
+  data
+  :tmpD
+`=copy`(data, cast[string](encode do:
+  :tmpD = newSeq(100)
+  :tmpD))
+`=destroy`(:tmpD)
+`=destroy_1`(data)
+-- end of expandArc ------------------------'''
 """
 
+func encode*(src: openArray[byte]): seq[byte] =
+  result = newSeq[byte](src.len)
+
+template compress*(src: string): string =
+  cast[string](encode(cast[seq[byte]](src)))
+
+proc main =
+  let data = compress(newString(100))
+main()
+
+proc main1 =
+  var
+    s = newString(100)
+  let data = cast[string](encode(s.toOpenArrayByte(0, s.len-1)))
+main1()
+
+proc main2 =
+  var
+    s = newSeq[byte](100)
+  let data = cast[string](encode(s))
+main2()
+
+proc main3 =
+  let data = cast[string](encode(newSeq[byte](100)))
+main3()
+
 # bug #11018
 discard cast[seq[uint8]](@[1])
 discard cast[seq[uint8]]("test")
@@ -20,4 +88,4 @@ echo a
 
 #issue 11204
 var ac {.compileTime.} = @["a", "b"]
-const bc = ac.len
\ No newline at end of file
+const bc = ac.len