brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.5 KiB · fb7eeed Raw
165 lines · cpp
1// RUN: %check_clang_tidy %s misc-confusable-identifiers %t2 3int l0;4int lO;5// CHECK-MESSAGES: :[[#@LINE-1]]:5: warning: 'lO' is confusable with 'l0' [misc-confusable-identifiers]6// CHECK-MESSAGES: :[[#@LINE-3]]:5: note: other declaration found here7 8void no() {9  int 𝐟oo;10}11 12void worry() {13  int foo;14}15int l1;16int ll;17// CHECK-MESSAGES: :[[#@LINE-1]]:5: warning: 'll' is confusable with 'l1' [misc-confusable-identifiers]18// CHECK-MESSAGES: :[[#@LINE-3]]:5: note: other declaration found here19 20bool f0(const char *q1, const char *ql) {21  // CHECK-MESSAGES: :[[#@LINE-1]]:37: warning: 'ql' is confusable with 'q1' [misc-confusable-identifiers]22  // CHECK-MESSAGES: :[[#@LINE-2]]:21: note: other declaration found here23  return q1 < ql;24}25 26// should not print anything27namespace ns {28struct Foo {};29} // namespace ns30auto f = ns::Foo();31 32struct Test {33  void f1(const char *pl);34};35 36bool f2(const char *p1, const char *ql) {37  return p1 < ql;38}39 40bool f3(const char *q0, const char *q1) {41  return q0 < q1;42}43 44template <typename i1>45struct S {46  template <typename il>47  void f4() {}48  // CHECK-MESSAGES: :[[#@LINE-2]]:22: warning: 'il' is confusable with 'i1' [misc-confusable-identifiers]49  // CHECK-MESSAGES: :[[#@LINE-5]]:20: note: other declaration found here50};51 52template <typename i1>53void f5(int il) {54  // CHECK-MESSAGES: :[[#@LINE-1]]:13: warning: 'il' is confusable with 'i1' [misc-confusable-identifiers]55  // CHECK-MESSAGES: :[[#@LINE-3]]:20: note: other declaration found here56}57 58namespace f7 {59int i1;60}61 62namespace f8 {63int il; // no warning, different namespace64}65 66namespace f7 {67int il;68// CHECK-MESSAGES: :[[#@LINE-1]]:5: warning: 'il' is confusable with 'i1' [misc-confusable-identifiers]69// CHECK-MESSAGES: :[[#@LINE-10]]:5: note: other declaration found here70} // namespace f771 72template <typename t1, typename tl>73// CHECK-MESSAGES: :[[#@LINE-1]]:33: warning: 'tl' is confusable with 't1' [misc-confusable-identifiers]74// CHECK-MESSAGES: :[[#@LINE-2]]:20: note: other declaration found here75void f9();76 77namespace different_contexts {78  // No warning for names in unrelated contexts.79  template <typename u1> void different_templates_1();80  template <typename ul> void different_templates_2();81  namespace inner {82    int ul;83  }84}85 86namespace same_template {87  template <typename u1, typename ul> using T = int;88  // CHECK-MESSAGES: :[[#@LINE-1]]:35: warning: 'ul' is confusable with 'u1' [misc-confusable-identifiers]89  // CHECK-MESSAGES: :[[#@LINE-2]]:22: note: other declaration found here90 91  template <typename v1, typename vl> int n;92  // CHECK-MESSAGES: :[[#@LINE-1]]:35: warning: 'vl' is confusable with 'v1' [misc-confusable-identifiers]93  // CHECK-MESSAGES: :[[#@LINE-2]]:22: note: other declaration found here94 95  template <typename w1> int wl;96  // CHECK-MESSAGES: :[[#@LINE-1]]:22: warning: 'w1' is confusable with 'wl' [misc-confusable-identifiers]97  // CHECK-MESSAGES: :[[#@LINE-2]]:30: note: other declaration found here98 99  int xl;100  template <typename x1> int x;101  // CHECK-MESSAGES: :[[#@LINE-1]]:22: warning: 'x1' is confusable with 'xl' [misc-confusable-identifiers]102  // CHECK-MESSAGES: :[[#@LINE-3]]:7: note: other declaration found here103}104 105namespace f10 {106int il;107namespace inner {108  int i1;109  // CHECK-MESSAGES: :[[#@LINE-1]]:7: warning: 'i1' is confusable with 'il' [misc-confusable-identifiers]110  // CHECK-MESSAGES: :[[#@LINE-4]]:5: note: other declaration found here111  int j1;112  // CHECK-MESSAGES: :[[#@LINE-1]]:7: warning: 'j1' is confusable with 'jl' [misc-confusable-identifiers]113  // CHECK-MESSAGES: :[[#@LINE+2]]:5: note: other declaration found here114}115int jl;116}117 118struct Base0 {119  virtual void mO0();120 121private:122  void mII();123};124 125struct Derived0 : Base0 {126  void mOO();127  // CHECK-MESSAGES: :[[#@LINE-1]]:8: warning: 'mOO' is confusable with 'mO0' [misc-confusable-identifiers]128  // CHECK-MESSAGES: :[[#@LINE-9]]:16: note: other declaration found here129 130  void mI1(); // no warning: mII is private131};132 133struct Base1 {134  long mO0;135 136private:137  long mII;138};139 140struct Derived1 : Base1 {141  long mOO;142  // CHECK-MESSAGES: :[[#@LINE-1]]:8: warning: 'mOO' is confusable with 'mO0' [misc-confusable-identifiers]143  // CHECK-MESSAGES: :[[#@LINE-9]]:8: note: other declaration found here144 145  long mI1(); // no warning: mII is private146};147 148struct Base2 {149  long nO0;150 151private:152  long nII;153};154 155struct Mid2 : Base0, Base1, Base2 {156};157 158struct Derived2 : Mid2 {159  long nOO;160  // CHECK-MESSAGES: :[[#@LINE-1]]:8: warning: 'nOO' is confusable with 'nO0' [misc-confusable-identifiers]161  // CHECK-MESSAGES: :[[#@LINE-12]]:8: note: other declaration found here162 163  long nI1(); // no warning: mII is private164};165