xref: /llvm-project/clang/test/CodeCompletion/ctor-initializer.cpp (revision cf9b25e0adc42546e4dc5ff51ee8674d45bac26b)
1f9e890cbSOlivier Goffart struct Base1 {
Base1Base12f9e890cbSOlivier Goffart   Base1() : {}
3*cf9b25e0SSam McCall   // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-1):12 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
4*cf9b25e0SSam McCall   // RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-2):12 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
5fabaaaaaSKadir Cetinkaya   // CHECK-CC1: COMPLETION: Pattern : member1(<#int#>)
6fabaaaaaSKadir Cetinkaya   // CHECK-CC1: COMPLETION: Pattern : member2(<#float#>)
7f9e890cbSOlivier Goffart 
Base1Base18f9e890cbSOlivier Goffart   Base1(int) : member1(123), {}
9*cf9b25e0SSam McCall   // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-1):30 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s
10*cf9b25e0SSam McCall   // RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-2):30 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s
11fabaaaaaSKadir Cetinkaya   // CHECK-CC2-NOT: COMPLETION: Pattern : member1(<#int#>)
12fabaaaaaSKadir Cetinkaya   // CHECK-CC2: COMPLETION: Pattern : member2(<#float#>)
13f9e890cbSOlivier Goffart 
14f9e890cbSOlivier Goffart   int member1;
15f9e890cbSOlivier Goffart   float member2;
16f9e890cbSOlivier Goffart };
17f9e890cbSOlivier Goffart 
18f9e890cbSOlivier Goffart struct Derived : public Base1 {
19f9e890cbSOlivier Goffart   Derived();
20f9e890cbSOlivier Goffart   Derived(int);
21f9e890cbSOlivier Goffart   Derived(float);
22f9e890cbSOlivier Goffart   int deriv1;
23f9e890cbSOlivier Goffart };
24f9e890cbSOlivier Goffart 
Derived()25f9e890cbSOlivier Goffart Derived::Derived() : {}
26*cf9b25e0SSam McCall // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-1):22 %s -o - | FileCheck -check-prefix=CHECK-CC3 %s
27*cf9b25e0SSam McCall // RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-2):22 %s -o - | FileCheck -check-prefix=CHECK-CC3 %s
28fabaaaaaSKadir Cetinkaya // CHECK-CC3: COMPLETION: Pattern : Base1()
29fabaaaaaSKadir Cetinkaya // CHECK-CC3: COMPLETION: Pattern : Base1(<#int#>)
30fabaaaaaSKadir Cetinkaya // CHECK-CC3: COMPLETION: Pattern : deriv1(<#int#>)
31f9e890cbSOlivier Goffart 
Derived(int)32f9e890cbSOlivier Goffart Derived::Derived(int) try : {
33f9e890cbSOlivier Goffart } catch (...) {
34f9e890cbSOlivier Goffart }
35*cf9b25e0SSam McCall // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-3):29 %s -o - | FileCheck -check-prefix=CHECK-CC3 %s
36*cf9b25e0SSam McCall // RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-4):29 %s -o - | FileCheck -check-prefix=CHECK-CC3 %s
37f9e890cbSOlivier Goffart 
Derived(float)38f9e890cbSOlivier Goffart Derived::Derived(float) try : Base1(),
39f9e890cbSOlivier Goffart {
40f9e890cbSOlivier Goffart } catch (...) {
41f9e890cbSOlivier Goffart }
42*cf9b25e0SSam McCall // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-4):39 %s -o - | FileCheck -check-prefix=CHECK-CC5 %s
43*cf9b25e0SSam McCall // RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-5):39 %s -o - | FileCheck -check-prefix=CHECK-CC5 %s
44fabaaaaaSKadir Cetinkaya // CHECK-CC5-NOT: COMPLETION: Pattern : Base1
45fabaaaaaSKadir Cetinkaya // CHECK-CC5: COMPLETION: Pattern : deriv1(<#int#>)
463cd10137SOlivier Goffart 
473cd10137SOlivier Goffart struct A {
AA483cd10137SOlivier Goffart   A() : , member2() {}
49*cf9b25e0SSam McCall   // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-1):9 %s -o - | FileCheck -check-prefix=CHECK-CC6 %s
50*cf9b25e0SSam McCall   // RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-2):9 %s -o - | FileCheck -check-prefix=CHECK-CC6 %s
51fabaaaaaSKadir Cetinkaya   // CHECK-CC6: COMPLETION: Pattern : member1(<#int#>)
523cd10137SOlivier Goffart   int member1, member2;
533cd10137SOlivier Goffart };
543cd10137SOlivier Goffart 
553cd10137SOlivier Goffart struct B {
BB563cd10137SOlivier Goffart   B() : member2() {}
57*cf9b25e0SSam McCall   // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-1):9 %s -o - | FileCheck -check-prefix=CHECK-CC7 %s
58*cf9b25e0SSam McCall   // RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-2):9 %s -o - | FileCheck -check-prefix=CHECK-CC7 %s
59fabaaaaaSKadir Cetinkaya   // CHECK-CC7: COMPLETION: Pattern : member1(<#int#>)
60ef4ece75SIlya Biryukov   // Check in the middle and at the end of identifier too.
61*cf9b25e0SSam McCall   // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-5):13 %s -o - | FileCheck -check-prefix=CHECK-CC8 %s
62*cf9b25e0SSam McCall   // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-6):16 %s -o - | FileCheck -check-prefix=CHECK-CC8 %s
63fabaaaaaSKadir Cetinkaya   // CHECK-CC8: COMPLETION: Pattern : member2(<#int#>)
643cd10137SOlivier Goffart   int member1, member2;
653cd10137SOlivier Goffart };
6684774c3aSKadir Cetinkaya 
6784774c3aSKadir Cetinkaya struct Base2 {
6884774c3aSKadir Cetinkaya   Base2(int);
6984774c3aSKadir Cetinkaya };
7084774c3aSKadir Cetinkaya 
7184774c3aSKadir Cetinkaya struct Composition1 {
Composition1Composition172fabaaaaaSKadir Cetinkaya   Composition1() : b2_elem(2) {}
73*cf9b25e0SSam McCall   // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-1):28 %s -o - | FileCheck -check-prefix=CHECK-CC9 %s
74*cf9b25e0SSam McCall   // RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-2):28 %s -o - | FileCheck -check-prefix=CHECK-CC9 %s
7584774c3aSKadir Cetinkaya   // CHECK-CC9: OVERLOAD: Base2(<#int#>)
7684774c3aSKadir Cetinkaya   // CHECK-CC9: OVERLOAD: Base2(<#const Base2 &#>)
7784774c3aSKadir Cetinkaya   // CHECK-CC9-NOT: OVERLOAD: Composition1
7884774c3aSKadir Cetinkaya   Composition1(Base2);
7984774c3aSKadir Cetinkaya   Base2 b2_elem;
8084774c3aSKadir Cetinkaya };
8184774c3aSKadir Cetinkaya 
8284774c3aSKadir Cetinkaya struct Composition2 {
Composition2Composition28384774c3aSKadir Cetinkaya   Composition2() : c1_elem(Base2(1)) {}
84*cf9b25e0SSam McCall   // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-1):34 %s -o - | FileCheck -check-prefix=CHECK-CC9 %s
85*cf9b25e0SSam McCall   // RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-2):34 %s -o - | FileCheck -check-prefix=CHECK-CC9 %s
86*cf9b25e0SSam McCall   // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-3):35 %s -o - | FileCheck -check-prefix=CHECK-CC9 %s
87*cf9b25e0SSam McCall   // RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-4):35 %s -o - | FileCheck -check-prefix=CHECK-CC9 %s
8884774c3aSKadir Cetinkaya   Composition1 c1_elem;
8984774c3aSKadir Cetinkaya };
90*cf9b25e0SSam McCall // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-7):20 %s -o - | FileCheck -check-prefix=CHECK-CC10 %s
91*cf9b25e0SSam McCall // RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-8):20 %s -o - | FileCheck -check-prefix=CHECK-CC10 %s
92fabaaaaaSKadir Cetinkaya // CHECK-CC10: Pattern : c1_elem()
93fabaaaaaSKadir Cetinkaya // CHECK-CC10: Pattern : c1_elem(<#Base2#>)
94fabaaaaaSKadir Cetinkaya 
95fabaaaaaSKadir Cetinkaya template <class T>
96fabaaaaaSKadir Cetinkaya struct Y : T {};
97fabaaaaaSKadir Cetinkaya 
98fabaaaaaSKadir Cetinkaya template <class T>
99fabaaaaaSKadir Cetinkaya struct X : Y<T> {
XX100fabaaaaaSKadir Cetinkaya   X() : Y<T>() {};
101fabaaaaaSKadir Cetinkaya };
102fabaaaaaSKadir Cetinkaya 
103*cf9b25e0SSam McCall // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-3):9 %s -o - | FileCheck -check-prefix=CHECK-CC11 %s
104*cf9b25e0SSam McCall // RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-4):9 %s -o - | FileCheck -check-prefix=CHECK-CC11 %s
105fabaaaaaSKadir Cetinkaya // CHECK-CC11: Pattern : Y<T>(<#Y<T>#>)
106d8716cd7SSam McCall 
107d8716cd7SSam McCall // Test with incomplete init lists. (Relevant as parsing is *not* cut off).
108d8716cd7SSam McCall struct Incomplete1 {
109d8716cd7SSam McCall   Incomplete1() : mem
110d8716cd7SSam McCall 
111d8716cd7SSam McCall   int member1;
112d8716cd7SSam McCall   int member2;
113d8716cd7SSam McCall };
114*cf9b25e0SSam McCall // RUN: not %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-5):19 %s -o - | FileCheck -check-prefix=CHECK-CC12 %s
115d8716cd7SSam McCall // CHECK-CC12: COMPLETION: Pattern : member1(<#int#>)
116d8716cd7SSam McCall // CHECK-CC12: COMPLETION: Pattern : member2(<#int#>)
117d8716cd7SSam McCall 
118d8716cd7SSam McCall struct Incomplete2 {
119d8716cd7SSam McCall   Incomplete2() : member2(
120d8716cd7SSam McCall 
121d8716cd7SSam McCall   int member1;
122d8716cd7SSam McCall   int member2;
123d8716cd7SSam McCall };
124*cf9b25e0SSam McCall // RUN: not %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-5):27 %s -o - | FileCheck -check-prefix=CHECK-CC13 %s
125d8716cd7SSam McCall // CHECK-CC13: PREFERRED-TYPE: int
126