Skip to content

Commit b024d6e

Browse files
committed
Address review comments
1 parent 96cb2fb commit b024d6e

File tree

6 files changed

+31
-22
lines changed

6 files changed

+31
-22
lines changed

clang-tools-extra/clang-tidy/cppcoreguidelines/CppCoreGuidelinesTidyModule.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,6 @@ class CppCoreGuidelinesModule : public ClangTidyModule {
6060
void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {
6161
CheckFactories.registerCheck<AvoidCapturingLambdaCoroutinesCheck>(
6262
"cppcoreguidelines-avoid-capturing-lambda-coroutines");
63-
CheckFactories.registerCheck<UseEnumClassCheck>(
64-
"cppcoreguidelines-use-enum-class");
6563
CheckFactories.registerCheck<modernize::AvoidCArraysCheck>(
6664
"cppcoreguidelines-avoid-c-arrays");
6765
CheckFactories.registerCheck<AvoidConstOrRefDataMembersCheck>(
@@ -134,6 +132,8 @@ class CppCoreGuidelinesModule : public ClangTidyModule {
134132
CheckFactories.registerCheck<SlicingCheck>("cppcoreguidelines-slicing");
135133
CheckFactories.registerCheck<modernize::UseDefaultMemberInitCheck>(
136134
"cppcoreguidelines-use-default-member-init");
135+
CheckFactories.registerCheck<UseEnumClassCheck>(
136+
"cppcoreguidelines-use-enum-class");
137137
CheckFactories.registerCheck<misc::UnconventionalAssignOperatorCheck>(
138138
"cppcoreguidelines-c-copy-assignment-signature");
139139
CheckFactories.registerCheck<VirtualClassDestructorCheck>(

clang-tools-extra/docs/ReleaseNotes.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,11 @@ Improvements to clang-tidy
117117
New checks
118118
^^^^^^^^^^
119119

120+
- New :doc:`cppcoreguidelines-use-enum-class
121+
<clang-tidy/checks/cppcoreguidelines/use-enum-class>` check.
122+
123+
Finds plain non-class ``enum`` definitions that could use ``enum class``.
124+
120125
- New :doc:`bugprone-capturing-this-in-member-variable
121126
<clang-tidy/checks/bugprone/capturing-this-in-member-variable>` check.
122127

@@ -148,11 +153,6 @@ New checks
148153
Finds potentially erroneous calls to ``reset`` method on smart pointers when
149154
the pointee type also has a ``reset`` method.
150155

151-
- New :doc:`cppcoreguidelines-use-enum-class
152-
<clang-tidy/checks/cppcoreguidelines/use-enum-class>` check.
153-
154-
Finds plain non-class ``enum`` definitions that could use ``enum class``.
155-
156156
New check aliases
157157
^^^^^^^^^^^^^^^^^
158158

clang-tools-extra/docs/clang-tidy/checks/cppcoreguidelines/use-enum-class.rst

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
.. title:: clang-tidy - cppcoreguidelines-use-enum-class
22

33
cppcoreguidelines-use-enum-class
4-
=============================
4+
================================
55

6-
Finds plain non-class ``enum`` definitions that could use ``enum class``.
6+
Finds unscoped (non-class) ``enum`` declarations and suggests using
7+
``enum class`` instead.
78

89
This check implements `Enum.3
910
<https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Renum-class>`_
@@ -25,7 +26,10 @@ Example:
2526
enum E {}; // use "enum class E {};" instead
2627
}
2728

29+
Options
30+
-------
2831

2932
.. option:: IgnoreUnscopedEnumsInClasses
3033

31-
When `true` (default is `false`), ignores unscoped ``enum`` declarations in classes.
34+
When `true`, ignores unscoped ``enum`` declarations in classes.
35+
Default is `false`.

clang-tools-extra/docs/clang-tidy/checks/list.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ Clang-Tidy Checks
212212
:doc:`cppcoreguidelines-rvalue-reference-param-not-moved <cppcoreguidelines/rvalue-reference-param-not-moved>`,
213213
:doc:`cppcoreguidelines-slicing <cppcoreguidelines/slicing>`,
214214
:doc:`cppcoreguidelines-special-member-functions <cppcoreguidelines/special-member-functions>`,
215-
:doc:`cppcoreguidelines-use-enum-class <cppcoreguidelines/use-enum-class>`, "Yes"
215+
:doc:`cppcoreguidelines-use-enum-class <cppcoreguidelines/use-enum-class>`,
216216
:doc:`cppcoreguidelines-virtual-class-destructor <cppcoreguidelines/virtual-class-destructor>`, "Yes"
217217
:doc:`darwin-avoid-spinlock <darwin/avoid-spinlock>`,
218218
:doc:`darwin-dispatch-once-nonstatic <darwin/dispatch-once-nonstatic>`, "Yes"
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
1-
// RUN: %check_clang_tidy -std=c++11-or-later %s cppcoreguidelines-use-enum-class %t -- -config="{CheckOptions: {cppcoreguidelines-use-enum-class.IgnoreUnscopedEnumsInClasses: true}}" --
1+
// RUN: %check_clang_tidy -std=c++11-or-later %s cppcoreguidelines-use-enum-class %t -- \
2+
// RUN: -config="{CheckOptions: {cppcoreguidelines-use-enum-class.IgnoreUnscopedEnumsInClasses: true}}" --
23

34
enum E {};
4-
// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: enum 'E' is unscoped, use 'enum class' instead [cppcoreguidelines-use-enum-class]
5+
// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: enum 'E' is unscoped, use 'enum class' instead
56

67
enum class EC {};
78

89
struct S {
910
enum E {};
10-
// CHECK-MESSAGES-NOT: :[[@LINE-1]]:8: warning: enum 'E' is unscoped, use 'enum class' instead [cppcoreguidelines-use-enum-class]
11+
// CHECK-MESSAGES-NOT: :[[@LINE-1]]:8: warning: enum 'E' is unscoped, use 'enum class' instead
1112
// Ignore unscoped enums in recordDecl
1213
enum class EC {};
1314
};
15+
16+
enum ForwardE : int;
17+
// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: enum 'ForwardE' is unscoped, use 'enum class' instead
18+
enum class ForwardEC : int;
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,50 @@
11
// RUN: %check_clang_tidy -std=c++11-or-later %s cppcoreguidelines-use-enum-class %t
22

33
enum E {};
4-
// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: enum 'E' is unscoped, use 'enum class' instead [cppcoreguidelines-use-enum-class]
4+
// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: enum 'E' is unscoped, use 'enum class' instead
55

66
enum class EC {};
77

88
struct S {
99
enum E {};
10-
// CHECK-MESSAGES: :[[@LINE-1]]:8: warning: enum 'E' is unscoped, use 'enum class' instead [cppcoreguidelines-use-enum-class]
10+
// CHECK-MESSAGES: :[[@LINE-1]]:8: warning: enum 'E' is unscoped, use 'enum class' instead
1111
enum class EC {};
1212
};
1313

1414
class C {
1515
enum E {};
16-
// CHECK-MESSAGES: :[[@LINE-1]]:8: warning: enum 'E' is unscoped, use 'enum class' instead [cppcoreguidelines-use-enum-class]
16+
// CHECK-MESSAGES: :[[@LINE-1]]:8: warning: enum 'E' is unscoped, use 'enum class' instead
1717
enum class EC {};
1818
};
1919

2020
template<class T>
2121
class TC {
2222
enum E {};
23-
// CHECK-MESSAGES: :[[@LINE-1]]:8: warning: enum 'E' is unscoped, use 'enum class' instead [cppcoreguidelines-use-enum-class]
23+
// CHECK-MESSAGES: :[[@LINE-1]]:8: warning: enum 'E' is unscoped, use 'enum class' instead
2424
enum class EC {};
2525
};
2626

2727
union U {
2828
enum E {};
29-
// CHECK-MESSAGES: :[[@LINE-1]]:8: warning: enum 'E' is unscoped, use 'enum class' instead [cppcoreguidelines-use-enum-class]
29+
// CHECK-MESSAGES: :[[@LINE-1]]:8: warning: enum 'E' is unscoped, use 'enum class' instead
3030
enum class EC {};
3131
};
3232

3333
namespace {
3434
enum E {};
35-
// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: enum 'E' is unscoped, use 'enum class' instead [cppcoreguidelines-use-enum-class]
35+
// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: enum 'E' is unscoped, use 'enum class' instead
3636
enum class EC {};
3737
} // namespace
3838

3939
namespace N {
4040
enum E {};
41-
// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: enum 'E' is unscoped, use 'enum class' instead [cppcoreguidelines-use-enum-class]
41+
// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: enum 'E' is unscoped, use 'enum class' instead
4242
enum class EC {};
4343
} // namespace N
4444

4545
template<enum ::EC>
4646
static void foo();
4747

4848
enum ForwardE : int;
49-
// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: enum 'ForwardE' is unscoped, use 'enum class' instead [cppcoreguidelines-use-enum-class]
49+
// CHECK-MESSAGES: :[[@LINE-1]]:6: warning: enum 'ForwardE' is unscoped, use 'enum class' instead
5050
enum class ForwardEC : int;

0 commit comments

Comments
 (0)