1 // RUN: %check_clang_tidy %s misc-confusable-identifiers %t
2
3 int l0;
4 int 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 here
7
no()8 void no() {
9 int oo;
10 }
11
worry()12 void worry() {
13 int foo;
14 }
15 int l1;
16 int 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 here
19
f0(const char * q1,const char * ql)20 bool 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 here
23 return q1 < ql;
24 }
25
26 // should not print anything
27 namespace ns {
28 struct Foo {};
29 } // namespace ns
30 auto f = ns::Foo();
31
32 struct Test {
33 void f1(const char *pl);
34 };
35
f2(const char * p1,const char * ql)36 bool f2(const char *p1, const char *ql) {
37 return p1 < ql;
38 }
39
f3(const char * q0,const char * q1)40 bool f3(const char *q0, const char *q1) {
41 return q0 < q1;
42 }
43
44 template <typename i1>
45 struct S {
46 template <typename il>
f4S47 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 here
50 };
51
52 template <typename i1>
f5(int il)53 void 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 here
56 }
57
58 namespace f7 {
59 int i1;
60 }
61
62 namespace f8 {
63 int il; // no warning, different namespace
64 }
65
66 namespace f7 {
67 int 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 here
70 } // namespace f7
71
72 template <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 here
75 void f9();
76
77 struct Base0 {
78 virtual void mO0();
79
80 private:
81 void mII();
82 };
83
84 struct Derived0 : Base0 {
85 void mOO();
86 // CHECK-MESSAGES: :[[#@LINE-1]]:8: warning: 'mOO' is confusable with 'mO0' [misc-confusable-identifiers]
87 // CHECK-MESSAGES: :[[#@LINE-9]]:16: note: other declaration found here
88
89 void mI1(); // no warning: mII is private
90 };
91
92 struct Base1 {
93 long mO0;
94
95 private:
96 long mII;
97 };
98
99 struct Derived1 : Base1 {
100 long mOO;
101 // CHECK-MESSAGES: :[[#@LINE-1]]:8: warning: 'mOO' is confusable with 'mO0' [misc-confusable-identifiers]
102 // CHECK-MESSAGES: :[[#@LINE-9]]:8: note: other declaration found here
103
104 long mI1(); // no warning: mII is private
105 };
106