Track discriminators for closure expressions.

Swift SVN r10905
This commit is contained in:
John McCall
2013-12-06 02:23:57 +00:00
parent 6a776132d2
commit a5febc6b48
9 changed files with 143 additions and 32 deletions

View File

@@ -467,13 +467,13 @@ void Parser::consumeDecl(ParserPosition BeginParserPosition, unsigned Flags,
void Parser::setLocalDiscriminator(ValueDecl *D) {
// If we're not in a local context, this is unnecessary.
if (!LocalDiscriminators) return;
if (!CurFunction) return;
Identifier name = D->getName();
assert(!name.empty() &&
"setting a local discriminator on an anonymous decl; "
"maybe the name hasn't been set yet?");
unsigned discriminator = (*LocalDiscriminators)[name]++;
unsigned discriminator = CurFunction->LocalDiscriminators[name]++;
D->setLocalDiscriminator(discriminator);
}