189a1d03eSRichard // Remove UNSUPPORTED for powerpc64le when the problem introduced by 289a1d03eSRichard // r288563 is resolved. 340cc041dSPaul Robinson // UNSUPPORTED: target=powerpc64le{{.*}} 43fac87b6SChuanqi Xu // RUN: %check_clang_tidy -std=c++20 %s readability-identifier-naming %t -- \ 5e8a3ddafSNathan James // RUN: -config='{CheckOptions: { \ 6e8a3ddafSNathan James // RUN: readability-identifier-naming.AbstractClassCase: CamelCase, \ 7e8a3ddafSNathan James // RUN: readability-identifier-naming.AbstractClassPrefix: 'A', \ 8e8a3ddafSNathan James // RUN: readability-identifier-naming.ClassCase: CamelCase, \ 9e8a3ddafSNathan James // RUN: readability-identifier-naming.ClassPrefix: 'C', \ 10e8a3ddafSNathan James // RUN: readability-identifier-naming.ClassConstantCase: CamelCase, \ 11e8a3ddafSNathan James // RUN: readability-identifier-naming.ClassConstantPrefix: 'k', \ 12e8a3ddafSNathan James // RUN: readability-identifier-naming.ClassMemberCase: CamelCase, \ 13e8a3ddafSNathan James // RUN: readability-identifier-naming.ClassMethodCase: camelBack, \ 146fdb1bfbSnvartolomei // RUN: readability-identifier-naming.ConceptCase: CamelCase, \ 15e8a3ddafSNathan James // RUN: readability-identifier-naming.ConstantCase: UPPER_CASE, \ 16e8a3ddafSNathan James // RUN: readability-identifier-naming.ConstantSuffix: '_CST', \ 17e8a3ddafSNathan James // RUN: readability-identifier-naming.ConstexprFunctionCase: lower_case, \ 18e8a3ddafSNathan James // RUN: readability-identifier-naming.ConstexprMethodCase: lower_case, \ 19e8a3ddafSNathan James // RUN: readability-identifier-naming.ConstexprVariableCase: lower_case, \ 20e8a3ddafSNathan James // RUN: readability-identifier-naming.EnumCase: CamelCase, \ 21e8a3ddafSNathan James // RUN: readability-identifier-naming.EnumPrefix: 'E', \ 22e8a3ddafSNathan James // RUN: readability-identifier-naming.ScopedEnumConstantCase: CamelCase, \ 23e8a3ddafSNathan James // RUN: readability-identifier-naming.EnumConstantCase: UPPER_CASE, \ 24e8a3ddafSNathan James // RUN: readability-identifier-naming.FunctionCase: camelBack, \ 25e8a3ddafSNathan James // RUN: readability-identifier-naming.GlobalConstantCase: UPPER_CASE, \ 26e8a3ddafSNathan James // RUN: readability-identifier-naming.GlobalFunctionCase: CamelCase, \ 27e8a3ddafSNathan James // RUN: readability-identifier-naming.GlobalVariableCase: lower_case, \ 28e8a3ddafSNathan James // RUN: readability-identifier-naming.GlobalVariablePrefix: 'g_', \ 29e8a3ddafSNathan James // RUN: readability-identifier-naming.InlineNamespaceCase: lower_case, \ 30e8a3ddafSNathan James // RUN: readability-identifier-naming.LocalConstantCase: CamelCase, \ 31e8a3ddafSNathan James // RUN: readability-identifier-naming.LocalConstantPrefix: 'k', \ 32e8a3ddafSNathan James // RUN: readability-identifier-naming.LocalVariableCase: lower_case, \ 33e8a3ddafSNathan James // RUN: readability-identifier-naming.MemberCase: CamelCase, \ 34e8a3ddafSNathan James // RUN: readability-identifier-naming.MemberPrefix: 'm_', \ 35e8a3ddafSNathan James // RUN: readability-identifier-naming.ConstantMemberCase: lower_case, \ 36e8a3ddafSNathan James // RUN: readability-identifier-naming.PrivateMemberPrefix: '__', \ 37e8a3ddafSNathan James // RUN: readability-identifier-naming.ProtectedMemberPrefix: '_', \ 38e8a3ddafSNathan James // RUN: readability-identifier-naming.PublicMemberCase: lower_case, \ 39e8a3ddafSNathan James // RUN: readability-identifier-naming.MethodCase: camelBack, \ 40e8a3ddafSNathan James // RUN: readability-identifier-naming.PrivateMethodPrefix: '__', \ 41e8a3ddafSNathan James // RUN: readability-identifier-naming.ProtectedMethodPrefix: '_', \ 42e8a3ddafSNathan James // RUN: readability-identifier-naming.NamespaceCase: lower_case, \ 43e8a3ddafSNathan James // RUN: readability-identifier-naming.ParameterCase: camelBack, \ 44e8a3ddafSNathan James // RUN: readability-identifier-naming.ParameterPrefix: 'a_', \ 45e8a3ddafSNathan James // RUN: readability-identifier-naming.ConstantParameterCase: camelBack, \ 46e8a3ddafSNathan James // RUN: readability-identifier-naming.ConstantParameterPrefix: 'i_', \ 47e8a3ddafSNathan James // RUN: readability-identifier-naming.ParameterPackCase: camelBack, \ 48e8a3ddafSNathan James // RUN: readability-identifier-naming.PureFunctionCase: lower_case, \ 49e8a3ddafSNathan James // RUN: readability-identifier-naming.PureMethodCase: camelBack, \ 50e8a3ddafSNathan James // RUN: readability-identifier-naming.StaticConstantCase: UPPER_CASE, \ 51e8a3ddafSNathan James // RUN: readability-identifier-naming.StaticVariableCase: camelBack, \ 52e8a3ddafSNathan James // RUN: readability-identifier-naming.StaticVariablePrefix: 's_', \ 53f0e2a5e2SMasterCopy8GB // RUN: readability-identifier-naming.StructCase: Leading_upper_snake_case, \ 54e8a3ddafSNathan James // RUN: readability-identifier-naming.TemplateParameterCase: UPPER_CASE, \ 55e8a3ddafSNathan James // RUN: readability-identifier-naming.TemplateTemplateParameterCase: CamelCase, \ 56e8a3ddafSNathan James // RUN: readability-identifier-naming.TemplateUsingCase: lower_case, \ 57e8a3ddafSNathan James // RUN: readability-identifier-naming.TemplateUsingPrefix: 'u_', \ 58e8a3ddafSNathan James // RUN: readability-identifier-naming.TypeTemplateParameterCase: camelBack, \ 59e8a3ddafSNathan James // RUN: readability-identifier-naming.TypeTemplateParameterSuffix: '_t', \ 60e8a3ddafSNathan James // RUN: readability-identifier-naming.TypedefCase: lower_case, \ 61e8a3ddafSNathan James // RUN: readability-identifier-naming.TypedefSuffix: '_t', \ 62e8a3ddafSNathan James // RUN: readability-identifier-naming.UnionCase: CamelCase, \ 63e8a3ddafSNathan James // RUN: readability-identifier-naming.UnionPrefix: 'U', \ 64e8a3ddafSNathan James // RUN: readability-identifier-naming.UsingCase: lower_case, \ 65e8a3ddafSNathan James // RUN: readability-identifier-naming.ValueTemplateParameterCase: camelBack, \ 66e8a3ddafSNathan James // RUN: readability-identifier-naming.VariableCase: lower_case, \ 67e8a3ddafSNathan James // RUN: readability-identifier-naming.VirtualMethodCase: Camel_Snake_Case, \ 68e8a3ddafSNathan James // RUN: readability-identifier-naming.VirtualMethodPrefix: 'v_', \ 69e8a3ddafSNathan James // RUN: readability-identifier-naming.MacroDefinitionCase: UPPER_CASE, \ 70e8a3ddafSNathan James // RUN: readability-identifier-naming.TypeAliasCase: camel_Snake_Back, \ 71e8a3ddafSNathan James // RUN: readability-identifier-naming.TypeAliasSuffix: '_t', \ 72e8a3ddafSNathan James // RUN: readability-identifier-naming.IgnoreFailedSplit: false, \ 73e8a3ddafSNathan James // RUN: readability-identifier-naming.GlobalPointerCase: CamelCase, \ 74e8a3ddafSNathan James // RUN: readability-identifier-naming.GlobalPointerSuffix: '_Ptr', \ 75e8a3ddafSNathan James // RUN: readability-identifier-naming.GlobalConstantPointerCase: UPPER_CASE, \ 76e8a3ddafSNathan James // RUN: readability-identifier-naming.GlobalConstantPointerSuffix: '_Ptr', \ 77e8a3ddafSNathan James // RUN: readability-identifier-naming.PointerParameterCase: lower_case, \ 78e8a3ddafSNathan James // RUN: readability-identifier-naming.PointerParameterPrefix: 'p_', \ 79e8a3ddafSNathan James // RUN: readability-identifier-naming.ConstantPointerParameterCase: CamelCase, \ 80e8a3ddafSNathan James // RUN: readability-identifier-naming.ConstantPointerParameterPrefix: 'cp_', \ 81e8a3ddafSNathan James // RUN: readability-identifier-naming.LocalPointerCase: CamelCase, \ 82e8a3ddafSNathan James // RUN: readability-identifier-naming.LocalPointerPrefix: 'l_', \ 83e8a3ddafSNathan James // RUN: readability-identifier-naming.LocalConstantPointerCase: CamelCase, \ 84e8a3ddafSNathan James // RUN: readability-identifier-naming.LocalConstantPointerPrefix: 'lc_', \ 85e8a3ddafSNathan James // RUN: }}' -- -fno-delayed-template-parsing -Dbad_macro \ 8689a1d03eSRichard // RUN: -I%S/Inputs/identifier-naming \ 8789a1d03eSRichard // RUN: -isystem %S/Inputs/identifier-naming/system 8889a1d03eSRichard 8989a1d03eSRichard // clang-format off 9089a1d03eSRichard 9189a1d03eSRichard #include <system-header.h> 9289a1d03eSRichard #include <coroutines.h> 9389a1d03eSRichard #include "user-header.h" 9489a1d03eSRichard // NO warnings or fixes expected from declarations within header files without 9589a1d03eSRichard // the -header-filter= option 9689a1d03eSRichard 9789a1d03eSRichard namespace FOO_NS { 9889a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: invalid case style for namespace 'FOO_NS' [readability-identifier-naming] 9989a1d03eSRichard // CHECK-FIXES: {{^}}namespace foo_ns {{{$}} 10089a1d03eSRichard inline namespace InlineNamespace { 10189a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:18: warning: invalid case style for inline namespace 'InlineNamespace' 10289a1d03eSRichard // CHECK-FIXES: {{^}}inline namespace inline_namespace {{{$}} 10389a1d03eSRichard 104*c79e5acfSKeith Smiley namespace FOO_ALIAS = FOO_NS; 105*c79e5acfSKeith Smiley // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: invalid case style for namespace 'FOO_ALIAS' [readability-identifier-naming] 106*c79e5acfSKeith Smiley // CHECK-FIXES: {{^}}namespace foo_alias = FOO_NS;{{$}} 107*c79e5acfSKeith Smiley 10889a1d03eSRichard SYSTEM_NS::structure g_s1; 10989a1d03eSRichard // NO warnings or fixes expected as SYSTEM_NS and structure are declared in a header file 11089a1d03eSRichard 11189a1d03eSRichard USER_NS::object g_s2; 11289a1d03eSRichard // NO warnings or fixes expected as USER_NS and object are declared in a header file 11389a1d03eSRichard 11489a1d03eSRichard SYSTEM_MACRO(var1); 1158d206f51SEdwin Vane // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: invalid case style for global variable 'var1' [readability-identifier-naming] 1168d206f51SEdwin Vane // CHECK-FIXES: {{^}}SYSTEM_MACRO(g_var1); 11789a1d03eSRichard 11889a1d03eSRichard USER_MACRO(var2); 1198d206f51SEdwin Vane // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: invalid case style for global variable 'var2' [readability-identifier-naming] 1208d206f51SEdwin Vane // CHECK-FIXES: {{^}}USER_MACRO(g_var2); 12189a1d03eSRichard 12289a1d03eSRichard #define BLA int FOO_bar 12389a1d03eSRichard BLA; 12489a1d03eSRichard // NO warnings or fixes expected as FOO_bar is from macro expansion 12589a1d03eSRichard 12689a1d03eSRichard int global0; 12789a1d03eSRichard #define USE_NUMBERED_GLOBAL(number) auto use_global##number = global##number 12889a1d03eSRichard USE_NUMBERED_GLOBAL(0); 12989a1d03eSRichard // NO warnings or fixes expected as global0 is pieced together in a macro 13089a1d03eSRichard // expansion. 13189a1d03eSRichard 13289a1d03eSRichard int global1; 13389a1d03eSRichard #define USE_NUMBERED_BAL(prefix, number) \ 13489a1d03eSRichard auto use_##prefix##bal##number = prefix##bal##number 13589a1d03eSRichard USE_NUMBERED_BAL(glo, 1); 13689a1d03eSRichard // NO warnings or fixes expected as global1 is pieced together in a macro 13789a1d03eSRichard // expansion. 13889a1d03eSRichard 13989a1d03eSRichard int global2; 14089a1d03eSRichard #define USE_RECONSTRUCTED(glo, bal) auto use_##glo##bal = glo##bal 14189a1d03eSRichard USE_RECONSTRUCTED(glo, bal2); 14289a1d03eSRichard // NO warnings or fixes expected as global2 is pieced together in a macro 14389a1d03eSRichard // expansion. 14489a1d03eSRichard 14589a1d03eSRichard int global; 14689a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: invalid case style for global variable 'global' 14789a1d03eSRichard // CHECK-FIXES: {{^}}int g_global;{{$}} 14889a1d03eSRichard #define USE_IN_MACRO(m) auto use_##m = m 14989a1d03eSRichard USE_IN_MACRO(global); 15089a1d03eSRichard 15189a1d03eSRichard int global3; 15289a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: invalid case style for global variable 'global3' 15389a1d03eSRichard // CHECK-FIXES: {{^}}int g_global3;{{$}} 15489a1d03eSRichard #define ADD_TO_SELF(m) (m) + (m) 15589a1d03eSRichard int g_twice_global3 = ADD_TO_SELF(global3); 15689a1d03eSRichard // CHECK-FIXES: {{^}}int g_twice_global3 = ADD_TO_SELF(g_global3);{{$}} 15789a1d03eSRichard 15889a1d03eSRichard int g_Global4; 15989a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: invalid case style for global variable 'g_Global4' 16089a1d03eSRichard // CHECK-FIXES: {{^}}int g_global4;{{$}} 16189a1d03eSRichard 16289a1d03eSRichard enum my_enumeration { 16389a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: invalid case style for enum 'my_enumeration' 16489a1d03eSRichard // CHECK-FIXES: {{^}}enum EMyEnumeration {{{$}} 16589a1d03eSRichard MyConstant = 1, 16689a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: invalid case style for enum constant 'MyConstant' 16789a1d03eSRichard // CHECK-FIXES: {{^}} MY_CONSTANT = 1,{{$}} 16889a1d03eSRichard your_CONST = 1, 16989a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: invalid case style for enum constant 'your_CONST' 17089a1d03eSRichard // CHECK-FIXES: {{^}} YOUR_CONST = 1,{{$}} 17189a1d03eSRichard THIS_ConstValue = 1, 17289a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: invalid case style for enum constant 'THIS_ConstValue' 17389a1d03eSRichard // CHECK-FIXES: {{^}} THIS_CONST_VALUE = 1,{{$}} 17489a1d03eSRichard }; 17589a1d03eSRichard 17689a1d03eSRichard enum class EMyEnumeration { 17789a1d03eSRichard myConstant = 1, 17889a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: invalid case style for scoped enum constant 'myConstant' 17989a1d03eSRichard // CHECK-FIXES: {{^}} MyConstant = 1,{{$}} 18089a1d03eSRichard your_CONST = 1, 18189a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: invalid case style for scoped enum constant 'your_CONST' 18289a1d03eSRichard // CHECK-FIXES: {{^}} YourConst = 1,{{$}} 18389a1d03eSRichard THIS_ConstValue = 1, 18489a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: invalid case style for scoped enum constant 'THIS_ConstValue' 18589a1d03eSRichard // CHECK-FIXES: {{^}} ThisConstValue = 1,{{$}} 18689a1d03eSRichard }; 18789a1d03eSRichard 18889a1d03eSRichard constexpr int ConstExpr_variable = MyConstant; 18989a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: invalid case style for constexpr variable 'ConstExpr_variable' 19089a1d03eSRichard // CHECK-FIXES: {{^}}constexpr int const_expr_variable = MY_CONSTANT;{{$}} 19189a1d03eSRichard 19289a1d03eSRichard class my_class { 19389a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for class 'my_class' 19489a1d03eSRichard // CHECK-FIXES: {{^}}class CMyClass {{{$}} 19589a1d03eSRichard public: 19689a1d03eSRichard my_class(); 19789a1d03eSRichard // CHECK-FIXES: {{^}} CMyClass();{{$}} 19889a1d03eSRichard 19989a1d03eSRichard my_class(void*) : my_class() {} 20089a1d03eSRichard // CHECK-FIXES: {{^}} CMyClass(void*) : CMyClass() {}{{$}} 20189a1d03eSRichard 20289a1d03eSRichard ~ 20389a1d03eSRichard my_class(); 20489a1d03eSRichard // (space in destructor token test, we could check trigraph but they will be deprecated) 20589a1d03eSRichard // CHECK-FIXES: {{^}} ~{{$}} 20689a1d03eSRichard // CHECK-FIXES: {{^}} CMyClass();{{$}} 20789a1d03eSRichard 20889a1d03eSRichard private: 20989a1d03eSRichard const int MEMBER_one_1 = ConstExpr_variable; 21089a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: invalid case style for constant member 'MEMBER_one_1' 21189a1d03eSRichard // CHECK-FIXES: {{^}} const int member_one_1 = const_expr_variable;{{$}} 21289a1d03eSRichard int member2 = 2; 21389a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for private member 'member2' 21489a1d03eSRichard // CHECK-FIXES: {{^}} int __member2 = 2;{{$}} 21589a1d03eSRichard int _memberWithExtraUnderscores_ = 42; 21689a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for private member '_memberWithExtraUnderscores_' 21789a1d03eSRichard // CHECK-FIXES: {{^}} int __memberWithExtraUnderscores = 42;{{$}} 21889a1d03eSRichard 21989a1d03eSRichard private: 22089a1d03eSRichard int private_member = 3; 22189a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: invalid case style for private member 'private_member' 22289a1d03eSRichard // CHECK-FIXES: {{^}} int __private_member = 3;{{$}} 22389a1d03eSRichard 22489a1d03eSRichard protected: 22589a1d03eSRichard int ProtMember; 22689a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: invalid case style for protected member 'ProtMember' 22789a1d03eSRichard // CHECK-FIXES: {{^}} int _ProtMember;{{$}} 22889a1d03eSRichard 22989a1d03eSRichard public: 23089a1d03eSRichard int PubMem; 23189a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: invalid case style for public member 'PubMem' 23289a1d03eSRichard // CHECK-FIXES: {{^}} int pub_mem;{{$}} 23389a1d03eSRichard 23489a1d03eSRichard static const int classConstant; 23589a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: invalid case style for class constant 'classConstant' 23689a1d03eSRichard // CHECK-FIXES: {{^}} static const int kClassConstant;{{$}} 23789a1d03eSRichard static int ClassMember_2; 23889a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: invalid case style for class member 'ClassMember_2' 23989a1d03eSRichard // CHECK-FIXES: {{^}} static int ClassMember2;{{$}} 24089a1d03eSRichard }; 24189a1d03eSRichard class my_class; 24289a1d03eSRichard // No warning needed here as this is tied to the previous declaration. 24389a1d03eSRichard // Just make sure the fix is applied. 24489a1d03eSRichard // CHECK-FIXES: {{^}}class CMyClass;{{$}} 24589a1d03eSRichard 24689a1d03eSRichard class my_forward_declared_class; // No warning should be triggered. 24789a1d03eSRichard 24889a1d03eSRichard const int my_class::classConstant = 4; 24989a1d03eSRichard // CHECK-FIXES: {{^}}const int CMyClass::kClassConstant = 4;{{$}} 25089a1d03eSRichard 25189a1d03eSRichard int my_class::ClassMember_2 = 5; 25289a1d03eSRichard // CHECK-FIXES: {{^}}int CMyClass::ClassMember2 = 5;{{$}} 25389a1d03eSRichard 25489a1d03eSRichard class my_derived_class : public virtual my_class {}; 25589a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for class 'my_derived_class' 25689a1d03eSRichard // CHECK-FIXES: {{^}}class CMyDerivedClass : public virtual CMyClass {};{{$}} 25789a1d03eSRichard 25889a1d03eSRichard class CMyWellNamedClass {}; 25989a1d03eSRichard // No warning expected as this class is well named. 26089a1d03eSRichard 26189a1d03eSRichard template<typename t_t> 2626fdb1bfbSnvartolomei concept MyConcept = requires (t_t a_t) { {a_t++}; }; 2636fdb1bfbSnvartolomei // No warning expected as this concept is well named. 2646fdb1bfbSnvartolomei 2656fdb1bfbSnvartolomei template<typename t_t> 2666fdb1bfbSnvartolomei concept my_concept_2 = requires (t_t a_t) { {a_t++}; }; 2676fdb1bfbSnvartolomei // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: invalid case style for concept 'my_concept_2' 2686fdb1bfbSnvartolomei // CHECK-FIXES: {{^}}concept MyConcept2 = requires (t_t a_t) { {a_t++}; };{{$}} 2696fdb1bfbSnvartolomei 2706fdb1bfbSnvartolomei template <typename t_t> 27189a1d03eSRichard class CMyWellNamedClass2 : public my_class { 27289a1d03eSRichard // CHECK-FIXES: {{^}}class CMyWellNamedClass2 : public CMyClass {{{$}} 27389a1d03eSRichard t_t my_Bad_Member; 27489a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for private member 'my_Bad_Member' 27589a1d03eSRichard // CHECK-FIXES: {{^}} t_t __my_Bad_Member;{{$}} 27689a1d03eSRichard int my_Other_Bad_Member = 42; 27789a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for private member 'my_Other_Bad_Member' 27889a1d03eSRichard // CHECK-FIXES: {{^}} int __my_Other_Bad_Member = 42;{{$}} 27989a1d03eSRichard public: 28089a1d03eSRichard CMyWellNamedClass2() = default; 28189a1d03eSRichard CMyWellNamedClass2(CMyWellNamedClass2 const&) = default; 28289a1d03eSRichard CMyWellNamedClass2(CMyWellNamedClass2 &&) = default; 28389a1d03eSRichard CMyWellNamedClass2(t_t a_v, void *p_p) : my_class(p_p), my_Bad_Member(a_v) {} 28489a1d03eSRichard // CHECK-FIXES: {{^}} CMyWellNamedClass2(t_t a_v, void *p_p) : CMyClass(p_p), __my_Bad_Member(a_v) {}{{$}} 28589a1d03eSRichard 28689a1d03eSRichard CMyWellNamedClass2(t_t a_v) : my_class(), my_Bad_Member(a_v), my_Other_Bad_Member(11) {} 28789a1d03eSRichard // CHECK-FIXES: {{^}} CMyWellNamedClass2(t_t a_v) : CMyClass(), __my_Bad_Member(a_v), __my_Other_Bad_Member(11) {}{{$}} 28889a1d03eSRichard }; 28989a1d03eSRichard void InstantiateClassMethods() { 29089a1d03eSRichard // Ensure we trigger the instantiation of each constructor 29189a1d03eSRichard CMyWellNamedClass2<int> x; 29289a1d03eSRichard CMyWellNamedClass2<int> x2 = x; 29389a1d03eSRichard CMyWellNamedClass2<int> x3 = static_cast<CMyWellNamedClass2<int>&&>(x2); 29489a1d03eSRichard CMyWellNamedClass2<int> x4(42); 29589a1d03eSRichard CMyWellNamedClass2<int> x5(42, nullptr); 29689a1d03eSRichard } 29789a1d03eSRichard 29889a1d03eSRichard class AOverridden { 29989a1d03eSRichard public: 30089a1d03eSRichard virtual ~AOverridden() = default; 30189a1d03eSRichard virtual void BadBaseMethod() = 0; 30289a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: invalid case style for virtual method 'BadBaseMethod' 30389a1d03eSRichard // CHECK-FIXES: {{^}} virtual void v_Bad_Base_Method() = 0; 30489a1d03eSRichard 30589a1d03eSRichard virtual void BadBaseMethodNoAttr() = 0; 30689a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: invalid case style for virtual method 'BadBaseMethodNoAttr' 30789a1d03eSRichard // CHECK-FIXES: {{^}} virtual void v_Bad_Base_Method_No_Attr() = 0; 30889a1d03eSRichard }; 30989a1d03eSRichard 31089a1d03eSRichard class COverriding : public AOverridden { 31189a1d03eSRichard public: 31289a1d03eSRichard // Overriding a badly-named base isn't a new violation. 31389a1d03eSRichard void BadBaseMethod() override {} 31489a1d03eSRichard // CHECK-FIXES: {{^}} void v_Bad_Base_Method() override {} 31589a1d03eSRichard 31689a1d03eSRichard void BadBaseMethodNoAttr() /* override */ {} 31789a1d03eSRichard // CHECK-FIXES: {{^}} void v_Bad_Base_Method_No_Attr() /* override */ {} 31889a1d03eSRichard 31989a1d03eSRichard void foo() { 32089a1d03eSRichard BadBaseMethod(); 32189a1d03eSRichard // CHECK-FIXES: {{^}} v_Bad_Base_Method(); 32289a1d03eSRichard this->BadBaseMethod(); 32389a1d03eSRichard // CHECK-FIXES: {{^}} this->v_Bad_Base_Method(); 32489a1d03eSRichard AOverridden::BadBaseMethod(); 32589a1d03eSRichard // CHECK-FIXES: {{^}} AOverridden::v_Bad_Base_Method(); 32689a1d03eSRichard COverriding::BadBaseMethod(); 32789a1d03eSRichard // CHECK-FIXES: {{^}} COverriding::v_Bad_Base_Method(); 32889a1d03eSRichard 32989a1d03eSRichard BadBaseMethodNoAttr(); 33089a1d03eSRichard // CHECK-FIXES: {{^}} v_Bad_Base_Method_No_Attr(); 33189a1d03eSRichard this->BadBaseMethodNoAttr(); 33289a1d03eSRichard // CHECK-FIXES: {{^}} this->v_Bad_Base_Method_No_Attr(); 33389a1d03eSRichard AOverridden::BadBaseMethodNoAttr(); 33489a1d03eSRichard // CHECK-FIXES: {{^}} AOverridden::v_Bad_Base_Method_No_Attr(); 33589a1d03eSRichard COverriding::BadBaseMethodNoAttr(); 33689a1d03eSRichard // CHECK-FIXES: {{^}} COverriding::v_Bad_Base_Method_No_Attr(); 33789a1d03eSRichard } 33889a1d03eSRichard }; 33989a1d03eSRichard 34089a1d03eSRichard // Same test as above, now with a dependent base class. 34189a1d03eSRichard template<typename some_t> 34289a1d03eSRichard class ATOverridden { 34389a1d03eSRichard public: 34489a1d03eSRichard virtual void BadBaseMethod() = 0; 34589a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: invalid case style for virtual method 'BadBaseMethod' 34689a1d03eSRichard // CHECK-FIXES: {{^}} virtual void v_Bad_Base_Method() = 0; 34789a1d03eSRichard 34889a1d03eSRichard virtual void BadBaseMethodNoAttr() = 0; 34989a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: invalid case style for virtual method 'BadBaseMethodNoAttr' 35089a1d03eSRichard // CHECK-FIXES: {{^}} virtual void v_Bad_Base_Method_No_Attr() = 0; 35189a1d03eSRichard }; 35289a1d03eSRichard 35389a1d03eSRichard template<typename some_t> 35489a1d03eSRichard class CTOverriding : public ATOverridden<some_t> { 35589a1d03eSRichard // Overriding a badly-named base isn't a new violation. 35689a1d03eSRichard // FIXME: The fixes from the base class should be propagated to the derived class here 35789a1d03eSRichard // (note that there could be specializations of the template base class, though) 35889a1d03eSRichard void BadBaseMethod() override {} 35989a1d03eSRichard 36089a1d03eSRichard // Without the "override" attribute, and due to the dependent base class, it is not 36189a1d03eSRichard // known whether this method overrides anything, so we get the warning here. 36289a1d03eSRichard virtual void BadBaseMethodNoAttr() {}; 36389a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: invalid case style for virtual method 'BadBaseMethodNoAttr' 36489a1d03eSRichard // CHECK-FIXES: {{^}} virtual void v_Bad_Base_Method_No_Attr() {}; 36589a1d03eSRichard }; 36689a1d03eSRichard 36789a1d03eSRichard template<typename some_t> 36889a1d03eSRichard void VirtualCall(AOverridden &a_vItem, ATOverridden<some_t> &a_vTitem) { 36989a1d03eSRichard a_vItem.BadBaseMethod(); 37089a1d03eSRichard // CHECK-FIXES: {{^}} a_vItem.v_Bad_Base_Method(); 37189a1d03eSRichard 37289a1d03eSRichard // FIXME: The fixes from ATOverridden should be propagated to the following call 37389a1d03eSRichard a_vTitem.BadBaseMethod(); 37489a1d03eSRichard } 37589a1d03eSRichard 37689a1d03eSRichard // Same test as above, now with a dependent base class that is instantiated below. 37789a1d03eSRichard template<typename some_t> 37889a1d03eSRichard class ATIOverridden { 37989a1d03eSRichard public: 38089a1d03eSRichard virtual void BadBaseMethod() = 0; 38189a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: invalid case style for virtual method 'BadBaseMethod' 38289a1d03eSRichard // CHECK-FIXES: {{^}} virtual void v_Bad_Base_Method() = 0; 38389a1d03eSRichard }; 38489a1d03eSRichard 38589a1d03eSRichard template<typename some_t> 38689a1d03eSRichard class CTIOverriding : public ATIOverridden<some_t> { 38789a1d03eSRichard public: 38889a1d03eSRichard // Overriding a badly-named base isn't a new violation. 38989a1d03eSRichard void BadBaseMethod() override {} 39089a1d03eSRichard // CHECK-FIXES: {{^}} void v_Bad_Base_Method() override {} 39189a1d03eSRichard }; 39289a1d03eSRichard 39389a1d03eSRichard template class CTIOverriding<int>; 39489a1d03eSRichard 39589a1d03eSRichard void VirtualCallI(ATIOverridden<int>& a_vItem, CTIOverriding<int>& a_vCitem) { 39689a1d03eSRichard a_vItem.BadBaseMethod(); 39789a1d03eSRichard // CHECK-FIXES: {{^}} a_vItem.v_Bad_Base_Method(); 39889a1d03eSRichard 39989a1d03eSRichard a_vCitem.BadBaseMethod(); 40089a1d03eSRichard // CHECK-FIXES: {{^}} a_vCitem.v_Bad_Base_Method(); 40189a1d03eSRichard } 40289a1d03eSRichard 40389a1d03eSRichard template <typename derived_t> 40489a1d03eSRichard class CRTPBase { 40589a1d03eSRichard public: 40689a1d03eSRichard void BadBaseMethod(int) {} 40789a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: invalid case style for method 'BadBaseMethod' 40889a1d03eSRichard }; 40989a1d03eSRichard 41089a1d03eSRichard class CRTPDerived : CRTPBase<CRTPDerived> { 41189a1d03eSRichard public: 41289a1d03eSRichard // Hiding a badly-named base isn't a new violation. 41389a1d03eSRichard double BadBaseMethod(double) { return 0; } 41489a1d03eSRichard }; 41589a1d03eSRichard 41689a1d03eSRichard template<typename T> 41789a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: invalid case style for type template parameter 'T' 41889a1d03eSRichard // CHECK-FIXES: {{^}}template<typename t_t>{{$}} 41989a1d03eSRichard class my_templated_class : CMyWellNamedClass {}; 42089a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for class 'my_templated_class' 42189a1d03eSRichard // CHECK-FIXES: {{^}}class CMyTemplatedClass : CMyWellNamedClass {};{{$}} 42289a1d03eSRichard 42389a1d03eSRichard template<typename T> 42489a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: invalid case style for type template parameter 'T' 42589a1d03eSRichard // CHECK-FIXES: {{^}}template<typename t_t>{{$}} 42689a1d03eSRichard class my_other_templated_class : my_templated_class< my_class>, private my_derived_class {}; 42789a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for class 'my_other_templated_class' 42889a1d03eSRichard // CHECK-FIXES: {{^}}class CMyOtherTemplatedClass : CMyTemplatedClass< CMyClass>, private CMyDerivedClass {};{{$}} 42989a1d03eSRichard 43089a1d03eSRichard template<typename t_t> 43189a1d03eSRichard using mysuper_tpl_t = my_other_templated_class <:: FOO_NS ::my_class>; 432f9974f7fSJ.C. Moyer // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for type alias 'mysuper_tpl_t' 433f9974f7fSJ.C. Moyer // CHECK-FIXES: {{^}}using mysuper_Tpl_t = CMyOtherTemplatedClass <:: foo_ns ::CMyClass>;{{$}} 43489a1d03eSRichard 43589a1d03eSRichard const int global_Constant = 6; 43689a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: invalid case style for global constant 'global_Constant' 43789a1d03eSRichard // CHECK-FIXES: {{^}}const int GLOBAL_CONSTANT = 6;{{$}} 43889a1d03eSRichard int Global_variable = 7; 43989a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: invalid case style for global variable 'Global_variable' 44089a1d03eSRichard // CHECK-FIXES: {{^}}int g_global_variable = 7;{{$}} 44189a1d03eSRichard 44289a1d03eSRichard void global_function(int PARAMETER_1, int const CONST_parameter) { 44389a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: invalid case style for global function 'global_function' 44489a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-2]]:26: warning: invalid case style for parameter 'PARAMETER_1' 44589a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-3]]:49: warning: invalid case style for constant parameter 'CONST_parameter' 44689a1d03eSRichard // CHECK-FIXES: {{^}}void GlobalFunction(int a_parameter1, int const i_constParameter) {{{$}} 44789a1d03eSRichard static const int THIS_static_ConsTant = 4; 44889a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: invalid case style for static constant 'THIS_static_ConsTant' 44989a1d03eSRichard // CHECK-FIXES: {{^}} static const int THIS_STATIC_CONS_TANT = 4;{{$}} 45089a1d03eSRichard static int THIS_static_variable; 45189a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: invalid case style for static variable 'THIS_static_variable' 45289a1d03eSRichard // CHECK-FIXES: {{^}} static int s_thisStaticVariable;{{$}} 45389a1d03eSRichard int const local_Constant = 3; 45489a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: invalid case style for local constant 'local_Constant' 45589a1d03eSRichard // CHECK-FIXES: {{^}} int const kLocalConstant = 3;{{$}} 45689a1d03eSRichard int LOCAL_VARIABLE; 45789a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: invalid case style for local variable 'LOCAL_VARIABLE' 45889a1d03eSRichard // CHECK-FIXES: {{^}} int local_variable;{{$}} 45989a1d03eSRichard 46089a1d03eSRichard int LOCAL_Array__[] = {0, 1, 2}; 46189a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: invalid case style for local variable 'LOCAL_Array__' 46289a1d03eSRichard // CHECK-FIXES: {{^}} int local_array[] = {0, 1, 2};{{$}} 46389a1d03eSRichard 46489a1d03eSRichard for (auto _ : LOCAL_Array__) { 46589a1d03eSRichard } 46689a1d03eSRichard } 46789a1d03eSRichard 46889a1d03eSRichard template<typename ... TYPE_parameters> 46989a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:23: warning: invalid case style for type template parameter 'TYPE_parameters' 47089a1d03eSRichard // CHECK-FIXES: {{^}}template<typename ... typeParameters_t>{{$}} 47189a1d03eSRichard void Global_Fun(TYPE_parameters... PARAMETER_PACK) { 47289a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: invalid case style for global function 'Global_Fun' 47389a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-2]]:36: warning: invalid case style for parameter pack 'PARAMETER_PACK' 47489a1d03eSRichard // CHECK-FIXES: {{^}}void GlobalFun(typeParameters_t... parameterPack) {{{$}} 47589a1d03eSRichard global_function(1, 2); 47689a1d03eSRichard // CHECK-FIXES: {{^}} GlobalFunction(1, 2);{{$}} 47789a1d03eSRichard FOO_bar = Global_variable; 47889a1d03eSRichard // CHECK-FIXES: {{^}} FOO_bar = g_global_variable;{{$}} 47989a1d03eSRichard // NO fix expected for FOO_bar declared in macro expansion 48089a1d03eSRichard } 48189a1d03eSRichard 48289a1d03eSRichard template<template<typename> class TPL_parameter, int COUNT_params, typename ... TYPE_parameters> 48389a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:35: warning: invalid case style for template template parameter 'TPL_parameter' 48489a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-2]]:54: warning: invalid case style for value template parameter 'COUNT_params' 48589a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-3]]:81: warning: invalid case style for type template parameter 'TYPE_parameters' 48689a1d03eSRichard // CHECK-FIXES: {{^}}template<template<typename> class TplParameter, int countParams, typename ... typeParameters_t>{{$}} 48789a1d03eSRichard class test_CLASS { 48889a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for class 'test_CLASS' 48989a1d03eSRichard // CHECK-FIXES: {{^}}class CTestClass {{{$}} 49089a1d03eSRichard }; 49189a1d03eSRichard 49289a1d03eSRichard class abstract_class { 49389a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for abstract class 'abstract_class' 49489a1d03eSRichard // CHECK-FIXES: {{^}}class AAbstractClass {{{$}} 49589a1d03eSRichard virtual ~abstract_class() = 0; 49689a1d03eSRichard // CHECK-FIXES: {{^}} virtual ~AAbstractClass() = 0;{{$}} 49789a1d03eSRichard virtual void VIRTUAL_METHOD(); 49889a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:18: warning: invalid case style for virtual method 'VIRTUAL_METHOD' 49989a1d03eSRichard // CHECK-FIXES: {{^}} virtual void v_Virtual_Method();{{$}} 50089a1d03eSRichard void non_Virtual_METHOD() {} 50189a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: invalid case style for private method 'non_Virtual_METHOD' 50289a1d03eSRichard // CHECK-FIXES: {{^}} void __non_Virtual_METHOD() {}{{$}} 50389a1d03eSRichard 50489a1d03eSRichard public: 50589a1d03eSRichard static void CLASS_METHOD() {} 50689a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:17: warning: invalid case style for class method 'CLASS_METHOD' 50789a1d03eSRichard // CHECK-FIXES: {{^}} static void classMethod() {}{{$}} 50889a1d03eSRichard 50989a1d03eSRichard constexpr int CST_expr_Method() { return 2; } 51089a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: invalid case style for constexpr method 'CST_expr_Method' 51189a1d03eSRichard // CHECK-FIXES: {{^}} constexpr int cst_expr_method() { return 2; }{{$}} 51289a1d03eSRichard 51389a1d03eSRichard private: 51489a1d03eSRichard void PRIVate_Method(); 51589a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: invalid case style for private method 'PRIVate_Method' 51689a1d03eSRichard // CHECK-FIXES: {{^}} void __PRIVate_Method();{{$}} 51789a1d03eSRichard protected: 51889a1d03eSRichard void protected_Method(); 51989a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: invalid case style for protected method 'protected_Method' 52089a1d03eSRichard // CHECK-FIXES: {{^}} void _protected_Method();{{$}} 52189a1d03eSRichard public: 52289a1d03eSRichard void public_Method(); 52389a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: invalid case style for method 'public_Method' 52489a1d03eSRichard // CHECK-FIXES: {{^}} void publicMethod();{{$}} 52589a1d03eSRichard }; 52689a1d03eSRichard 52789a1d03eSRichard constexpr int CE_function() { return 3; } 52889a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: invalid case style for constexpr function 'CE_function' 52989a1d03eSRichard // CHECK-FIXES: {{^}}constexpr int ce_function() { return 3; }{{$}} 53089a1d03eSRichard 53189a1d03eSRichard struct THIS___Structure { 53289a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: invalid case style for struct 'THIS___Structure' 533f0e2a5e2SMasterCopy8GB // CHECK-FIXES: {{^}}struct This_structure {{{$}} 53489a1d03eSRichard THIS___Structure(); 535f0e2a5e2SMasterCopy8GB // CHECK-FIXES: {{^}} This_structure();{{$}} 53689a1d03eSRichard 53789a1d03eSRichard union __MyUnion_is_wonderful__ {}; 53889a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: invalid case style for union '__MyUnion_is_wonderful__' 53989a1d03eSRichard // CHECK-FIXES: {{^}} union UMyUnionIsWonderful {};{{$}} 54089a1d03eSRichard }; 54189a1d03eSRichard 54289a1d03eSRichard typedef THIS___Structure struct_type; 54389a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:26: warning: invalid case style for typedef 'struct_type' 544f0e2a5e2SMasterCopy8GB // CHECK-FIXES: {{^}}typedef This_structure struct_type_t;{{$}} 54589a1d03eSRichard 54689a1d03eSRichard struct_type GlobalTypedefTestFunction(struct_type a_argument1) { 54789a1d03eSRichard // CHECK-FIXES: {{^}}struct_type_t GlobalTypedefTestFunction(struct_type_t a_argument1) { 54889a1d03eSRichard struct_type typedef_test_1; 54989a1d03eSRichard // CHECK-FIXES: {{^}} struct_type_t typedef_test_1; 55089a1d03eSRichard } 55189a1d03eSRichard 55289a1d03eSRichard using my_struct_type = THIS___Structure; 55389a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for type alias 'my_struct_type' 554f0e2a5e2SMasterCopy8GB // CHECK-FIXES: {{^}}using my_Struct_Type_t = This_structure;{{$}} 55589a1d03eSRichard 55689a1d03eSRichard template<typename t_t> 55789a1d03eSRichard using SomeOtherTemplate = my_other_templated_class <:: FOO_NS ::my_class>; 55889a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for type alias 'SomeOtherTemplate' 55989a1d03eSRichard // CHECK-FIXES: {{^}}using some_Other_Template_t = CMyOtherTemplatedClass <:: foo_ns ::CMyClass>;{{$}} 56089a1d03eSRichard 56189a1d03eSRichard static void static_Function() { 56289a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: invalid case style for function 'static_Function' 56389a1d03eSRichard // CHECK-FIXES: {{^}}static void staticFunction() {{{$}} 56489a1d03eSRichard 56589a1d03eSRichard ::FOO_NS::InlineNamespace::abstract_class::CLASS_METHOD(); 56689a1d03eSRichard // CHECK-FIXES: {{^}} ::foo_ns::inline_namespace::AAbstractClass::classMethod();{{$}} 56789a1d03eSRichard ::FOO_NS::InlineNamespace::static_Function(); 56889a1d03eSRichard // CHECK-FIXES: {{^}} ::foo_ns::inline_namespace::staticFunction();{{$}} 56989a1d03eSRichard 57089a1d03eSRichard using ::FOO_NS::InlineNamespace::CE_function; 57189a1d03eSRichard // CHECK-FIXES: {{^}} using ::foo_ns::inline_namespace::ce_function;{{$}} 57289a1d03eSRichard 57389a1d03eSRichard unsigned MY_LOCAL_array[] = {1,2,3}; 57489a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: invalid case style for local variable 'MY_LOCAL_array' 57589a1d03eSRichard // CHECK-FIXES: {{^}} unsigned my_local_array[] = {1,2,3};{{$}} 57689a1d03eSRichard 57789a1d03eSRichard unsigned const MyConstLocal_array[] = {1,2,3}; 57889a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:18: warning: invalid case style for local constant 'MyConstLocal_array' 57989a1d03eSRichard // CHECK-FIXES: {{^}} unsigned const kMyConstLocalArray[] = {1,2,3};{{$}} 58089a1d03eSRichard 58189a1d03eSRichard static unsigned MY_STATIC_array[] = {1,2,3}; 58289a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: invalid case style for static variable 'MY_STATIC_array' 58389a1d03eSRichard // CHECK-FIXES: {{^}} static unsigned s_myStaticArray[] = {1,2,3};{{$}} 58489a1d03eSRichard 58589a1d03eSRichard static unsigned const MyConstStatic_array[] = {1,2,3}; 58689a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:25: warning: invalid case style for static constant 'MyConstStatic_array' 58789a1d03eSRichard // CHECK-FIXES: {{^}} static unsigned const MY_CONST_STATIC_ARRAY[] = {1,2,3};{{$}} 58889a1d03eSRichard 58989a1d03eSRichard char MY_LOCAL_string[] = "123"; 59089a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: invalid case style for local variable 'MY_LOCAL_string' 59189a1d03eSRichard // CHECK-FIXES: {{^}} char my_local_string[] = "123";{{$}} 59289a1d03eSRichard 59389a1d03eSRichard char const MyConstLocal_string[] = "123"; 59489a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: invalid case style for local constant 'MyConstLocal_string' 59589a1d03eSRichard // CHECK-FIXES: {{^}} char const kMyConstLocalString[] = "123";{{$}} 59689a1d03eSRichard 59789a1d03eSRichard static char MY_STATIC_string[] = "123"; 59889a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: invalid case style for static variable 'MY_STATIC_string' 59989a1d03eSRichard // CHECK-FIXES: {{^}} static char s_myStaticString[] = "123";{{$}} 60089a1d03eSRichard 60189a1d03eSRichard static char const MyConstStatic_string[] = "123"; 60289a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: invalid case style for static constant 'MyConstStatic_string' 60389a1d03eSRichard // CHECK-FIXES: {{^}} static char const MY_CONST_STATIC_STRING[] = "123";{{$}} 60489a1d03eSRichard } 60589a1d03eSRichard 60689a1d03eSRichard #define MY_TEST_Macro(X) X() 60789a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:9: warning: invalid case style for macro definition 'MY_TEST_Macro' 60889a1d03eSRichard // CHECK-FIXES: {{^}}#define MY_TEST_MACRO(X) X() 60989a1d03eSRichard 61089a1d03eSRichard void MY_TEST_Macro(function) {} 6118d206f51SEdwin Vane // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: invalid case style for global function 'function' [readability-identifier-naming] 6128d206f51SEdwin Vane // CHECK-FIXES: {{^}}void MY_TEST_MACRO(Function) {} 6138d206f51SEdwin Vane 6148d206f51SEdwin Vane #define MY_CAT_IMPL(l, r) l ## r 6158d206f51SEdwin Vane #define MY_CAT(l, r) MY_CAT_IMPL(l, r) 6168d206f51SEdwin Vane #define MY_MACRO2(foo) int MY_CAT(awesome_, MY_CAT(foo, __COUNTER__)) = 0 6178d206f51SEdwin Vane #define MY_MACRO3(foo) int MY_CAT(awesome_, foo) = 0 6188d206f51SEdwin Vane MY_MACRO2(myglob); 6198d206f51SEdwin Vane MY_MACRO3(myglob); 6208d206f51SEdwin Vane // No suggestions should occur even though the resulting decl of awesome_myglob# 6218d206f51SEdwin Vane // or awesome_myglob are not entirely within a macro argument. 6228d206f51SEdwin Vane 6238d206f51SEdwin Vane } // namespace InlineNamespace 6248d206f51SEdwin Vane } // namespace FOO_NS 62589a1d03eSRichard 62689a1d03eSRichard template <typename t_t> struct a { 627f0e2a5e2SMasterCopy8GB // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: invalid case style for struct 'a' 628f0e2a5e2SMasterCopy8GB // CHECK-FIXES: {{^}}template <typename t_t> struct A {{{$}} 62989a1d03eSRichard typename t_t::template b<> c; 63089a1d03eSRichard 63189a1d03eSRichard char const MY_ConstMember_string[4] = "123"; 63289a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:14: warning: invalid case style for constant member 'MY_ConstMember_string' 63389a1d03eSRichard // CHECK-FIXES: {{^}} char const my_const_member_string[4] = "123";{{$}} 63489a1d03eSRichard 63589a1d03eSRichard static char const MyConstClass_string[]; 63689a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: invalid case style for class constant 'MyConstClass_string' 63789a1d03eSRichard // CHECK-FIXES: {{^}} static char const kMyConstClassString[];{{$}} 63889a1d03eSRichard }; 63989a1d03eSRichard 64089a1d03eSRichard template<typename t_t> 64189a1d03eSRichard char const a<t_t>::MyConstClass_string[] = "123"; 642f0e2a5e2SMasterCopy8GB // CHECK-FIXES: {{^}}char const A<t_t>::kMyConstClassString[] = "123";{{$}} 64389a1d03eSRichard 64489a1d03eSRichard template <template <typename> class A> struct b { A<int> c; }; 645f0e2a5e2SMasterCopy8GB // CHECK-MESSAGES: :[[@LINE-1]]:47: warning: invalid case style for struct 'b' 646f0e2a5e2SMasterCopy8GB // CHECK-FIXES:template <template <typename> class A> struct B { A<int> c; };{{$}} 64789a1d03eSRichard 64889a1d03eSRichard unsigned MY_GLOBAL_array[] = {1,2,3}; 64989a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: invalid case style for global variable 'MY_GLOBAL_array' 65089a1d03eSRichard // CHECK-FIXES: {{^}}unsigned g_my_global_array[] = {1,2,3};{{$}} 65189a1d03eSRichard 65289a1d03eSRichard unsigned const MyConstGlobal_array[] = {1,2,3}; 65389a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: invalid case style for global constant 'MyConstGlobal_array' 65489a1d03eSRichard // CHECK-FIXES: {{^}}unsigned const MY_CONST_GLOBAL_ARRAY[] = {1,2,3};{{$}} 65589a1d03eSRichard 65689a1d03eSRichard int * MyGlobal_Ptr;// -> ok 65789a1d03eSRichard int * my_second_global_Ptr; 65889a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for global pointer 'my_second_global_Ptr' 65989a1d03eSRichard // CHECK-FIXES: {{^}}int * MySecondGlobal_Ptr;{{$}} 66089a1d03eSRichard int * const MyConstantGlobalPointer = nullptr; 66189a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: invalid case style for global constant pointer 'MyConstantGlobalPointer' 66289a1d03eSRichard // CHECK-FIXES: {{^}}int * const MY_CONSTANT_GLOBAL_POINTER_Ptr = nullptr;{{$}} 66389a1d03eSRichard 66489a1d03eSRichard void MyPoiterFunction(int * p_normal_pointer, int * const constant_ptr){ 66589a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:59: warning: invalid case style for constant pointer parameter 'constant_ptr' 66689a1d03eSRichard // CHECK-FIXES: {{^}}void MyPoiterFunction(int * p_normal_pointer, int * const cp_ConstantPtr){{{$}} 66789a1d03eSRichard int * l_PointerA; 66889a1d03eSRichard int * const pointer_b = nullptr; 66989a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:17: warning: invalid case style for local constant pointer 'pointer_b' 67089a1d03eSRichard // CHECK-FIXES: {{^}} int * const lc_PointerB = nullptr;{{$}} 67189a1d03eSRichard } 67289a1d03eSRichard 67389a1d03eSRichard using namespace FOO_NS; 67489a1d03eSRichard // CHECK-FIXES: {{^}}using namespace foo_ns; 67589a1d03eSRichard 67689a1d03eSRichard using namespace FOO_NS::InlineNamespace; 67789a1d03eSRichard // CHECK-FIXES: {{^}}using namespace foo_ns::inline_namespace; 67889a1d03eSRichard 67989a1d03eSRichard void QualifiedTypeLocTest(THIS___Structure); 680f0e2a5e2SMasterCopy8GB // CHECK-FIXES: {{^}}void QualifiedTypeLocTest(This_structure);{{$}} 68189a1d03eSRichard void QualifiedTypeLocTest(THIS___Structure &); 682f0e2a5e2SMasterCopy8GB // CHECK-FIXES: {{^}}void QualifiedTypeLocTest(This_structure &);{{$}} 68389a1d03eSRichard void QualifiedTypeLocTest(THIS___Structure &&); 684f0e2a5e2SMasterCopy8GB // CHECK-FIXES: {{^}}void QualifiedTypeLocTest(This_structure &&);{{$}} 68589a1d03eSRichard void QualifiedTypeLocTest(const THIS___Structure); 686f0e2a5e2SMasterCopy8GB // CHECK-FIXES: {{^}}void QualifiedTypeLocTest(const This_structure);{{$}} 68789a1d03eSRichard void QualifiedTypeLocTest(const THIS___Structure &); 688f0e2a5e2SMasterCopy8GB // CHECK-FIXES: {{^}}void QualifiedTypeLocTest(const This_structure &);{{$}} 68989a1d03eSRichard void QualifiedTypeLocTest(volatile THIS___Structure &); 690f0e2a5e2SMasterCopy8GB // CHECK-FIXES: {{^}}void QualifiedTypeLocTest(volatile This_structure &);{{$}} 69189a1d03eSRichard 69289a1d03eSRichard namespace redecls { 69389a1d03eSRichard // We only want the warning to show up once here for the first decl. 69489a1d03eSRichard // CHECK-MESSAGES: :[[@LINE+1]]:6: warning: invalid case style for global function 'badNamedFunction' 69589a1d03eSRichard void badNamedFunction(); 69689a1d03eSRichard void badNamedFunction(); 69789a1d03eSRichard void badNamedFunction(){} 69889a1d03eSRichard // CHECK-FIXES: {{^}}void BadNamedFunction(); 69989a1d03eSRichard // CHECK-FIXES-NEXT: {{^}}void BadNamedFunction(); 70089a1d03eSRichard // CHECK-FIXES-NEXT: {{^}}void BadNamedFunction(){} 70189a1d03eSRichard void ReferenceBadNamedFunction() { 70289a1d03eSRichard auto l_Ptr = badNamedFunction; 70389a1d03eSRichard // CHECK-FIXES: {{^}} auto l_Ptr = BadNamedFunction; 70489a1d03eSRichard l_Ptr(); 70589a1d03eSRichard badNamedFunction(); 70689a1d03eSRichard // CHECK-FIXES: {{^}} BadNamedFunction(); 70789a1d03eSRichard } 70889a1d03eSRichard 70989a1d03eSRichard } // namespace redecls 71089a1d03eSRichard 71189a1d03eSRichard namespace scratchspace { 71289a1d03eSRichard #define DUP(Tok) Tok 71389a1d03eSRichard #define M1(Tok) DUP(badName##Tok()) 71489a1d03eSRichard 71589a1d03eSRichard // We don't want a warning here as the call to this in Foo is in a scratch 71689a1d03eSRichard // buffer so its fix-it wouldn't be applied, resulting in invalid code. 71789a1d03eSRichard void badNameWarn(); 71889a1d03eSRichard 71989a1d03eSRichard void Foo() { 72089a1d03eSRichard M1(Warn); 72189a1d03eSRichard } 72289a1d03eSRichard 72389a1d03eSRichard #undef M1 72489a1d03eSRichard #undef DUP 72589a1d03eSRichard } // namespace scratchspace 72689a1d03eSRichard 72789a1d03eSRichard template<typename type_t> 72889a1d03eSRichard auto GetRes(type_t& Param) -> decltype(Param.res()); 72989a1d03eSRichard // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: invalid case style for parameter 'Param' 73089a1d03eSRichard // CHECK-FIXES: auto GetRes(type_t& a_param) -> decltype(a_param.res()); 73189a1d03eSRichard 73289a1d03eSRichard // Check implicit declarations in coroutines 73389a1d03eSRichard 73489a1d03eSRichard struct async_obj { 735f0e2a5e2SMasterCopy8GB // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: invalid case style for struct 'async_obj' 736f0e2a5e2SMasterCopy8GB // CHECK-FIXES: {{^}}struct Async_obj {{{$}} 73789a1d03eSRichard public: 73889a1d03eSRichard never_suspend operator co_await() const noexcept; 73989a1d03eSRichard }; 74089a1d03eSRichard 74189a1d03eSRichard task ImplicitDeclTest(async_obj &a_object) { 74289a1d03eSRichard co_await a_object; // CHECK-MESSAGES-NOT: warning: invalid case style for local variable 74389a1d03eSRichard } 7442111577dSPiotr Zegar 7452111577dSPiotr Zegar // Test scenario when canonical declaration will be a forward declaration 7462111577dSPiotr Zegar struct ForwardDeclStruct; 7472111577dSPiotr Zegar // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: invalid case style for struct 'ForwardDeclStruct' [readability-identifier-naming] 748f0e2a5e2SMasterCopy8GB // CHECK-FIXES: {{^}}struct Forward_decl_struct; 749f0e2a5e2SMasterCopy8GB // CHECK-FIXES: {{^}}struct Forward_decl_struct { 7502111577dSPiotr Zegar struct ForwardDeclStruct { 7512111577dSPiotr Zegar }; 7522111577dSPiotr Zegar 7532111577dSPiotr Zegar struct forward_declared_as_struct; 7542111577dSPiotr Zegar // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: invalid case style for class 'forward_declared_as_struct' [readability-identifier-naming] 7552111577dSPiotr Zegar // CHECK-FIXES: {{^}}struct CForwardDeclaredAsStruct; 7562111577dSPiotr Zegar // CHECK-FIXES: {{^}}class CForwardDeclaredAsStruct { 7572111577dSPiotr Zegar class forward_declared_as_struct { 7582111577dSPiotr Zegar }; 7592111577dSPiotr Zegar 7605d95d27eSPiotr Zegar namespace pr55156 { 7615d95d27eSPiotr Zegar 7625d95d27eSPiotr Zegar template<typename> struct Wrap; 7635d95d27eSPiotr Zegar 7645d95d27eSPiotr Zegar typedef enum { 7655d95d27eSPiotr Zegar VALUE0, 7665d95d27eSPiotr Zegar VALUE1, 7675d95d27eSPiotr Zegar } ValueType; 7685d95d27eSPiotr Zegar // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: invalid case style for typedef 'ValueType' [readability-identifier-naming] 7695d95d27eSPiotr Zegar // CHECK-FIXES: {{^}}} value_type_t; 7705d95d27eSPiotr Zegar 7715d95d27eSPiotr Zegar typedef ValueType (*MyFunPtr)(const ValueType&, Wrap<ValueType>*); 7725d95d27eSPiotr Zegar // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: invalid case style for typedef 'MyFunPtr' [readability-identifier-naming] 7735d95d27eSPiotr Zegar // CHECK-FIXES: {{^}}typedef value_type_t (*my_fun_ptr_t)(const value_type_t&, Wrap<value_type_t>*); 7745d95d27eSPiotr Zegar 7755d95d27eSPiotr Zegar #define STATIC_MACRO static 7765d95d27eSPiotr Zegar STATIC_MACRO void someFunc(ValueType a_v1, const ValueType& a_v2) {} 7775d95d27eSPiotr Zegar // CHECK-FIXES: {{^}}STATIC_MACRO void someFunc(value_type_t a_v1, const value_type_t& a_v2) {} 7785d95d27eSPiotr Zegar STATIC_MACRO void someFunc(const ValueType** p_a_v1, ValueType (*p_a_v2)()) {} 7795d95d27eSPiotr Zegar // CHECK-FIXES: {{^}}STATIC_MACRO void someFunc(const value_type_t** p_a_v1, value_type_t (*p_a_v2)()) {} 7805d95d27eSPiotr Zegar STATIC_MACRO ValueType someFunc() {} 7815d95d27eSPiotr Zegar // CHECK-FIXES: {{^}}STATIC_MACRO value_type_t someFunc() {} 7825d95d27eSPiotr Zegar STATIC_MACRO void someFunc(MyFunPtr, const MyFunPtr****) {} 7835d95d27eSPiotr Zegar // CHECK-FIXES: {{^}}STATIC_MACRO void someFunc(my_fun_ptr_t, const my_fun_ptr_t****) {} 7845d95d27eSPiotr Zegar #undef STATIC_MACRO 7855d95d27eSPiotr Zegar } 7861107b47dSEdwin Vane 7871107b47dSEdwin Vane struct Some_struct { 7881107b47dSEdwin Vane int SomeMember; 7891107b47dSEdwin Vane // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for public member 'SomeMember' [readability-identifier-naming] 7901107b47dSEdwin Vane // CHECK-FIXES: {{^}} int some_member; 7911107b47dSEdwin Vane }; 7921107b47dSEdwin Vane Some_struct g_s1{ .SomeMember = 1 }; 7931107b47dSEdwin Vane // CHECK-FIXES: {{^}}Some_struct g_s1{ .some_member = 1 }; 7941107b47dSEdwin Vane Some_struct g_s2{.SomeMember=1}; 7951107b47dSEdwin Vane // CHECK-FIXES: {{^}}Some_struct g_s2{.some_member=1}; 796