зеркало из https://github.com/microsoft/clang-1.git
When code-completion after a "," is building an overload set, note
that there is one more argument (the one following the comma) and make the candidate non-viable if the function cannot accept any argument in that position. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@82625 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
38a809571b
Коммит
5bd1a1151f
|
@ -2189,7 +2189,8 @@ Sema::AddOverloadCandidate(FunctionDecl *Function,
|
|||
// (C++ 13.3.2p2): A candidate function having fewer than m
|
||||
// parameters is viable only if it has an ellipsis in its parameter
|
||||
// list (8.3.5).
|
||||
if (NumArgs > NumArgsInProto && !Proto->isVariadic()) {
|
||||
if ((NumArgs + (PartialOverloading && NumArgs)) > NumArgsInProto &&
|
||||
!Proto->isVariadic()) {
|
||||
Candidate.Viable = false;
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -19,10 +19,10 @@ void test() {
|
|||
f(Y(), 0, 0);
|
||||
// RUN: clang-cc -fsyntax-only -code-completion-at=%s:19:9 %s -o - | FileCheck -check-prefix=CC1 %s &&
|
||||
// CHECK-CC1: f(struct N::Y y, <#int ZZ#>)
|
||||
// CHECK-NEXT-CC1: f(int i, <#int j#>, int k)
|
||||
// CHECK-NEXT-CC1: f(float x, <#float y#>)
|
||||
// CHECK-CC1-NEXT: f(int i, <#int j#>, int k)
|
||||
// CHECK-CC1-NEXT: f(float x, <#float y#>)
|
||||
// RUN: clang-cc -fsyntax-only -code-completion-at=%s:19:13 %s -o - | FileCheck -check-prefix=CC2 %s &&
|
||||
// FIXME: two extra overloads are showing up!
|
||||
// CHECK-CC2-NOT: f(struct N::Y y, int ZZ)
|
||||
// CHECK-CC2: f(int i, int j, <#int k#>)
|
||||
// RUN: true
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче