Skip to content

Commit b203e2f

Browse files
committed
Sema: Hack up CSDiag for removal of multiple parameter lists
1 parent dd3c8af commit b203e2f

File tree

2 files changed

+28
-12
lines changed

2 files changed

+28
-12
lines changed

lib/Sema/CSDiag.cpp

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3421,11 +3421,15 @@ static bool candidatesHaveAnyDefaultValues(
34213421
auto function = dyn_cast_or_null<AbstractFunctionDecl>(cand.getDecl());
34223422
if (!function) continue;
34233423

3424-
auto paramLists = function->getParameterLists();
3425-
if (cand.level >= paramLists.size()) continue;
3424+
if (function->getImplicitSelfDecl()) {
3425+
if (cand.level != 1)
3426+
return false;
3427+
} else {
3428+
if (cand.level != 0)
3429+
return false;
3430+
}
34263431

3427-
auto paramList = paramLists[cand.level];
3428-
for (auto param : *paramList) {
3432+
for (auto param : *function->getParameters()) {
34293433
if (param->getDefaultArgumentKind() != DefaultArgumentKind::None)
34303434
return true;
34313435
}
@@ -3456,11 +3460,15 @@ static Optional<unsigned> getElementForScalarInitOfArg(
34563460
auto function = dyn_cast_or_null<AbstractFunctionDecl>(cand.getDecl());
34573461
if (!function) return getElementForScalarInitSimple(tupleTy);
34583462

3459-
auto paramLists = function->getParameterLists();
3460-
if (cand.level >= paramLists.size())
3461-
return getElementForScalarInitSimple(tupleTy);
3463+
if (function->getImplicitSelfDecl()) {
3464+
if (cand.level != 1)
3465+
return getElementForScalarInitSimple(tupleTy);
3466+
} else {
3467+
if (cand.level != 0)
3468+
return getElementForScalarInitSimple(tupleTy);
3469+
}
34623470

3463-
auto paramList = paramLists[cand.level];
3471+
auto paramList = function->getParameters();
34643472
if (tupleTy->getNumElements() != paramList->size())
34653473
return getElementForScalarInitSimple(tupleTy);
34663474

lib/Sema/CalleeCandidateInfo.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,18 @@ ArrayRef<Identifier> UncurriedCandidate::getArgumentLabels(
9090
scratch.clear();
9191
if (auto decl = getDecl()) {
9292
if (auto func = dyn_cast<AbstractFunctionDecl>(decl)) {
93-
// Retrieve the argument labels of the corresponding parameter list.
94-
if (level < func->getNumParameterLists()) {
95-
auto paramList = func->getParameterList(level);
96-
for (auto param : *paramList) {
93+
if (func->getImplicitSelfDecl()) {
94+
if (level == 0) {
95+
scratch.push_back(Identifier());
96+
return scratch;
97+
}
98+
99+
--level;
100+
}
101+
102+
if (level == 0) {
103+
// Retrieve the argument labels of the corresponding parameter list.
104+
for (auto param : *func->getParameters()) {
97105
scratch.push_back(param->getArgumentName());
98106
}
99107
return scratch;

0 commit comments

Comments
 (0)