summary refs log tree commit diff stats
path: root/tests/cpp/temitlist.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/cpp/temitlist.nim')
-rw-r--r--tests/cpp/temitlist.nim38
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/cpp/temitlist.nim b/tests/cpp/temitlist.nim
new file mode 100644
index 000000000..9170be079
--- /dev/null
+++ b/tests/cpp/temitlist.nim
@@ -0,0 +1,38 @@
+discard """
+  targets: "cpp"
+  output: '''
+6.0
+0'''
+disabled: "windows" # pending bug #18011
+"""
+
+# bug #4730
+
+type Vector*[T] {.importcpp: "std::vector", header: "<vector>".} = 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()
+
+#------------
+
+#bug #6837
+type StdString {.importCpp: "std::string", header: "<string>", byref.} = object
+proc initString(): StdString {.constructor, importCpp: "std::string(@)", header: "<string>".}
+proc size(this: var StdString): csize_t {.importCpp: "size", header: "<string>".}
+
+proc f(): csize_t =
+  var myString: StdString = initString()
+  return myString.size()
+
+echo f()