blob: 5ab065b9059613011946be62e56dc79479227051 [file] [log] [blame]
Francisco Lopes da Silva975a9f62015-01-21 16:24:11 +00001// Note: the run lines follow their respective tests, since line/column
2// 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
12int main() {
13 S<void *> s;
14 s(42);
15 s(s);
16 s(0, s, s);
17 (*S<void *>()(S<int>()))(42, 42, 42);
18
19 s(42,);
20 s(s,);
21 s(0, 42, 42,);
22}
23
24// RUN: c-index-test -code-completion-at=%s:14:5 %s | FileCheck -check-prefix=CHECK-CC1 %s
25// CHECK-CC1: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter int}{RightParen )} (1)
26// CHECK-CC1: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter T}{RightParen )} (1)
27// CHECK-CC1: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter void *}{Comma , }{Text T}{Comma , }{Text T}{RightParen )} (1)
28// CHECK-CC1: Completion contexts:
29// CHECK-CC1-NEXT: Any type
30// CHECK-CC1-NEXT: Any value
31// CHECK-CC1-NEXT: Enum tag
32// CHECK-CC1-NEXT: Union tag
33// CHECK-CC1-NEXT: Struct tag
34// CHECK-CC1-NEXT: Class name
35// CHECK-CC1-NEXT: Nested name specifier
36// CHECK-CC1-NEXT: Objective-C interface
37
38// RUN: c-index-test -code-completion-at=%s:15:5 %s | FileCheck -check-prefix=CHECK-CC2 %s
39// CHECK-CC2: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter int}{RightParen )} (1)
40// CHECK-CC2: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter T}{RightParen )} (1)
41// CHECK-CC2: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter void *}{Comma , }{Text T}{Comma , }{Text T}{RightParen )} (1)
42// CHECK-CC2: Completion contexts:
43// CHECK-CC2-NEXT: Any type
44// CHECK-CC2-NEXT: Any value
45// CHECK-CC2-NEXT: Enum tag
46// CHECK-CC2-NEXT: Union tag
47// CHECK-CC2-NEXT: Struct tag
48// CHECK-CC2-NEXT: Class name
49// CHECK-CC2-NEXT: Nested name specifier
50// CHECK-CC2-NEXT: Objective-C interface
51
52// RUN: c-index-test -code-completion-at=%s:16:5 %s | FileCheck -check-prefix=CHECK-CC3 %s
53// CHECK-CC3: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter int}{RightParen )} (1)
54// CHECK-CC3: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter T}{RightParen )} (1)
55// CHECK-CC3: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter void *}{Comma , }{Text T}{Comma , }{Text T}{RightParen )} (1)
56// CHECK-CC3: Completion contexts:
57// CHECK-CC3-NEXT: Any type
58// CHECK-CC3-NEXT: Any value
59// CHECK-CC3-NEXT: Enum tag
60// CHECK-CC3-NEXT: Union tag
61// CHECK-CC3-NEXT: Struct tag
62// CHECK-CC3-NEXT: Class name
63// CHECK-CC3-NEXT: Nested name specifier
64// CHECK-CC3-NEXT: Objective-C interface
65
66// RUN: c-index-test -code-completion-at=%s:16:7 %s | FileCheck -check-prefix=CHECK-CC4 %s
67// CHECK-CC4: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{Text void *}{Comma , }{CurrentParameter T}{Comma , }{Text T}{RightParen )} (1)
68// CHECK-CC4: Completion contexts:
69// CHECK-CC4-NEXT: Any type
70// CHECK-CC4-NEXT: Any value
71// CHECK-CC4-NEXT: Enum tag
72// CHECK-CC4-NEXT: Union tag
73// CHECK-CC4-NEXT: Struct tag
74// CHECK-CC4-NEXT: Class name
75// CHECK-CC4-NEXT: Nested name specifier
76// CHECK-CC4-NEXT: Objective-C interface
77
78// RUN: c-index-test -code-completion-at=%s:16:10 %s | FileCheck -check-prefix=CHECK-CC5 %s
79// CHECK-CC5: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{Text void *}{Comma , }{Text S<void *>}{Comma , }{CurrentParameter S<void *>}{RightParen )} (1)
80// CHECK-CC5: Completion contexts:
81// CHECK-CC5-NEXT: Any type
82// CHECK-CC5-NEXT: Any value
83// CHECK-CC5-NEXT: Enum tag
84// CHECK-CC5-NEXT: Union tag
85// CHECK-CC5-NEXT: Struct tag
86// CHECK-CC5-NEXT: Class name
87// CHECK-CC5-NEXT: Nested name specifier
88// CHECK-CC5-NEXT: Objective-C interface
89
90// RUN: c-index-test -code-completion-at=%s:17:17 %s | FileCheck -check-prefix=CHECK-CC6 %s
91// CHECK-CC6: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter int}{RightParen )} (1)
92// CHECK-CC6: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter T}{RightParen )} (1)
93// CHECK-CC6: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter void *}{Comma , }{Text T}{Comma , }{Text T}{RightParen )} (1)
94// CHECK-CC6: OverloadCandidate:{ResultType const S<T> *}{Text operator()}{LeftParen (}{CurrentParameter const S<T> &s}{RightParen )} (1)
95// CHECK-CC6: Completion contexts:
96// CHECK-CC6-NEXT: Any type
97// CHECK-CC6-NEXT: Any value
98// CHECK-CC6-NEXT: Enum tag
99// CHECK-CC6-NEXT: Union tag
100// CHECK-CC6-NEXT: Struct tag
101// CHECK-CC6-NEXT: Class name
102// CHECK-CC6-NEXT: Nested name specifier
103// CHECK-CC6-NEXT: Objective-C interface
104
105// RUN: c-index-test -code-completion-at=%s:17:28 %s | FileCheck -check-prefix=CHECK-CC7 %s
106// CHECK-CC7: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter int}{RightParen )} (1)
107// CHECK-CC7: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter T}{RightParen )} (1)
108// CHECK-CC7: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{CurrentParameter int}{Comma , }{Text T}{Comma , }{Text T}{RightParen )} (1)
109// CHECK-CC7: OverloadCandidate:{ResultType const S<T> *}{Text operator()}{LeftParen (}{CurrentParameter const S<T> &s}{RightParen )} (1)
110// CHECK-CC7: Completion contexts:
111// CHECK-CC7-NEXT: Any type
112// CHECK-CC7-NEXT: Any value
113// CHECK-CC7-NEXT: Enum tag
114// CHECK-CC7-NEXT: Union tag
115// CHECK-CC7-NEXT: Struct tag
116// CHECK-CC7-NEXT: Class name
117// CHECK-CC7-NEXT: Nested name specifier
118// CHECK-CC7-NEXT: Objective-C interface
119
120// RUN: c-index-test -code-completion-at=%s:17:31 %s | FileCheck -check-prefix=CHECK-CC8 %s
121// CHECK-CC8: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{Text int}{Comma , }{CurrentParameter T}{Comma , }{Text T}{RightParen )} (1)
122// CHECK-CC8: Completion contexts:
123// CHECK-CC8-NEXT: Any type
124// CHECK-CC8-NEXT: Any value
125// CHECK-CC8-NEXT: Enum tag
126// CHECK-CC8-NEXT: Union tag
127// CHECK-CC8-NEXT: Struct tag
128// CHECK-CC8-NEXT: Class name
129// CHECK-CC8-NEXT: Nested name specifier
130// CHECK-CC8-NEXT: Objective-C interface
131
132// RUN: c-index-test -code-completion-at=%s:17:35 %s | FileCheck -check-prefix=CHECK-CC9 %s
133// CHECK-CC9: OverloadCandidate:{ResultType void}{Text operator()}{LeftParen (}{Text int}{Comma , }{Text int}{Comma , }{CurrentParameter int}{RightParen )} (1)
134// CHECK-CC9: Completion contexts:
135// CHECK-CC9-NEXT: Any type
136// CHECK-CC9-NEXT: Any value
137// CHECK-CC9-NEXT: Enum tag
138// CHECK-CC9-NEXT: Union tag
139// CHECK-CC9-NEXT: Struct tag
140// CHECK-CC9-NEXT: Class name
141// CHECK-CC9-NEXT: Nested name specifier
142// CHECK-CC9-NEXT: Objective-C interface
143
144// RUN: c-index-test -code-completion-at=%s:19:8 %s | FileCheck -check-prefix=CHECK-CC10 %s
145// CHECK-CC10: Completion contexts:
146// CHECK-CC10-NEXT: Any type
147// CHECK-CC10-NEXT: Any value
148// CHECK-CC10-NEXT: Enum tag
149// CHECK-CC10-NEXT: Union tag
150// CHECK-CC10-NEXT: Struct tag
151// CHECK-CC10-NEXT: Class name
152// CHECK-CC10-NEXT: Nested name specifier
153// CHECK-CC10-NEXT: Objective-C interface
154
155// RUN: c-index-test -code-completion-at=%s:20:7 %s | FileCheck -check-prefix=CHECK-CC11 %s
156// CHECK-CC11: Completion contexts:
157// CHECK-CC11-NEXT: Any type
158// CHECK-CC11-NEXT: Any value
159// CHECK-CC11-NEXT: Enum tag
160// CHECK-CC11-NEXT: Union tag
161// CHECK-CC11-NEXT: Struct tag
162// CHECK-CC11-NEXT: Class name
163// CHECK-CC11-NEXT: Nested name specifier
164// CHECK-CC11-NEXT: Objective-C interface
165
166// RUN: c-index-test -code-completion-at=%s:21:15 %s | FileCheck -check-prefix=CHECK-CC12 %s
167// CHECK-CC12: Completion contexts:
168// CHECK-CC12-NEXT: Any type
169// CHECK-CC12-NEXT: Any value
170// CHECK-CC12-NEXT: Enum tag
171// CHECK-CC12-NEXT: Union tag
172// CHECK-CC12-NEXT: Struct tag
173// CHECK-CC12-NEXT: Class name
174// CHECK-CC12-NEXT: Nested name specifier
175// CHECK-CC12-NEXT: Objective-C interface