mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-30 19:06:04 +00:00

Summary: Code completion in clang is actually a mix of two features: - Code completion is a familiar feature. Results are exposed via the CodeCompleteConsumer::ProcessCodeCompleteResults callback. - Signature help figures out if the current expression is an argument of some function call and shows corresponding signatures if so. Results are exposed via CodeCompleteConsumer::ProcessOverloadCandidates. This patch refactors the implementation to untangle those two from each other and makes some naming tweaks to avoid confusion when reading the code. The refactoring is required for signature help fixes, see D51038. The only intended behavior change is the order of callbacks. ProcessOverloadCandidates is now called before ProcessCodeCompleteResults. Reviewers: sammccall, kadircet Reviewed By: sammccall Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D51782 llvm-svn: 341660
29 lines
871 B
C++
29 lines
871 B
C++
// Note: the run lines follow their respective tests, since line/column
|
|
// matter in this test.
|
|
void f(float x, float y);
|
|
void f(int i, int j, int k);
|
|
struct X { };
|
|
void f(X);
|
|
namespace N {
|
|
struct Y {
|
|
Y(int = 0);
|
|
|
|
operator int() const;
|
|
};
|
|
void f(Y y, int ZZ);
|
|
}
|
|
typedef N::Y Y;
|
|
void f();
|
|
|
|
void test() {
|
|
f(Y(), 0, 0);
|
|
// RUN: %clang_cc1 -fsyntax-only -code-completion-patterns -code-completion-at=%s:19:9 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
|
|
// CHECK-CC1: f(Y y, <#int ZZ#>)
|
|
// CHECK-CC1-NEXT: f(int i, <#int j#>, int k)
|
|
// CHECK-CC1-NEXT: f(float x, <#float y#>)
|
|
// CHECK-CC1: COMPLETION: Pattern : dynamic_cast<<#type#>>(<#expression#>)
|
|
// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:19:13 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s
|
|
// CHECK-CC2-NOT: f(Y y, int ZZ)
|
|
// CHECK-CC2: f(int i, int j, <#int k#>)
|
|
}
|