summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2017-11-02 22:09:58 +0100
committerAndreas Rumpf <rumpf_a@web.de>2017-11-02 22:09:58 +0100
commit0f5261e9711c3fd57241874963bd5e45b11ed65e (patch)
tree0d5c101ccbf9010215ea291a0a7f443e5fe98004
parentcccdd9b58ef35f13c74abfd10cfd416a8f70061b (diff)
downloadNim-0f5261e9711c3fd57241874963bd5e45b11ed65e.tar.gz
fixes #6675
-rw-r--r--lib/system.nim4
-rw-r--r--tests/array/troof1.nim8
2 files changed, 9 insertions, 3 deletions
diff --git a/lib/system.nim b/lib/system.nim
index 92c5e009f..0cae4da87 100644
--- a/lib/system.nim
+++ b/lib/system.nim
@@ -3493,14 +3493,14 @@ proc `[]`*[Idx, T, U, V](a: array[Idx, T], x: HSlice[U, V]): seq[T] =
   let xa = a ^^ x.a
   let L = (a ^^ x.b) - xa + 1
   result = newSeq[T](L)
-  for i in 0..<L: result[i] = a[Idx(i + xa + int low(a))]
+  for i in 0..<L: result[i] = a[Idx(i + xa)]
 
 proc `[]=`*[Idx, T, U, V](a: var array[Idx, T], x: HSlice[U, V], b: openArray[T]) =
   ## slice assignment for arrays.
   let xa = a ^^ x.a
   let L = (a ^^ x.b) - xa + 1
   if L == b.len:
-    for i in 0..<L: a[Idx(i + xa + int low(a))] = b[i]
+    for i in 0..<L: a[Idx(i + xa)] = b[i]
   else:
     sysFatal(RangeError, "different lengths for slice assignment")
 
diff --git a/tests/array/troof1.nim b/tests/array/troof1.nim
index 1ee63826e..594ad98a5 100644
--- a/tests/array/troof1.nim
+++ b/tests/array/troof1.nim
@@ -4,7 +4,8 @@ discard """
 3
 @[(Field0: 1, Field1: 2), (Field0: 3, Field1: 5)]
 2
-@[a, new one, c]'''
+@[a, new one, c]
+@[1, 2, 3]'''
 """
 
 proc foo[T](x, y: T): T = x
@@ -35,3 +36,8 @@ useOpenarray([1, 2, 3])
 var z = @["a", "b", "c"]
 mutOpenarray(z)
 echo z
+
+# bug #6675
+var y: array[1..5, int] = [1,2,3,4,5]
+y[3..5] = [1, 2, 3]
+echo y[3..5]