1 // RUN: %check_clang_tidy %s readability-redundant-access-specifiers %t 2 3 class FooPublic { 4 public: 5 int a; 6 public: // comment-0 7 // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: redundant access specifier has the same accessibility as the previous access specifier [readability-redundant-access-specifiers] 8 // CHECK-MESSAGES: :[[@LINE-4]]:1: note: previously declared here 9 // CHECK-FIXES: {{^}}// comment-0{{$}} 10 int b; 11 private: 12 int c; 13 }; 14 15 struct StructPublic { 16 public: 17 int a; 18 public: // comment-1 19 // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: redundant access specifier has the same accessibility as the previous access specifier [readability-redundant-access-specifiers] 20 // CHECK-MESSAGES: :[[@LINE-4]]:1: note: previously declared here 21 // CHECK-FIXES: {{^}}// comment-1{{$}} 22 int b; 23 private: 24 int c; 25 }; 26 27 union UnionPublic { 28 public: 29 int a; 30 public: // comment-2 31 // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: redundant access specifier has the same accessibility as the previous access specifier [readability-redundant-access-specifiers] 32 // CHECK-MESSAGES: :[[@LINE-4]]:1: note: previously declared here 33 // CHECK-FIXES: {{^}}// comment-2{{$}} 34 int b; 35 private: 36 int c; 37 }; 38 39 class FooProtected { 40 protected: 41 int a; 42 protected: // comment-3 43 // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: redundant access specifier has the same accessibility as the previous access specifier [readability-redundant-access-specifiers] 44 // CHECK-MESSAGES: :[[@LINE-4]]:1: note: previously declared here 45 // CHECK-FIXES: {{^}}// comment-3{{$}} 46 int b; 47 private: 48 int c; 49 }; 50 51 class FooPrivate { 52 private: 53 int a; 54 private: // comment-4 55 // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: redundant access specifier has the same accessibility as the previous access specifier [readability-redundant-access-specifiers] 56 // CHECK-MESSAGES: :[[@LINE-4]]:1: note: previously declared here 57 // CHECK-FIXES: {{^}}// comment-4{{$}} 58 int b; 59 public: 60 int c; 61 }; 62 63 class FooMacro { 64 private: 65 int a; 66 #if defined(ZZ) 67 public: 68 int b; 69 #endif 70 private: // comment-5 71 // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: redundant access specifier has the same accessibility as the previous access specifier [readability-redundant-access-specifiers] 72 // CHECK-MESSAGES: :[[@LINE-8]]:1: note: previously declared here 73 // CHECK-FIXES: {{^}}// comment-5{{$}} 74 int c; 75 protected: 76 int d; 77 public: 78 int e; 79 }; 80 81 class Valid { 82 private: 83 int a; 84 public: 85 int b; 86 private: 87 int c; 88 protected: 89 int d; 90 public: 91 int e; 92 }; 93 94 class ValidInnerClass { 95 public: 96 int a; 97 98 class Inner { 99 public: 100 int b; 101 }; 102 }; 103 104 #define MIXIN private: int b; 105 106 class ValidMacro { 107 private: 108 int a; 109 MIXIN 110 private: 111 int c; 112 protected: 113 int d; 114 public: 115 int e; 116 }; 117