summary refs log tree commit diff stats
path: root/tests/iter/t16076.nim
diff options
context:
space:
mode:
authorflywind <xzsflywind@gmail.com>2021-03-24 15:49:05 +0800
committerGitHub <noreply@github.com>2021-03-24 08:49:05 +0100
commit13a203001434db8f6cc9e4deab10dbfc7f57bd94 (patch)
treeb0d0f4412cf34a68744b71144eb952f069ee9abe /tests/iter/t16076.nim
parentc015ecdc37221b374647b3b1503d80519e253d94 (diff)
downloadNim-13a203001434db8f6cc9e4deab10dbfc7f57bd94.tar.gz
follow up #17486 (#17492)
* fix nim js cmp fails at CT

* follow up #17486

* test more branches

* better
Diffstat (limited to 'tests/iter/t16076.nim')
-rw-r--r--tests/iter/t16076.nim45
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/iter/t16076.nim b/tests/iter/t16076.nim
new file mode 100644
index 000000000..2eb409068
--- /dev/null
+++ b/tests/iter/t16076.nim
@@ -0,0 +1,45 @@
+discard """
+  targets: "c js"
+"""
+
+proc main() =
+  block: # bug #17485
+    type
+      O = ref object
+        i: int
+
+    iterator t(o: O): int =
+      if o != nil:
+        yield o.i
+      yield 0
+
+    proc m =
+      var data = ""
+      for i in t(nil):
+        data.addInt i
+
+      doAssert data == "0"
+
+    m()
+
+
+  block: # bug #16076
+    type
+      R = ref object
+        z: int
+
+    var data = ""
+
+    iterator foo(x: int; y: R = nil): int {.inline.} =
+      if y == nil:
+        yield x
+      else:
+        yield y.z
+
+    for b in foo(10):
+      data.addInt b
+
+    doAssert data == "10"
+
+static: main()
+main()