From 999a4bb750908fe81512a9068e4bb4afec8047b6 Mon Sep 17 00:00:00 2001 From: ringabout <43030857+ringabout@users.noreply.github.com> Date: Fri, 21 Oct 2022 13:38:40 +0800 Subject: [PATCH] closes #19969; add testcase for #19969 #15952 #16306 (#20610) closes #19969; add testcase (cherry picked from commit 1db25ffcd3ae4fefdfe6f52f8a6f17f9efa21048) --- tests/vm/topenarrays.nim | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tests/vm/topenarrays.nim b/tests/vm/topenarrays.nim index 4e3bef480c0ee..639e0c35b1e5b 100644 --- a/tests/vm/topenarrays.nim +++ b/tests/vm/topenarrays.nim @@ -35,4 +35,31 @@ static: assert arr.toOpenArray(3, 4).toOpenArray(0, 0) == [1] +# bug #19969 +proc f(): array[1, byte] = + var a: array[1, byte] + result[0..0] = a.toOpenArray(0, 0) +doAssert static(f()) == [byte(0)] + + +# bug #15952 +proc main1[T](a: openArray[T]) = discard +proc main2[T](a: var openArray[T]) = discard + +proc main = + var a = [1,2,3,4,5] + main1(a.toOpenArray(1,3)) + main2(a.toOpenArray(1,3)) +static: main() +main() + +# bug #16306 +{.experimental: "views".} +proc test(x: openArray[int]): tuple[id: int] = + let y: openArray[int] = toOpenArray(x, 0, 2) + result = (y[0],) +template fn= + doAssert test([0,1,2,3,4,5]).id == 0 +fn() # ok +static: fn()