brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · cb5d100 Raw
125 lines · cpp
1// RUN: %clang_cc1 -ast-print -triple i386-linux-gnu %s -o - -std=c++20 | FileCheck %s2 3// CHECK: struct DelegatingCtor1 {4struct DelegatingCtor1 {5  // CHECK-NEXT: DelegatingCtor1();6  DelegatingCtor1();7 8  // CHECK-NEXT: DelegatingCtor1(int) : DelegatingCtor1() {9  DelegatingCtor1(int) : DelegatingCtor1() {10    // CHECK-NEXT: }11  }12 13  // CHECK-NEXT: };14};15 16 17// CHECK: struct DelegatingCtor2 {18struct DelegatingCtor2 {19  // CHECK-NEXT: template <typename Ty> DelegatingCtor2(Ty);20  template <typename Ty> DelegatingCtor2(Ty);21 22  // FIXME: Implicitly specialized method should not be output23  // CHECK-NEXT: template<> DelegatingCtor2<float>(float);24 25  // CHECK-NEXT: DelegatingCtor2(int X) : DelegatingCtor2((float)X) {26  DelegatingCtor2(int X) : DelegatingCtor2((float)X) {27  // CHECK-NEXT: }28  }29 30  // CHECK-NEXT: };31};32 33// CHECK: struct DelegatingCtor3 {34struct DelegatingCtor3 {35  // CHECK: DelegatingCtor3(auto);36  DelegatingCtor3(auto);37 38  // FIXME: Implicitly specialized method should not be output39  // CHECK: template<> DelegatingCtor3<const char *>(const char *);40 41  // CHECK: DelegatingCtor3(int) : DelegatingCtor3("") {42  DelegatingCtor3(int) : DelegatingCtor3("") {43  // CHECK-NEXT: }44  }45 46  // CHECK-NEXT: };47};48 49// CHECK: struct CurlyCtorInit {50struct CurlyCtorInit {51  // CHECK-NEXT: struct A {52  struct A {53    // CHECK-NEXT: int x;54    int x;55  // CHECK-NEXT: };56  };57 58  // CHECK-NEXT: A a;59  A a;60  // CHECK-NEXT: int i;61  int i;62 63  // FIXME: /*implicit*/(int)0 should not be output64  // CHECK-NEXT: CurlyCtorInit(int *) : a(), i(/*implicit*/(int)0) {65  CurlyCtorInit(int *) : a(), i() {66  // CHECK-NEXT: }67  }68 69  // CHECK-NEXT: CurlyCtorInit(int **) : a{}, i{} {70  CurlyCtorInit(int **) : a{}, i{} {71  // CHECK-NEXT: }72  }73 74  // CHECK-NEXT: CurlyCtorInit(int ***) : a({}), i(0) {75  CurlyCtorInit(int ***) : a({}), i(0) {76  // CHECK-NEXT: }77  }78 79  // FIXME: Implicit this should not be output80  // CHECK-NEXT: CurlyCtorInit(int ****) : a({.x = 0}), i(this->a.x) {81  CurlyCtorInit(int ****) : a({.x = 0}), i(a.x) {82  // CHECK-NEXT: }83  }84 85  // CHECK-NEXT: };86};87 88 89// CHECK: struct DefMethodsWithoutBody {90struct DefMethodsWithoutBody {91  // CHECK-NEXT: DefMethodsWithoutBody() = delete;92  DefMethodsWithoutBody() = delete;93 94  // CHECK-NEXT: DefMethodsWithoutBody() = default;95  ~DefMethodsWithoutBody() = default;96 97  // CHECK-NEXT: void m1() __attribute__((alias("X")));98  void m1() __attribute__((alias("X")));99 100  // CHECK-NEXT: };101};102 103 104// ---- Check that implict (non-written) constructor initializers are not output105 106struct ImplicitCtorInit1 {107  int a;108};109 110// CHECK: struct ImplicitCtorInit2 : ImplicitCtorInit1 {111struct ImplicitCtorInit2 : ImplicitCtorInit1 {112 113  // CHECK-NEXT: ImplicitCtorInit2(int *) {114  ImplicitCtorInit2(int *) {115  // CHECK-NEXT: }116  }117 118  // CHECK-NEXT: ImplicitCtorInit2(int **) : ImplicitCtorInit1() {119  ImplicitCtorInit2(int **) : ImplicitCtorInit1() {120  // CHECK-NEXT: }121  }122 123  // CHECK-NEXT: };124};125