xref: /llvm-project/clang/test/Index/complete-constructor-params.cpp (revision 7ec9107fdce2b3029ad1119eb8fad0f7e554652e)
1975a9f6eSFrancisco Lopes da Silva // Note: the run lines follow their respective tests, since line/column
2975a9f6eSFrancisco Lopes da Silva // matter in this test.
3975a9f6eSFrancisco Lopes da Silva 
4975a9f6eSFrancisco Lopes da Silva template<class T>
5975a9f6eSFrancisco Lopes da Silva struct S {
6975a9f6eSFrancisco Lopes da Silva   template<class U>
SS7975a9f6eSFrancisco Lopes da Silva   S(T, U, U) {}
8975a9f6eSFrancisco Lopes da Silva };
9975a9f6eSFrancisco Lopes da Silva 
main()10975a9f6eSFrancisco Lopes da Silva int main() {
11975a9f6eSFrancisco Lopes da Silva   S<int>(42, 42, 42);
12975a9f6eSFrancisco Lopes da Silva   S<int>(42, 42, 42);
13975a9f6eSFrancisco Lopes da Silva   S<int> s(42, 42, 42);
14975a9f6eSFrancisco Lopes da Silva 
15975a9f6eSFrancisco Lopes da Silva   S<int>(42, 42, 42,);
16975a9f6eSFrancisco Lopes da Silva   S<int> z(42, 42, 42,);
17ee1d76f3SArgyrios Kyrtzidis 
18ee1d76f3SArgyrios Kyrtzidis   int(42);
19975a9f6eSFrancisco Lopes da Silva }
20975a9f6eSFrancisco Lopes da Silva 
21*7ec9107fSErik Verbruggen struct Foo {
22*7ec9107fSErik Verbruggen     Foo() = default;
23*7ec9107fSErik Verbruggen     Foo(const Foo&) = delete;
24*7ec9107fSErik Verbruggen };
25*7ec9107fSErik Verbruggen 
26*7ec9107fSErik Verbruggen struct Bar {
27*7ec9107fSErik Verbruggen     Foo f;
28*7ec9107fSErik Verbruggen };
29*7ec9107fSErik Verbruggen 
function()30*7ec9107fSErik Verbruggen void function() {
31*7ec9107fSErik Verbruggen     Bar b1;
32*7ec9107fSErik Verbruggen     Bar b2(b1);
33*7ec9107fSErik Verbruggen }
34*7ec9107fSErik Verbruggen 
35975a9f6eSFrancisco Lopes da Silva // RUN: c-index-test -code-completion-at=%s:11:10 %s | FileCheck -check-prefix=CHECK-CC1 %s
36975a9f6eSFrancisco Lopes da Silva // CHECK-CC1: OverloadCandidate:{Text S}{LeftParen (}{CurrentParameter const S<int> &}{RightParen )} (1)
370c010cddSFrancisco Lopes da Silva // CHECK-CC1: OverloadCandidate:{Text S}{LeftParen (}{CurrentParameter int}{Comma , }{Placeholder U}{Comma , }{Placeholder U}{RightParen )} (1)
38975a9f6eSFrancisco Lopes da Silva // CHECK-CC1: Completion contexts:
39975a9f6eSFrancisco Lopes da Silva // CHECK-CC1-NEXT: Any type
40975a9f6eSFrancisco Lopes da Silva // CHECK-CC1-NEXT: Any value
41975a9f6eSFrancisco Lopes da Silva // CHECK-CC1-NEXT: Enum tag
42975a9f6eSFrancisco Lopes da Silva // CHECK-CC1-NEXT: Union tag
43975a9f6eSFrancisco Lopes da Silva // CHECK-CC1-NEXT: Struct tag
44975a9f6eSFrancisco Lopes da Silva // CHECK-CC1-NEXT: Class name
45975a9f6eSFrancisco Lopes da Silva // CHECK-CC1-NEXT: Nested name specifier
46975a9f6eSFrancisco Lopes da Silva // CHECK-CC1-NEXT: Objective-C interface
47975a9f6eSFrancisco Lopes da Silva 
48975a9f6eSFrancisco Lopes da Silva // RUN: c-index-test -code-completion-at=%s:12:10 %s | FileCheck -check-prefix=CHECK-CC2 %s
49975a9f6eSFrancisco Lopes da Silva // CHECK-CC2: OverloadCandidate:{Text S}{LeftParen (}{CurrentParameter const S<int> &}{RightParen )} (1)
500c010cddSFrancisco Lopes da Silva // CHECK-CC2: OverloadCandidate:{Text S}{LeftParen (}{CurrentParameter int}{Comma , }{Placeholder U}{Comma , }{Placeholder U}{RightParen )} (1)
51975a9f6eSFrancisco Lopes da Silva // CHECK-CC2: Completion contexts:
52975a9f6eSFrancisco Lopes da Silva // CHECK-CC2-NEXT: Any type
53975a9f6eSFrancisco Lopes da Silva // CHECK-CC2-NEXT: Any value
54975a9f6eSFrancisco Lopes da Silva // CHECK-CC2-NEXT: Enum tag
55975a9f6eSFrancisco Lopes da Silva // CHECK-CC2-NEXT: Union tag
56975a9f6eSFrancisco Lopes da Silva // CHECK-CC2-NEXT: Struct tag
57975a9f6eSFrancisco Lopes da Silva // CHECK-CC2-NEXT: Class name
58975a9f6eSFrancisco Lopes da Silva // CHECK-CC2-NEXT: Nested name specifier
59975a9f6eSFrancisco Lopes da Silva // CHECK-CC2-NEXT: Objective-C interface
60975a9f6eSFrancisco Lopes da Silva 
61975a9f6eSFrancisco Lopes da Silva // RUN: c-index-test -code-completion-at=%s:12:13 %s | FileCheck -check-prefix=CHECK-CC3 %s
620c010cddSFrancisco Lopes da Silva // CHECK-CC3: OverloadCandidate:{Text S}{LeftParen (}{Placeholder int}{Comma , }{CurrentParameter U}{Comma , }{Placeholder U}{RightParen )} (1)
63975a9f6eSFrancisco Lopes da Silva // CHECK-CC3: Completion contexts:
64975a9f6eSFrancisco Lopes da Silva // CHECK-CC3-NEXT: Any type
65975a9f6eSFrancisco Lopes da Silva // CHECK-CC3-NEXT: Any value
66975a9f6eSFrancisco Lopes da Silva // CHECK-CC3-NEXT: Enum tag
67975a9f6eSFrancisco Lopes da Silva // CHECK-CC3-NEXT: Union tag
68975a9f6eSFrancisco Lopes da Silva // CHECK-CC3-NEXT: Struct tag
69975a9f6eSFrancisco Lopes da Silva // CHECK-CC3-NEXT: Class name
70975a9f6eSFrancisco Lopes da Silva // CHECK-CC3-NEXT: Nested name specifier
71975a9f6eSFrancisco Lopes da Silva // CHECK-CC3-NEXT: Objective-C interface
72975a9f6eSFrancisco Lopes da Silva 
73975a9f6eSFrancisco Lopes da Silva // RUN: c-index-test -code-completion-at=%s:12:17 %s | FileCheck -check-prefix=CHECK-CC4 %s
740c010cddSFrancisco Lopes da Silva // CHECK-CC4: OverloadCandidate:{Text S}{LeftParen (}{Placeholder int}{Comma , }{Placeholder int}{Comma , }{CurrentParameter int}{RightParen )} (1)
75975a9f6eSFrancisco Lopes da Silva // CHECK-CC4: Completion contexts:
76975a9f6eSFrancisco Lopes da Silva // CHECK-CC4-NEXT: Any type
77975a9f6eSFrancisco Lopes da Silva // CHECK-CC4-NEXT: Any value
78975a9f6eSFrancisco Lopes da Silva // CHECK-CC4-NEXT: Enum tag
79975a9f6eSFrancisco Lopes da Silva // CHECK-CC4-NEXT: Union tag
80975a9f6eSFrancisco Lopes da Silva // CHECK-CC4-NEXT: Struct tag
81975a9f6eSFrancisco Lopes da Silva // CHECK-CC4-NEXT: Class name
82975a9f6eSFrancisco Lopes da Silva // CHECK-CC4-NEXT: Nested name specifier
83975a9f6eSFrancisco Lopes da Silva // CHECK-CC4-NEXT: Objective-C interface
84975a9f6eSFrancisco Lopes da Silva 
85975a9f6eSFrancisco Lopes da Silva // RUN: c-index-test -code-completion-at=%s:13:12 %s | FileCheck -check-prefix=CHECK-CC5 %s
86975a9f6eSFrancisco Lopes da Silva // CHECK-CC5: OverloadCandidate:{Text S}{LeftParen (}{CurrentParameter const S<int> &}{RightParen )} (1)
870c010cddSFrancisco Lopes da Silva // CHECK-CC5: OverloadCandidate:{Text S}{LeftParen (}{CurrentParameter int}{Comma , }{Placeholder U}{Comma , }{Placeholder U}{RightParen )} (1)
88975a9f6eSFrancisco Lopes da Silva // CHECK-CC5: Completion contexts:
89975a9f6eSFrancisco Lopes da Silva // CHECK-CC5-NEXT: Any type
90975a9f6eSFrancisco Lopes da Silva // CHECK-CC5-NEXT: Any value
91975a9f6eSFrancisco Lopes da Silva // CHECK-CC5-NEXT: Enum tag
92975a9f6eSFrancisco Lopes da Silva // CHECK-CC5-NEXT: Union tag
93975a9f6eSFrancisco Lopes da Silva // CHECK-CC5-NEXT: Struct tag
94975a9f6eSFrancisco Lopes da Silva // CHECK-CC5-NEXT: Class name
95975a9f6eSFrancisco Lopes da Silva // CHECK-CC5-NEXT: Nested name specifier
96975a9f6eSFrancisco Lopes da Silva // CHECK-CC5-NEXT: Objective-C interface
97975a9f6eSFrancisco Lopes da Silva 
98975a9f6eSFrancisco Lopes da Silva // RUN: c-index-test -code-completion-at=%s:13:15 %s | FileCheck -check-prefix=CHECK-CC6 %s
990c010cddSFrancisco Lopes da Silva // CHECK-CC6: OverloadCandidate:{Text S}{LeftParen (}{Placeholder int}{Comma , }{CurrentParameter U}{Comma , }{Placeholder U}{RightParen )} (1)
100975a9f6eSFrancisco Lopes da Silva // CHECK-CC6: Completion contexts:
101975a9f6eSFrancisco Lopes da Silva // CHECK-CC6-NEXT: Any type
102975a9f6eSFrancisco Lopes da Silva // CHECK-CC6-NEXT: Any value
103975a9f6eSFrancisco Lopes da Silva // CHECK-CC6-NEXT: Enum tag
104975a9f6eSFrancisco Lopes da Silva // CHECK-CC6-NEXT: Union tag
105975a9f6eSFrancisco Lopes da Silva // CHECK-CC6-NEXT: Struct tag
106975a9f6eSFrancisco Lopes da Silva // CHECK-CC6-NEXT: Class name
107975a9f6eSFrancisco Lopes da Silva // CHECK-CC6-NEXT: Nested name specifier
108975a9f6eSFrancisco Lopes da Silva // CHECK-CC6-NEXT: Objective-C interface
109975a9f6eSFrancisco Lopes da Silva 
110975a9f6eSFrancisco Lopes da Silva // RUN: c-index-test -code-completion-at=%s:13:19 %s | FileCheck -check-prefix=CHECK-CC7 %s
1110c010cddSFrancisco Lopes da Silva // CHECK-CC7: OverloadCandidate:{Text S}{LeftParen (}{Placeholder int}{Comma , }{Placeholder int}{Comma , }{CurrentParameter int}{RightParen )} (1)
112975a9f6eSFrancisco Lopes da Silva // CHECK-CC7: Completion contexts:
113975a9f6eSFrancisco Lopes da Silva // CHECK-CC7-NEXT: Any type
114975a9f6eSFrancisco Lopes da Silva // CHECK-CC7-NEXT: Any value
115975a9f6eSFrancisco Lopes da Silva // CHECK-CC7-NEXT: Enum tag
116975a9f6eSFrancisco Lopes da Silva // CHECK-CC7-NEXT: Union tag
117975a9f6eSFrancisco Lopes da Silva // CHECK-CC7-NEXT: Struct tag
118975a9f6eSFrancisco Lopes da Silva // CHECK-CC7-NEXT: Class name
119975a9f6eSFrancisco Lopes da Silva // CHECK-CC7-NEXT: Nested name specifier
120975a9f6eSFrancisco Lopes da Silva // CHECK-CC7-NEXT: Objective-C interface
121975a9f6eSFrancisco Lopes da Silva 
122975a9f6eSFrancisco Lopes da Silva // RUN: c-index-test -code-completion-at=%s:15:21 %s | FileCheck -check-prefix=CHECK-CC8 %s
123975a9f6eSFrancisco Lopes da Silva // CHECK-CC8: Completion contexts:
124975a9f6eSFrancisco Lopes da Silva // CHECK-CC8-NEXT: Any type
125975a9f6eSFrancisco Lopes da Silva // CHECK-CC8-NEXT: Any value
126975a9f6eSFrancisco Lopes da Silva // CHECK-CC8-NEXT: Enum tag
127975a9f6eSFrancisco Lopes da Silva // CHECK-CC8-NEXT: Union tag
128975a9f6eSFrancisco Lopes da Silva // CHECK-CC8-NEXT: Struct tag
129975a9f6eSFrancisco Lopes da Silva // CHECK-CC8-NEXT: Class name
130975a9f6eSFrancisco Lopes da Silva // CHECK-CC8-NEXT: Nested name specifier
131975a9f6eSFrancisco Lopes da Silva // CHECK-CC8-NEXT: Objective-C interface
132975a9f6eSFrancisco Lopes da Silva 
133975a9f6eSFrancisco Lopes da Silva // RUN: c-index-test -code-completion-at=%s:16:23 %s | FileCheck -check-prefix=CHECK-CC9 %s
134975a9f6eSFrancisco Lopes da Silva // CHECK-CC9: Completion contexts:
135975a9f6eSFrancisco Lopes da Silva // CHECK-CC9-NEXT: Any type
136975a9f6eSFrancisco Lopes da Silva // CHECK-CC9-NEXT: Any value
137975a9f6eSFrancisco Lopes da Silva // CHECK-CC9-NEXT: Enum tag
138975a9f6eSFrancisco Lopes da Silva // CHECK-CC9-NEXT: Union tag
139975a9f6eSFrancisco Lopes da Silva // CHECK-CC9-NEXT: Struct tag
140975a9f6eSFrancisco Lopes da Silva // CHECK-CC9-NEXT: Class name
141975a9f6eSFrancisco Lopes da Silva // CHECK-CC9-NEXT: Nested name specifier
142975a9f6eSFrancisco Lopes da Silva // CHECK-CC9-NEXT: Objective-C interface
143ee1d76f3SArgyrios Kyrtzidis 
144ee1d76f3SArgyrios Kyrtzidis // RUN: c-index-test -code-completion-at=%s:18:7 %s | FileCheck -check-prefix=CHECK-CC10 %s
145ee1d76f3SArgyrios Kyrtzidis // CHECK-CC10: FunctionDecl:{ResultType int}{TypedText main}{LeftParen (}{RightParen )} (12)
146ee1d76f3SArgyrios Kyrtzidis // CHECK-CC10: Completion contexts:
147ee1d76f3SArgyrios Kyrtzidis // CHECK-CC10-NEXT: Any type
148ee1d76f3SArgyrios Kyrtzidis // CHECK-CC10-NEXT: Any value
149ee1d76f3SArgyrios Kyrtzidis // CHECK-CC10-NEXT: Enum tag
150ee1d76f3SArgyrios Kyrtzidis // CHECK-CC10-NEXT: Union tag
151ee1d76f3SArgyrios Kyrtzidis // CHECK-CC10-NEXT: Struct tag
152ee1d76f3SArgyrios Kyrtzidis // CHECK-CC10-NEXT: Class name
153ee1d76f3SArgyrios Kyrtzidis // CHECK-CC10-NEXT: Nested name specifier
154ee1d76f3SArgyrios Kyrtzidis // CHECK-CC10-NEXT: Objective-C interface
155*7ec9107fSErik Verbruggen 
156*7ec9107fSErik Verbruggen // RUN: c-index-test -code-completion-at=%s:32:12 -std=c++11 %s | FileCheck -check-prefix=CHECK-CC11 %s
157*7ec9107fSErik Verbruggen // CHECK-CC11-NOT: OverloadCandidate:{Text Bar}{LeftParen (}{CurrentParameter const Bar &}{RightParen )} (1)
158