summary refs log tree commit diff stats
path: root/tests/cpp/temitlist.nim
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2016-12-17 14:20:57 +0100
committerAndreas Rumpf <rumpf_a@web.de>2016-12-17 14:20:57 +0100
commitb0134309292e41a9b29777b5bdd79f2a1278a03d (patch)
tree352e573c59ce22e21d8bfe26d38b1e584e25cd15 /tests/cpp/temitlist.nim
parent14b9eaee06894f5bf00548117984381d37f16ec7 (diff)
downloadNim-b0134309292e41a9b29777b5bdd79f2a1278a03d.tar.gz
reworked emit pragma; fixes #4730
Diffstat (limited to 'tests/cpp/temitlist.nim')
-rw-r--r--tests/cpp/temitlist.nim22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/cpp/temitlist.nim b/tests/cpp/temitlist.nim
new file mode 100644
index 000000000..cef0fc52d
--- /dev/null
+++ b/tests/cpp/temitlist.nim
@@ -0,0 +1,22 @@
+discard """
+  cmd: "nim cpp $file"
+  output: '''6.0'''
+"""
+
+# bug #4730
+
+type Vector* {.importcpp: "std::vector", header: "<vector>".}[T] = object
+
+template `[]=`*[T](v: var Vector[T], key: int, val: T) =
+  {.emit: [v, "[", key, "] = ", val, ";"].}
+
+proc setLen*[T](v: var Vector[T]; size: int) {.importcpp: "resize", nodecl.}
+proc `[]`*[T](v: var Vector[T], key: int): T {.importcpp: "(#[#])", nodecl.}
+
+proc main =
+  var v: Vector[float]
+  v.setLen 1
+  v[0] = 6.0
+  echo v[0]
+
+main()