1 // Note: the run lines follow their respective tests, since line/column 2 // matter in this test. 3 4 template<class V> 5 struct 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 12 void foo(S<void *> &s) { s(42); } 13 14 int 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 %s 27 // 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 type 32 // CHECK-CC1-NEXT: Any value 33 // CHECK-CC1-NEXT: Enum tag 34 // CHECK-CC1-NEXT: Union tag 35 // CHECK-CC1-NEXT: Struct tag 36 // CHECK-CC1-NEXT: Class name 37 // CHECK-CC1-NEXT: Nested name specifier 38 // CHECK-CC1-NEXT: Objective-C interface 39 40 // RUN: c-index-test -code-completion-at=%s:17:5 %s | FileCheck -check-prefix=CHECK-CC2 %s 41 // 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 type 46 // CHECK-CC2-NEXT: Any value 47 // CHECK-CC2-NEXT: Enum tag 48 // CHECK-CC2-NEXT: Union tag 49 // CHECK-CC2-NEXT: Struct tag 50 // CHECK-CC2-NEXT: Class name 51 // CHECK-CC2-NEXT: Nested name specifier 52 // CHECK-CC2-NEXT: Objective-C interface 53 54 // RUN: c-index-test -code-completion-at=%s:18:5 %s | FileCheck -check-prefix=CHECK-CC3 %s 55 // 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 type 60 // CHECK-CC3-NEXT: Any value 61 // CHECK-CC3-NEXT: Enum tag 62 // CHECK-CC3-NEXT: Union tag 63 // CHECK-CC3-NEXT: Struct tag 64 // CHECK-CC3-NEXT: Class name 65 // CHECK-CC3-NEXT: Nested name specifier 66 // CHECK-CC3-NEXT: Objective-C interface 67 68 // RUN: c-index-test -code-completion-at=%s:18:7 %s | FileCheck -check-prefix=CHECK-CC4 %s 69 // 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 type 72 // CHECK-CC4-NEXT: Any value 73 // CHECK-CC4-NEXT: Enum tag 74 // CHECK-CC4-NEXT: Union tag 75 // CHECK-CC4-NEXT: Struct tag 76 // CHECK-CC4-NEXT: Class name 77 // CHECK-CC4-NEXT: Nested name specifier 78 // CHECK-CC4-NEXT: Objective-C interface 79 80 // RUN: c-index-test -code-completion-at=%s:18:10 %s | FileCheck -check-prefix=CHECK-CC5 %s 81 // 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 type 84 // CHECK-CC5-NEXT: Any value 85 // CHECK-CC5-NEXT: Enum tag 86 // CHECK-CC5-NEXT: Union tag 87 // CHECK-CC5-NEXT: Struct tag 88 // CHECK-CC5-NEXT: Class name 89 // CHECK-CC5-NEXT: Nested name specifier 90 // CHECK-CC5-NEXT: Objective-C interface 91 92 // RUN: c-index-test -code-completion-at=%s:19:17 %s | FileCheck -check-prefix=CHECK-CC6 %s 93 // 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 type 99 // CHECK-CC6-NEXT: Any value 100 // CHECK-CC6-NEXT: Enum tag 101 // CHECK-CC6-NEXT: Union tag 102 // CHECK-CC6-NEXT: Struct tag 103 // CHECK-CC6-NEXT: Class name 104 // CHECK-CC6-NEXT: Nested name specifier 105 // CHECK-CC6-NEXT: Objective-C interface 106 107 // RUN: c-index-test -code-completion-at=%s:19:28 %s | FileCheck -check-prefix=CHECK-CC7 %s 108 // 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 type 114 // CHECK-CC7-NEXT: Any value 115 // CHECK-CC7-NEXT: Enum tag 116 // CHECK-CC7-NEXT: Union tag 117 // CHECK-CC7-NEXT: Struct tag 118 // CHECK-CC7-NEXT: Class name 119 // CHECK-CC7-NEXT: Nested name specifier 120 // CHECK-CC7-NEXT: Objective-C interface 121 122 // RUN: c-index-test -code-completion-at=%s:19:31 %s | FileCheck -check-prefix=CHECK-CC8 %s 123 // 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 type 126 // CHECK-CC8-NEXT: Any value 127 // CHECK-CC8-NEXT: Enum tag 128 // CHECK-CC8-NEXT: Union tag 129 // CHECK-CC8-NEXT: Struct tag 130 // CHECK-CC8-NEXT: Class name 131 // CHECK-CC8-NEXT: Nested name specifier 132 // CHECK-CC8-NEXT: Objective-C interface 133 134 // RUN: c-index-test -code-completion-at=%s:19:35 %s | FileCheck -check-prefix=CHECK-CC9 %s 135 // 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 type 138 // CHECK-CC9-NEXT: Any value 139 // CHECK-CC9-NEXT: Enum tag 140 // CHECK-CC9-NEXT: Union tag 141 // CHECK-CC9-NEXT: Struct tag 142 // CHECK-CC9-NEXT: Class name 143 // CHECK-CC9-NEXT: Nested name specifier 144 // CHECK-CC9-NEXT: Objective-C interface 145 146 // RUN: c-index-test -code-completion-at=%s:21:8 %s | FileCheck -check-prefix=CHECK-CC10 %s 147 // CHECK-CC10: Completion contexts: 148 // CHECK-CC10-NEXT: Any type 149 // CHECK-CC10-NEXT: Any value 150 // CHECK-CC10-NEXT: Enum tag 151 // CHECK-CC10-NEXT: Union tag 152 // CHECK-CC10-NEXT: Struct tag 153 // CHECK-CC10-NEXT: Class name 154 // CHECK-CC10-NEXT: Nested name specifier 155 // CHECK-CC10-NEXT: Objective-C interface 156 157 // RUN: c-index-test -code-completion-at=%s:22:7 %s | FileCheck -check-prefix=CHECK-CC11 %s 158 // CHECK-CC11: Completion contexts: 159 // CHECK-CC11-NEXT: Any type 160 // CHECK-CC11-NEXT: Any value 161 // CHECK-CC11-NEXT: Enum tag 162 // CHECK-CC11-NEXT: Union tag 163 // CHECK-CC11-NEXT: Struct tag 164 // CHECK-CC11-NEXT: Class name 165 // CHECK-CC11-NEXT: Nested name specifier 166 // CHECK-CC11-NEXT: Objective-C interface 167 168 // RUN: c-index-test -code-completion-at=%s:23:15 %s | FileCheck -check-prefix=CHECK-CC12 %s 169 // CHECK-CC12: Completion contexts: 170 // CHECK-CC12-NEXT: Any type 171 // CHECK-CC12-NEXT: Any value 172 // CHECK-CC12-NEXT: Enum tag 173 // CHECK-CC12-NEXT: Union tag 174 // CHECK-CC12-NEXT: Struct tag 175 // CHECK-CC12-NEXT: Class name 176 // CHECK-CC12-NEXT: Nested name specifier 177 // CHECK-CC12-NEXT: Objective-C interface 178 179 // RUN: c-index-test -code-completion-at=%s:12:28 %s | FileCheck -check-prefix=CHECK-CC13 %s 180 // 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 type 185 // CHECK-CC13-NEXT: Any value 186 // CHECK-CC13-NEXT: Enum tag 187 // CHECK-CC13-NEXT: Union tag 188 // CHECK-CC13-NEXT: Struct tag 189 // CHECK-CC13-NEXT: Class name 190 // CHECK-CC13-NEXT: Nested name specifier 191 // CHECK-CC13-NEXT: Objective-C interface 192