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 GoffartDerived::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 GoffartDerived::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 GoffartDerived::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