[cfe-commits] r82625 - in /cfe/trunk: lib/Sema/SemaOverload.cpp test/CodeCompletion/call.cpp
Douglas Gregor
dgregor at apple.com
Wed Sep 23 07:56:09 PDT 2009
Author: dgregor
Date: Wed Sep 23 09:56:09 2009
New Revision: 82625
URL: http://llvm.org/viewvc/llvm-project?rev=82625&view=rev
Log:
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.
Modified:
cfe/trunk/lib/Sema/SemaOverload.cpp
cfe/trunk/test/CodeCompletion/call.cpp
Modified: cfe/trunk/lib/Sema/SemaOverload.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaOverload.cpp?rev=82625&r1=82624&r2=82625&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaOverload.cpp (original)
+++ cfe/trunk/lib/Sema/SemaOverload.cpp Wed Sep 23 09:56:09 2009
@@ -2189,7 +2189,8 @@
// (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;
}
Modified: cfe/trunk/test/CodeCompletion/call.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeCompletion/call.cpp?rev=82625&r1=82624&r2=82625&view=diff
==============================================================================
--- cfe/trunk/test/CodeCompletion/call.cpp (original)
+++ cfe/trunk/test/CodeCompletion/call.cpp Wed Sep 23 09:56:09 2009
@@ -19,10 +19,10 @@
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
}
More information about the cfe-commits
mailing list