blob: 177b3e2116a82059d55c4a213fcecff9b2cc3738 [file] [log] [blame]
// RUN: %check_clang_tidy %s readability-identifier-naming %t -- \
// RUN: -config='{CheckOptions: [ \
// RUN: {key: readability-identifier-naming.MemberCase, value: CamelCase}, \
// RUN: {key: readability-identifier-naming.ParameterCase, value: CamelCase} \
// RUN: ]}' -- -fno-delayed-template-parsing
int set_up(int);
int clear(int);
class Foo {
public:
const int bar_baz; // comment-0
// CHECK-MESSAGES: :[[@LINE-1]]:13: warning: invalid case style for member 'bar_baz'
// CHECK-FIXES: {{^}} const int BarBaz; // comment-0
Foo(int Val) : bar_baz(Val) { // comment-1
// CHECK-FIXES: {{^}} Foo(int Val) : BarBaz(Val) { // comment-1
set_up(bar_baz); // comment-2
// CHECK-FIXES: {{^}} set_up(BarBaz); // comment-2
}
Foo() : Foo(0) {}
~Foo() {
clear(bar_baz); // comment-3
// CHECK-FIXES: {{^}} clear(BarBaz); // comment-3
}
int getBar() const { return bar_baz; } // comment-4
// CHECK-FIXES: {{^}} int getBar() const { return BarBaz; } // comment-4
};
class FooBar : public Foo {
public:
int getFancyBar() const {
return this->bar_baz; // comment-5
// CHECK-FIXES: {{^}} return this->BarBaz; // comment-5
}
};
int getBar(const Foo &Foo) {
return Foo.bar_baz; // comment-6
// CHECK-FIXES: {{^}} return Foo.BarBaz; // comment-6
}
int getBar(const FooBar &Foobar) {
return Foobar.bar_baz; // comment-7
// CHECK-FIXES: {{^}} return Foobar.BarBaz; // comment-7
}
int getFancyBar(const FooBar &Foobar) {
return Foobar.getFancyBar();
}
template <typename Dummy>
class TempTest : public Foo {
public:
TempTest() = default;
TempTest(int Val) : Foo(Val) {}
int getBar() const { return Foo::bar_baz; } // comment-8
// CHECK-FIXES: {{^}} int getBar() const { return Foo::BarBaz; } // comment-8
int getBar2() const { return this->bar_baz; } // comment-9
// CHECK-FIXES: {{^}} int getBar2() const { return this->BarBaz; } // comment-9
};
TempTest<int> x; //force an instantiation
int blah() {
return x.getBar2(); // gotta have a reference to the getBar2 so that the
// compiler will generate the function and resolve
// the DependantScopeMemberExpr
}
namespace Bug41122 {
namespace std {
// for this example we aren't bothered about how std::vector is treated
template <typename T> //NOLINT
class vector { //NOLINT
public:
void push_back(bool); //NOLINT
void pop_back(); //NOLINT
}; //NOLINT
}; // namespace std
class Foo {
std::vector<bool> &stack;
// CHECK-MESSAGES: :[[@LINE-1]]:22: warning: invalid case style for member 'stack' [readability-identifier-naming]
public:
Foo(std::vector<bool> &stack)
// CHECK-MESSAGES: :[[@LINE-1]]:26: warning: invalid case style for parameter 'stack' [readability-identifier-naming]
// CHECK-FIXES: {{^}} Foo(std::vector<bool> &Stack)
: stack(stack) {
// CHECK-FIXES: {{^}} : Stack(Stack) {
stack.push_back(true);
// CHECK-FIXES: {{^}} Stack.push_back(true);
}
~Foo() {
stack.pop_back();
// CHECK-FIXES: {{^}} Stack.pop_back();
}
};
}; // namespace Bug41122
namespace Bug29005 {
class Foo {
public:
int a_member_of_foo = 0;
// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for member 'a_member_of_foo'
// CHECK-FIXES: {{^}} int AMemberOfFoo = 0;
};
int main() {
Foo foo;
return foo.a_member_of_foo;
// CHECK-FIXES: {{^}} return foo.AMemberOfFoo;
}
}; // namespace Bug29005
namespace CtorInits {
template <typename T, unsigned N>
class Container {
T storage[N];
// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: invalid case style for member 'storage'
// CHECK-FIXES: {{^}} T Storage[N];
T *pointer = &storage[0];
// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: invalid case style for member 'pointer'
// CHECK-FIXES: {{^}} T *Pointer = &Storage[0];
public:
Container() : pointer(&storage[0]) {}
// CHECK-FIXES: {{^}} Container() : Pointer(&Storage[0]) {}
};
void foo() {
Container<int, 5> container;
}
}; // namespace CtorInits