summary refs log tree commit diff stats
path: root/lib/system.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2015-09-12 10:55:28 +0200
committerAraq <rumpf_a@web.de>2015-09-12 10:55:28 +0200
commit8ef66b973d86a75c8dfa4c6761d322d94c54efad (patch)
tree1a90abf710018b92cc8d92538ae1095e6e41b006 /lib/system.nim
parent2a797c362a1c70d708eb21a18a227296dcac71a4 (diff)
downloadNim-8ef66b973d86a75c8dfa4c6761d322d94c54efad.tar.gz
first attempt to fix 'a[i]' handling in generics
Diffstat (limited to 'lib/system.nim')
-rw-r--r--lib/system.nim8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/system.nim b/lib/system.nim
index 1890ce5be..cd94cfeaf 100644
--- a/lib/system.nim
+++ b/lib/system.nim
@@ -239,6 +239,14 @@ type
   seq*{.magic: "Seq".}[T]  ## Generic type to construct sequences.
   set*{.magic: "Set".}[T]  ## Generic type to construct bit sets.
 
+when defined(nimArrIdx):
+  # :array|openarray|string|seq|cstring|tuple
+  proc `[]`*[I: Ordinal;T](a: T; i: I): T {.
+    noSideEffect, magic: "ArrGet".}
+  proc `[]=`*[I: Ordinal;T,S](a: var T; i: I;
+    x: S) {.noSideEffect, magic: "ArrPut".}
+  proc `=`*[T](dest: var T; src: T) {.noSideEffect, magic: "Asgn".}
+
 type
   Slice*[T] = object ## builtin slice type
     a*, b*: T        ## the bounds