Files
Nim/tests/views/tviews2.nim

91 lines
1.7 KiB
Nim

discard """
targets: "c js"
"""
{.experimental: "views".}
block:
type
Foo = object
id: openArray[char]
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
block: # bug #16671
block:
type X = ref object of RootObj
type Y = ref object of X
field: openArray[int]
var s: seq[X]
proc f() =
s.add(Y(field: [1]))
f()
block:
type X = ref object of RootObj
type Y = ref object of X
field: openArray[int]
var s: seq[X]
proc f() =
s.add(Y(field: toOpenArray([1, 2, 3], 0, 1)))
f()
block: # bug #15746
type
Reader = object
data: openArray[char]
current: int
proc initReader(data: openArray[char], offset = 0): Reader =
result = Reader(data: data, current: offset)
let s = "\x01\x00\x00\x00"
doAssert initReader(s).data[0].int == 1
block:
proc foo(x: openArray[char]) =
discard x
foo("12254")
foo(@['a', 'b'])
var a1 = "12254"
foo(a1)
var a2 = @['a', 'b']
foo(a2)
var s = "138443"
var ooo: openArray[char] = s
var xxx: openArray[char] = ooo
foo(ooo)
foo(xxx)