* fix #15972

* add testcase

* more
This commit is contained in:
flywind 2020-11-18 08:14:14 +08:00 • committed by GitHub
commit 0869d2a477
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 2 deletions

View file

@ -739,7 +739,7 @@ proc semForVars(c: PContext, n: PNode; flags: TExprFlags): PNode =
else:
v.typ = iter[i]
n[0][i] = newSymNode(v)
if sfGenSym notin v.flags: addDecl(c, v)
if sfGenSym notin v.flags and not isDiscardUnderscore(v): addDecl(c, v)
elif v.owner == nil: v.owner = getCurrOwner(c)
else:
var v = symForVar(c, n[0])
@ -749,7 +749,7 @@ proc semForVars(c: PContext, n: PNode; flags: TExprFlags): PNode =
# for an example:
v.typ = iterBase
n[0] = newSymNode(v)
if sfGenSym notin v.flags: addDecl(c, v)
if sfGenSym notin v.flags and not isDiscardUnderscore(v): addDecl(c, v)
elif v.owner == nil: v.owner = getCurrOwner(c)
else:
localError(c.config, n.info, errWrongNumberOfVariables)

View file

@ -0,0 +1,10 @@
discard """
errormsg: "undeclared identifier: '_'"
"""
iterator iter(): (int, int, int) =
yield (1, 1, 2)
for (_, i, _) in iter():
echo _

View file

@ -0,0 +1,16 @@
discard """
errormsg: "undeclared identifier: '_'"
"""
iterator iter(): (int, int) =
yield (1, 2)
yield (3, 4)
yield (1, 2)
yield (3, 4)
yield (1, 2)
yield (3, 4)
for (_, i) in iter():
echo _

View file

@ -0,0 +1,6 @@
discard """
errormsg: "undeclared identifier: '_'"
"""
for _ in ["a"]:
echo _