Skip to content

Commit e8f128e

Browse files
committed
---
yaml --- r: 347061 b: refs/heads/master c: 00e8d0b h: refs/heads/master i: 347059: 28e464f
1 parent 0383b0a commit e8f128e

16 files changed

+581
-150
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 9d715217502592b586674a7aac152524cbb4423c
2+
refs/heads/master: 00e8d0b785845a9e53ebb55e9d43c73accd8dfd9
33
refs/heads/master-next: 203b3026584ecad859eb328b2e12490099409cd5
44
refs/tags/osx-passed: b6b74147ef8a386f532cf9357a1bde006e552c54
55
refs/tags/swift-2.2-SNAPSHOT-2015-12-01-a: 6bb18e013c2284f2b45f5f84f2df2887dc0f7dea

trunk/lib/Sema/CSGen.cpp

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3582,22 +3582,7 @@ namespace {
35823582

35833583
void associateArgumentLabels(Expr *fn, State labels,
35843584
bool labelsArePermanent) {
3585-
// Dig out the function, looking through, parentheses, ?, and !.
3586-
do {
3587-
fn = fn->getSemanticsProvidingExpr();
3588-
3589-
if (auto force = dyn_cast<ForceValueExpr>(fn)) {
3590-
fn = force->getSubExpr();
3591-
continue;
3592-
}
3593-
3594-
if (auto bind = dyn_cast<BindOptionalExpr>(fn)) {
3595-
fn = bind->getSubExpr();
3596-
continue;
3597-
}
3598-
3599-
break;
3600-
} while (true);
3585+
fn = getArgumentLabelTargetExpr(fn);
36013586

36023587
// Record the labels.
36033588
if (!labelsArePermanent)
@@ -3614,6 +3599,22 @@ namespace {
36143599
return { true, expr };
36153600
}
36163601

3602+
if (auto subscript = dyn_cast<SubscriptExpr>(expr)) {
3603+
associateArgumentLabels(subscript,
3604+
{ subscript->getArgumentLabels(),
3605+
subscript->hasTrailingClosure() },
3606+
/*labelsArePermanent=*/true);
3607+
return { true, expr };
3608+
}
3609+
3610+
if (auto unresolvedMember = dyn_cast<UnresolvedMemberExpr>(expr)) {
3611+
associateArgumentLabels(unresolvedMember,
3612+
{ unresolvedMember->getArgumentLabels(),
3613+
unresolvedMember->hasTrailingClosure() },
3614+
/*labelsArePermanent=*/true);
3615+
return { true, expr };
3616+
}
3617+
36173618
// FIXME: other expressions have argument labels, but this is an
36183619
// optimization, so stage it in later.
36193620
return { true, expr };

0 commit comments

Comments
 (0)