From c04404635b9efa2d6642887ca40f6222c54d9465 Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Tue, 14 Aug 2018 20:38:04 +0200 Subject: Fix unsound transform pass (#8633) When a `var openArray[T]` function parameter goes trough the `transformAddrDeref` pass we may lose the `var` specifier, leading to nasty crashes at runtime. --- tests/ccgbugs/topenarraycast.nim | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 tests/ccgbugs/topenarraycast.nim (limited to 'tests/ccgbugs/topenarraycast.nim') diff --git a/tests/ccgbugs/topenarraycast.nim b/tests/ccgbugs/topenarraycast.nim new file mode 100644 index 000000000..7d1bc8d03 --- /dev/null +++ b/tests/ccgbugs/topenarraycast.nim @@ -0,0 +1,8 @@ +proc foo[T](s: var openArray[T]): T = + for x in s: result += x + +proc bar(xyz: var seq[int]) = + doAssert 6 == (seq[int](xyz)).foo() + +var t = @[1,2,3] +bar(t) -- cgit 1.4.1-2-gfad0