summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--doc/nimc.txt2
-rw-r--r--tests/cpp/get_subsystem.nim22
-rw-r--r--tests/cpp/vector_iterator.nim6
3 files changed, 25 insertions, 5 deletions
diff --git a/doc/nimc.txt b/doc/nimc.txt
index 1af35d694..cfbccc479 100644
--- a/doc/nimc.txt
+++ b/doc/nimc.txt
@@ -506,7 +506,7 @@ For example:
 .. code-block:: nim
 
   type Input {.importcpp: "System::Input".} = object
-  proc getSubsystem*[T](): ptr T {.importcpp: "SystemManager::getSubsystem<'*0>()".}
+  proc getSubsystem*[T](): ptr T {.importcpp: "SystemManager::getSubsystem<'*0>()", nodecl.}
 
   let x: ptr Input = getSubsystem[Input]()
 
diff --git a/tests/cpp/get_subsystem.nim b/tests/cpp/get_subsystem.nim
new file mode 100644
index 000000000..38593b03a
--- /dev/null
+++ b/tests/cpp/get_subsystem.nim
@@ -0,0 +1,22 @@
+discard """
+  cmd: "nim cpp $file"
+"""
+
+{.emit: """
+
+namespace System {
+  struct Input {};
+}
+
+struct SystemManager {
+  template <class T>
+  static T* getSubsystem() { return new T; }
+};
+
+""".}
+
+type Input {.importcpp: "System::Input".} = object
+proc getSubsystem*[T](): ptr T {.importcpp: "SystemManager::getSubsystem<'*0>()".}
+
+let input: ptr Input = getSubsystem[Input]()
+
diff --git a/tests/cpp/vector_iterator.nim b/tests/cpp/vector_iterator.nim
index bd26db351..cb5ab33af 100644
--- a/tests/cpp/vector_iterator.nim
+++ b/tests/cpp/vector_iterator.nim
@@ -6,16 +6,14 @@ discard """
 
 template <class T>
 struct Vector {
-  struct Iterator {
-
-  };
+  struct Iterator {};
 };
 
 """.}
 
 type
   Vector {.importcpp: "Vector".} [T] = object
-  VectorIterator {.importcpp: "Vector<'2>::Iterator".} [T] = object
+  VectorIterator {.importcpp: "Vector<'0>::Iterator".} [T] = object
 
 var x: VectorIterator[void]