fix complex typdesc iterators
This commit is contained in:
parent
aa76857462
commit
55a3b51e40
2 changed files with 18 additions and 0 deletions
|
|
@ -560,6 +560,7 @@ type
|
||||||
proc putArgInto(arg: PNode, formal: PType): TPutArgInto =
|
proc putArgInto(arg: PNode, formal: PType): TPutArgInto =
|
||||||
# This analyses how to treat the mapping "formal <-> arg" in an
|
# This analyses how to treat the mapping "formal <-> arg" in an
|
||||||
# inline context.
|
# inline context.
|
||||||
|
if formal.kind == tyTypeDesc: return paDirectMapping
|
||||||
if skipTypes(formal, abstractInst).kind in {tyOpenArray, tyVarargs}:
|
if skipTypes(formal, abstractInst).kind in {tyOpenArray, tyVarargs}:
|
||||||
if arg.kind == nkStmtListExpr:
|
if arg.kind == nkStmtListExpr:
|
||||||
return paComplexOpenarray
|
return paComplexOpenarray
|
||||||
|
|
|
||||||
17
tests/iter/titertypedesc.nim
Normal file
17
tests/iter/titertypedesc.nim
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
discard """
|
||||||
|
output: '''0
|
||||||
|
(id: 0)
|
||||||
|
@[]
|
||||||
|
[0, 0, 0]'''
|
||||||
|
"""
|
||||||
|
|
||||||
|
iterator foo*(T: typedesc): T =
|
||||||
|
var x: T
|
||||||
|
yield x
|
||||||
|
|
||||||
|
for a in foo(int): echo a
|
||||||
|
for b in foo(tuple[id: int]): echo b
|
||||||
|
for c in foo(seq[int]): echo c
|
||||||
|
|
||||||
|
type Generic[T] = T
|
||||||
|
for d in foo(Generic[array[0..2, int]]): echo d
|
||||||
Loading…
Add table
Add a link
Reference in a new issue