126 lines · cpp
1struct Base1 {2 Base1() : {}3 // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-1):12 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s4 // RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-2):12 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s5 // CHECK-CC1: COMPLETION: Pattern : member1(<#int#>)6 // CHECK-CC1: COMPLETION: Pattern : member2(<#float#>)7 8 Base1(int) : member1(123), {}9 // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-1):30 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s10 // RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-2):30 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s11 // CHECK-CC2-NOT: COMPLETION: Pattern : member1(<#int#>)12 // CHECK-CC2: COMPLETION: Pattern : member2(<#float#>)13 14 int member1;15 float member2;16};17 18struct Derived : public Base1 {19 Derived();20 Derived(int);21 Derived(float);22 int deriv1;23};24 25Derived::Derived() : {}26// RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-1):22 %s -o - | FileCheck -check-prefix=CHECK-CC3 %s27// RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-2):22 %s -o - | FileCheck -check-prefix=CHECK-CC3 %s28// CHECK-CC3: COMPLETION: Pattern : Base1()29// CHECK-CC3: COMPLETION: Pattern : Base1(<#int#>)30// CHECK-CC3: COMPLETION: Pattern : deriv1(<#int#>)31 32Derived::Derived(int) try : {33} catch (...) {34}35// RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-3):29 %s -o - | FileCheck -check-prefix=CHECK-CC3 %s36// RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-4):29 %s -o - | FileCheck -check-prefix=CHECK-CC3 %s37 38Derived::Derived(float) try : Base1(),39{40} catch (...) {41}42// RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-4):39 %s -o - | FileCheck -check-prefix=CHECK-CC5 %s43// RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-5):39 %s -o - | FileCheck -check-prefix=CHECK-CC5 %s44// CHECK-CC5-NOT: COMPLETION: Pattern : Base145// CHECK-CC5: COMPLETION: Pattern : deriv1(<#int#>)46 47struct A {48 A() : , member2() {}49 // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-1):9 %s -o - | FileCheck -check-prefix=CHECK-CC6 %s50 // RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-2):9 %s -o - | FileCheck -check-prefix=CHECK-CC6 %s51 // CHECK-CC6: COMPLETION: Pattern : member1(<#int#>)52 int member1, member2;53};54 55struct B {56 B() : member2() {}57 // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-1):9 %s -o - | FileCheck -check-prefix=CHECK-CC7 %s58 // RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-2):9 %s -o - | FileCheck -check-prefix=CHECK-CC7 %s59 // CHECK-CC7: COMPLETION: Pattern : member1(<#int#>)60 // Check in the middle and at the end of identifier too.61 // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-5):13 %s -o - | FileCheck -check-prefix=CHECK-CC8 %s62 // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-6):16 %s -o - | FileCheck -check-prefix=CHECK-CC8 %s63 // CHECK-CC8: COMPLETION: Pattern : member2(<#int#>)64 int member1, member2;65};66 67struct Base2 {68 Base2(int);69};70 71struct Composition1 {72 Composition1() : b2_elem(2) {}73 // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-1):28 %s -o - | FileCheck -check-prefix=CHECK-CC9 %s74 // RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-2):28 %s -o - | FileCheck -check-prefix=CHECK-CC9 %s75 // CHECK-CC9: OVERLOAD: Base2(<#int#>)76 // CHECK-CC9: OVERLOAD: Base2(<#const Base2 &#>)77 // CHECK-CC9-NOT: OVERLOAD: Composition178 Composition1(Base2);79 Base2 b2_elem;80};81 82struct Composition2 {83 Composition2() : c1_elem(Base2(1)) {}84 // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-1):34 %s -o - | FileCheck -check-prefix=CHECK-CC9 %s85 // RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-2):34 %s -o - | FileCheck -check-prefix=CHECK-CC9 %s86 // RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-3):35 %s -o - | FileCheck -check-prefix=CHECK-CC9 %s87 // RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-4):35 %s -o - | FileCheck -check-prefix=CHECK-CC9 %s88 Composition1 c1_elem;89};90// RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-7):20 %s -o - | FileCheck -check-prefix=CHECK-CC10 %s91// RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-8):20 %s -o - | FileCheck -check-prefix=CHECK-CC10 %s92// CHECK-CC10: Pattern : c1_elem()93// CHECK-CC10: Pattern : c1_elem(<#Base2#>)94 95template <class T>96struct Y : T {};97 98template <class T>99struct X : Y<T> {100 X() : Y<T>() {};101};102 103// RUN: %clang_cc1 -fsyntax-only -std=c++98 -code-completion-at=%s:%(line-3):9 %s -o - | FileCheck -check-prefix=CHECK-CC11 %s104// RUN: %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-4):9 %s -o - | FileCheck -check-prefix=CHECK-CC11 %s105// CHECK-CC11: Pattern : Y<T>(<#Y<T>#>)106 107// Test with incomplete init lists. (Relevant as parsing is *not* cut off).108struct Incomplete1 {109 Incomplete1() : mem110 111 int member1;112 int member2;113};114// RUN: not %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-5):19 %s -o - | FileCheck -check-prefix=CHECK-CC12 %s115// CHECK-CC12: COMPLETION: Pattern : member1(<#int#>)116// CHECK-CC12: COMPLETION: Pattern : member2(<#int#>)117 118struct Incomplete2 {119 Incomplete2() : member2(120 121 int member1;122 int member2;123};124// RUN: not %clang_cc1 -fsyntax-only -std=c++14 -code-completion-at=%s:%(line-5):27 %s -o - | FileCheck -check-prefix=CHECK-CC13 %s125// CHECK-CC13: PREFERRED-TYPE: int126