closes #15778; adds a test case (#23613)

closes #15778

(cherry picked from commit c08356865d)
This commit is contained in:
ringabout
2024-05-16 02:51:41 +08:00
committed by narimiran
parent 98075688f3
commit 7071e3a080

View File

@@ -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']