mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 09:24:36 +00:00
91 lines
1.7 KiB
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)
|