summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorringabout <43030857+ringabout@users.noreply.github.com>2024-05-16 02:51:41 +0800
committerGitHub <noreply@github.com>2024-05-15 20:51:41 +0200
commitc08356865da1386a4c999e7d2df23f13979a5c05 (patch)
treea9a631287024db825af82b6346d209d182c99ab5
parentb42f1ca8a4d574b087af9d86b7627a5817dad9b0 (diff)
downloadNim-c08356865da1386a4c999e7d2df23f13979a5c05.tar.gz
closes #15778; adds a test case (#23613)
closes #15778
-rw-r--r--tests/views/tviews2.nim36
1 files changed, 29 insertions, 7 deletions
diff --git a/tests/views/tviews2.nim b/tests/views/tviews2.nim
index 36ba58993..9405ec9ea 100644
--- a/tests/views/tviews2.nim
+++ b/tests/views/tviews2.nim
@@ -4,12 +4,34 @@ discard """
 
 {.experimental: "views".}
 
-type
-  Foo = object
-    id: openArray[char]
+block:
+  type
+    Foo = object
+      id: openArray[char]
 
-proc foo(): Foo =
-  var source = "1245"
-  result = Foo(id: source.toOpenArray(0, 1))
+  proc foo(): Foo =
+    var source = "1245"
+    result = Foo(id: source.toOpenArray(0, 1))
+
+  doAssert foo().id == @['1', '2']
+
+block: # bug #15778
+  type
+    Reader = object
+      data: openArray[char]
+      current: int
+
+  var count = 0
+
+  proc read(data: var Reader, length: int): openArray[char] =
+    inc count
+    let start = data.current
+    data.current.inc length
+    return data.data.toOpenArray(start, data.current-1)
+
+  var data = "hello there"
+  var reader = Reader(data: data.toOpenArray(0, data.len-1), current: 0)
+  doAssert @(reader.read(2)) == @['h', 'e']
+  doAssert @(reader.read(3)) == @['l', 'l', 'o']
+  doAssert count == 2
 
-doAssert foo().id == @['1', '2']