From b0134309292e41a9b29777b5bdd79f2a1278a03d Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Sat, 17 Dec 2016 14:20:57 +0100 Subject: reworked emit pragma; fixes #4730 --- tests/cpp/temitlist.nim | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 tests/cpp/temitlist.nim (limited to 'tests/cpp/temitlist.nim') 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: "".}[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() -- cgit 1.4.1-2-gfad0