]> granicus.if.org Git - clang/commitdiff
When code-completion after a "," is building an overload set, note
authorDouglas Gregor <dgregor@apple.com>
Wed, 23 Sep 2009 14:56:09 +0000 (14:56 +0000)
committerDouglas Gregor <dgregor@apple.com>
Wed, 23 Sep 2009 14:56:09 +0000 (14:56 +0000)
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

lib/Sema/SemaOverload.cpp
test/CodeCompletion/call.cpp

index 144cf93d31bbf3e4aed93b5742254d2e02bfab75..12eb58733b152b358db363fc4deebb89669a894a 100644 (file)
@@ -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;
   }
index 448b8ebb6ef232ce5467fda936e2be54765277f6..90bf82bff3077baf103b4356cb2dc013bed30513 100644 (file)
@@ -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
 }