192 lines · cpp
1// Note: the run lines follow their respective tests, since line/column2// matter in this test.3 4template<class V>5struct S {6 void operator()(int) const {}7 template<class T> void operator()(T) const {}8 template<class T> void operator()(V, T, T) const {}9 template<class T> const S<T> *operator()(const S<T> &s) const { return &s; }10};11 12void foo(S<void *> &s) { s(42); }13 14int main() {15 S<void *> s;16 s(42);17 s(s);18 s(0, s, s);19 (*S<void *>()(S<int>()))(42, 42, 42);20 21 s(42,);22 s(s,);23 s(0, 42, 42,);24}25 26// RUN: c-index-test -code-completion-at=%s:16:5 %s | FileCheck -check-prefix=CHECK-CC1 %s27// CHECK-CC1: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter int}{RightParen )} (1)28// CHECK-CC1: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter T}{RightParen )} (1)29// CHECK-CC1: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter void *}{Comma , }{Placeholder T}{Comma , }{Placeholder T}{RightParen )} (1)30// CHECK-CC1: Completion contexts:31// CHECK-CC1-NEXT: Any type32// CHECK-CC1-NEXT: Any value33// CHECK-CC1-NEXT: Enum tag34// CHECK-CC1-NEXT: Union tag35// CHECK-CC1-NEXT: Struct tag36// CHECK-CC1-NEXT: Class name37// CHECK-CC1-NEXT: Nested name specifier38// CHECK-CC1-NEXT: Objective-C interface39 40// RUN: c-index-test -code-completion-at=%s:17:5 %s | FileCheck -check-prefix=CHECK-CC2 %s41// CHECK-CC2: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter int}{RightParen )} (1)42// CHECK-CC2: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter T}{RightParen )} (1)43// CHECK-CC2: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter void *}{Comma , }{Placeholder T}{Comma , }{Placeholder T}{RightParen )} (1)44// CHECK-CC2: Completion contexts:45// CHECK-CC2-NEXT: Any type46// CHECK-CC2-NEXT: Any value47// CHECK-CC2-NEXT: Enum tag48// CHECK-CC2-NEXT: Union tag49// CHECK-CC2-NEXT: Struct tag50// CHECK-CC2-NEXT: Class name51// CHECK-CC2-NEXT: Nested name specifier52// CHECK-CC2-NEXT: Objective-C interface53 54// RUN: c-index-test -code-completion-at=%s:18:5 %s | FileCheck -check-prefix=CHECK-CC3 %s55// CHECK-CC3: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter int}{RightParen )} (1)56// CHECK-CC3: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter T}{RightParen )} (1)57// CHECK-CC3: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter void *}{Comma , }{Placeholder T}{Comma , }{Placeholder T}{RightParen )} (1)58// CHECK-CC3: Completion contexts:59// CHECK-CC3-NEXT: Any type60// CHECK-CC3-NEXT: Any value61// CHECK-CC3-NEXT: Enum tag62// CHECK-CC3-NEXT: Union tag63// CHECK-CC3-NEXT: Struct tag64// CHECK-CC3-NEXT: Class name65// CHECK-CC3-NEXT: Nested name specifier66// CHECK-CC3-NEXT: Objective-C interface67 68// RUN: c-index-test -code-completion-at=%s:18:7 %s | FileCheck -check-prefix=CHECK-CC4 %s69// CHECK-CC4: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{Placeholder void *}{Comma , }{CurrentParameter T}{Comma , }{Placeholder T}{RightParen )} (1)70// CHECK-CC4: Completion contexts:71// CHECK-CC4-NEXT: Any type72// CHECK-CC4-NEXT: Any value73// CHECK-CC4-NEXT: Enum tag74// CHECK-CC4-NEXT: Union tag75// CHECK-CC4-NEXT: Struct tag76// CHECK-CC4-NEXT: Class name77// CHECK-CC4-NEXT: Nested name specifier78// CHECK-CC4-NEXT: Objective-C interface79 80// RUN: c-index-test -code-completion-at=%s:18:10 %s | FileCheck -check-prefix=CHECK-CC5 %s81// CHECK-CC5: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{Placeholder void *}{Comma , }{Placeholder S<void *>}{Comma , }{CurrentParameter S<void *>}{RightParen )} (1)82// CHECK-CC5: Completion contexts:83// CHECK-CC5-NEXT: Any type84// CHECK-CC5-NEXT: Any value85// CHECK-CC5-NEXT: Enum tag86// CHECK-CC5-NEXT: Union tag87// CHECK-CC5-NEXT: Struct tag88// CHECK-CC5-NEXT: Class name89// CHECK-CC5-NEXT: Nested name specifier90// CHECK-CC5-NEXT: Objective-C interface91 92// RUN: c-index-test -code-completion-at=%s:19:17 %s | FileCheck -check-prefix=CHECK-CC6 %s93// CHECK-CC6: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter int}{RightParen )} (1)94// CHECK-CC6: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter T}{RightParen )} (1)95// CHECK-CC6: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter void *}{Comma , }{Placeholder T}{Comma , }{Placeholder T}{RightParen )} (1)96// CHECK-CC6: OverloadCandidate:{ResultType const S<T> *}{Text operator()}{LeftParen (}{CurrentParameter const S<T> &s}{RightParen )} (1)97// CHECK-CC6: Completion contexts:98// CHECK-CC6-NEXT: Any type99// CHECK-CC6-NEXT: Any value100// CHECK-CC6-NEXT: Enum tag101// CHECK-CC6-NEXT: Union tag102// CHECK-CC6-NEXT: Struct tag103// CHECK-CC6-NEXT: Class name104// CHECK-CC6-NEXT: Nested name specifier105// CHECK-CC6-NEXT: Objective-C interface106 107// RUN: c-index-test -code-completion-at=%s:19:28 %s | FileCheck -check-prefix=CHECK-CC7 %s108// CHECK-CC7: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter int}{RightParen )} (1)109// CHECK-CC7: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter T}{RightParen )} (1)110// CHECK-CC7: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter int}{Comma , }{Placeholder T}{Comma , }{Placeholder T}{RightParen )} (1)111// CHECK-CC7: OverloadCandidate:{ResultType const S<T> *}{Text operator()}{LeftParen (}{CurrentParameter const S<T> &s}{RightParen )} (1)112// CHECK-CC7: Completion contexts:113// CHECK-CC7-NEXT: Any type114// CHECK-CC7-NEXT: Any value115// CHECK-CC7-NEXT: Enum tag116// CHECK-CC7-NEXT: Union tag117// CHECK-CC7-NEXT: Struct tag118// CHECK-CC7-NEXT: Class name119// CHECK-CC7-NEXT: Nested name specifier120// CHECK-CC7-NEXT: Objective-C interface121 122// RUN: c-index-test -code-completion-at=%s:19:31 %s | FileCheck -check-prefix=CHECK-CC8 %s123// CHECK-CC8: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{Placeholder int}{Comma , }{CurrentParameter T}{Comma , }{Placeholder T}{RightParen )} (1)124// CHECK-CC8: Completion contexts:125// CHECK-CC8-NEXT: Any type126// CHECK-CC8-NEXT: Any value127// CHECK-CC8-NEXT: Enum tag128// CHECK-CC8-NEXT: Union tag129// CHECK-CC8-NEXT: Struct tag130// CHECK-CC8-NEXT: Class name131// CHECK-CC8-NEXT: Nested name specifier132// CHECK-CC8-NEXT: Objective-C interface133 134// RUN: c-index-test -code-completion-at=%s:19:35 %s | FileCheck -check-prefix=CHECK-CC9 %s135// CHECK-CC9: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{Placeholder int}{Comma , }{Placeholder int}{Comma , }{CurrentParameter int}{RightParen )} (1)136// CHECK-CC9: Completion contexts:137// CHECK-CC9-NEXT: Any type138// CHECK-CC9-NEXT: Any value139// CHECK-CC9-NEXT: Enum tag140// CHECK-CC9-NEXT: Union tag141// CHECK-CC9-NEXT: Struct tag142// CHECK-CC9-NEXT: Class name143// CHECK-CC9-NEXT: Nested name specifier144// CHECK-CC9-NEXT: Objective-C interface145 146// RUN: c-index-test -code-completion-at=%s:21:8 %s | FileCheck -check-prefix=CHECK-CC10 %s147// CHECK-CC10: Completion contexts:148// CHECK-CC10-NEXT: Any type149// CHECK-CC10-NEXT: Any value150// CHECK-CC10-NEXT: Enum tag151// CHECK-CC10-NEXT: Union tag152// CHECK-CC10-NEXT: Struct tag153// CHECK-CC10-NEXT: Class name154// CHECK-CC10-NEXT: Nested name specifier155// CHECK-CC10-NEXT: Objective-C interface156 157// RUN: c-index-test -code-completion-at=%s:22:7 %s | FileCheck -check-prefix=CHECK-CC11 %s158// CHECK-CC11: Completion contexts:159// CHECK-CC11-NEXT: Any type160// CHECK-CC11-NEXT: Any value161// CHECK-CC11-NEXT: Enum tag162// CHECK-CC11-NEXT: Union tag163// CHECK-CC11-NEXT: Struct tag164// CHECK-CC11-NEXT: Class name165// CHECK-CC11-NEXT: Nested name specifier166// CHECK-CC11-NEXT: Objective-C interface167 168// RUN: c-index-test -code-completion-at=%s:23:15 %s | FileCheck -check-prefix=CHECK-CC12 %s169// CHECK-CC12: Completion contexts:170// CHECK-CC12-NEXT: Any type171// CHECK-CC12-NEXT: Any value172// CHECK-CC12-NEXT: Enum tag173// CHECK-CC12-NEXT: Union tag174// CHECK-CC12-NEXT: Struct tag175// CHECK-CC12-NEXT: Class name176// CHECK-CC12-NEXT: Nested name specifier177// CHECK-CC12-NEXT: Objective-C interface178 179// RUN: c-index-test -code-completion-at=%s:12:28 %s | FileCheck -check-prefix=CHECK-CC13 %s180// CHECK-CC13: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter int}{RightParen )} (1)181// CHECK-CC13: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter T}{RightParen )} (1)182// CHECK-CC13: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter void *}{Comma , }{Placeholder T}{Comma , }{Placeholder T}{RightParen )} (1)183// CHECK-CC13: Completion contexts:184// CHECK-CC13-NEXT: Any type185// CHECK-CC13-NEXT: Any value186// CHECK-CC13-NEXT: Enum tag187// CHECK-CC13-NEXT: Union tag188// CHECK-CC13-NEXT: Struct tag189// CHECK-CC13-NEXT: Class name190// CHECK-CC13-NEXT: Nested name specifier191// CHECK-CC13-NEXT: Objective-C interface192