From 5ae76e09ad80a709d2b7d62066483f8e9e33929a Mon Sep 17 00:00:00 2001 From: Alexander Kornienko Date: Tue, 7 Jun 2016 09:11:19 +0000 Subject: [PATCH] [clang-tidy] readability-identifier-naming - Support for Type Aliases Summary: Added support for Type Alias declarations. Reviewers: alexfh Subscribers: cfe-commits Patch by James Reynolds! Differential Revision: http://reviews.llvm.org/D20856 llvm-svn: 271992 --- .../readability/IdentifierNamingCheck.cpp | 4 ++++ .../clang-tidy/readability-identifier-naming.cpp | 15 +++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp index 3818606032a7..567dbddaa6f7 100644 --- a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp @@ -65,6 +65,7 @@ namespace readability { m(ValueTemplateParameter) \ m(TemplateTemplateParameter) \ m(TemplateParameter) \ + m(TypeAlias) \ enum StyleKind { #define ENUMERATE(v) SK_ ## v, @@ -258,6 +259,9 @@ static StyleKind findStyleKind( if (isa(D) && NamingStyles[SK_Typedef].isSet()) return SK_Typedef; + if (isa(D) && NamingStyles[SK_TypeAlias].isSet()) + return SK_TypeAlias; + if (const auto *Decl = dyn_cast(D)) { if (Decl->isAnonymousNamespace()) return SK_Invalid; diff --git a/clang-tools-extra/test/clang-tidy/readability-identifier-naming.cpp b/clang-tools-extra/test/clang-tidy/readability-identifier-naming.cpp index 1237cca7c9b9..659736303e93 100644 --- a/clang-tools-extra/test/clang-tidy/readability-identifier-naming.cpp +++ b/clang-tools-extra/test/clang-tidy/readability-identifier-naming.cpp @@ -61,6 +61,8 @@ // RUN: {key: readability-identifier-naming.VariableCase, value: lower_case}, \ // RUN: {key: readability-identifier-naming.VirtualMethodCase, value: UPPER_CASE}, \ // RUN: {key: readability-identifier-naming.VirtualMethodPrefix, value: 'v_'}, \ +// RUN: {key: readability-identifier-naming.TypeAliasCase, value: lower_case}, \ +// RUN: {key: readability-identifier-naming.TypeAliasSuffix, value: '_t'}, \ // RUN: {key: readability-identifier-naming.IgnoreFailedSplit, value: 0} \ // RUN: ]}' -- -std=c++11 -fno-delayed-template-parsing \ // RUN: -I%S/Inputs/readability-identifier-naming \ @@ -191,8 +193,8 @@ class my_other_templated_class : my_templated_class< my_class>, private my_deri // CHECK-FIXES: {{^}}class CMyOtherTemplatedClass : CMyTemplatedClass< CMyClass>, private CMyDerivedClass {};{{$}} template -using MYSUPER_TPL = my_other_templated_class <:: FOO_NS ::my_class>; -// CHECK-FIXES: {{^}}using MYSUPER_TPL = CMyOtherTemplatedClass <:: foo_ns ::CMyClass>;{{$}} +using mysuper_tpl_t = my_other_templated_class <:: FOO_NS ::my_class>; +// CHECK-FIXES: {{^}}using mysuper_tpl_t = CMyOtherTemplatedClass <:: foo_ns ::CMyClass>;{{$}} const int global_Constant = 6; // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: invalid case style for global constant 'global_Constant' @@ -305,6 +307,15 @@ typedef THIS___Structure struct_type; // CHECK-MESSAGES: :[[@LINE-1]]:26: warning: invalid case style for typedef 'struct_type' // CHECK-FIXES: {{^}}typedef this_structure struct_type_t;{{$}} +using my_struct_type = THIS___Structure; +// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for type alias 'my_struct_type' +// CHECK-FIXES: {{^}}using my_struct_type_t = this_structure;{{$}} + +template +using SomeOtherTemplate = my_other_templated_class <:: FOO_NS ::my_class>; +// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for type alias 'SomeOtherTemplate' +// CHECK-FIXES: {{^}}using some_other_template_t = CMyOtherTemplatedClass <:: foo_ns ::CMyClass>;{{$}} + static void static_Function() { // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: invalid case style for function 'static_Function' // CHECK-FIXES: {{^}}static void staticFunction() {{{$}}