xref: /llvm-project/clang/test/Index/complete-pointer-and-reference-to-functions.cpp (revision c6ccc4fe91b8f1bc5251b454ac1f6c79a6177c8b)
1 // Note: the run lines follow their respective tests, since line/column
2 // matter in this test.
3 
4 template<class T> void (&foo(T))(T);
5 template<class T> void (*bar(T))(T);
6 
7 int main() {
8   foo(42)(42);
9   bar(42)(42);
10 }
11 
12 // RUN: c-index-test -code-completion-at=%s:8:11 %s | FileCheck -check-prefix=CHECK-CC1 %s
13 // CHECK-CC1: OverloadCandidate:{Text void}{LeftParen (}{CurrentParameter int}{RightParen )} (1)
14 // CHECK-CC1: Completion contexts:
15 // CHECK-CC1-NEXT: Any type
16 // CHECK-CC1-NEXT: Any value
17 // CHECK-CC1-NEXT: Enum tag
18 // CHECK-CC1-NEXT: Union tag
19 // CHECK-CC1-NEXT: Struct tag
20 // CHECK-CC1-NEXT: Class name
21 // CHECK-CC1-NEXT: Nested name specifier
22 // CHECK-CC1-NEXT: Objective-C interface
23 
24 // RUN: c-index-test -code-completion-at=%s:9:11 %s | FileCheck -check-prefix=CHECK-CC2 %s
25 // CHECK-CC2: OverloadCandidate:{Text void}{LeftParen (}{CurrentParameter int}{RightParen )} (1)
26 // CHECK-CC2: Completion contexts:
27 // CHECK-CC2-NEXT: Any type
28 // CHECK-CC2-NEXT: Any value
29 // CHECK-CC2-NEXT: Enum tag
30 // CHECK-CC2-NEXT: Union tag
31 // CHECK-CC2-NEXT: Struct tag
32 // CHECK-CC2-NEXT: Class name
33 // CHECK-CC2-NEXT: Nested name specifier
34 // CHECK-CC2-NEXT: Objective-C interface
35