mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
42 lines
660 B
Nim
42 lines
660 B
Nim
discard """
|
|
output: '''16
|
|
32
|
|
48
|
|
64
|
|
128
|
|
192
|
|
'''
|
|
disabled: "true"
|
|
"""
|
|
|
|
# This all relies on non-documented and questionable features.
|
|
|
|
iterator gaz(it: iterator{.inline.}): type(it) =
|
|
for x in it:
|
|
yield x*2
|
|
|
|
iterator baz(it: iterator{.inline.}): auto =
|
|
for x in gaz(it):
|
|
yield x*2
|
|
|
|
type T1 = auto
|
|
|
|
iterator bar(it: iterator: T1{.inline.}): T1 =
|
|
for x in baz(it):
|
|
yield x*2
|
|
|
|
iterator foo[T](x: iterator: T{.inline.}): T =
|
|
for e in bar(x):
|
|
yield e*2
|
|
|
|
var s = @[1, 2, 3]
|
|
|
|
# pass an iterator several levels deep:
|
|
for x in s.items.foo:
|
|
echo x
|
|
|
|
# use some complex iterator as an input for another one:
|
|
for x in s.items.baz.foo:
|
|
echo x
|
|
|