Skip to content

Commit

Permalink
[clang-tidy] Fix handling of UseAssignment option in cppcoreguideline…
Browse files Browse the repository at this point in the history
…s-prefer-member-initializer

From now on check will use value from cppcoreguidelines-prefer-member-initializer
and fallback to modernize-use-default-member-init.UseAssignment if not specified.

Fixes: #55616.

Reviewed By: carlosgalvezp

Differential Revision: https://reviews.llvm.org/D147929
  • Loading branch information
PiotrZSL committed Apr 16, 2023
1 parent 9db2a04 commit b34ca08
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 6 deletions.
Expand Up @@ -129,9 +129,11 @@ PreferMemberInitializerCheck::PreferMemberInitializerCheck(
: ClangTidyCheck(Name, Context),
IsUseDefaultMemberInitEnabled(
Context->isCheckEnabled("modernize-use-default-member-init")),
UseAssignment(OptionsView("modernize-use-default-member-init",
Context->getOptions().CheckOptions, Context)
.get("UseAssignment", false)) {}
UseAssignment(
Options.get("UseAssignment",
OptionsView("modernize-use-default-member-init",
Context->getOptions().CheckOptions, Context)
.get("UseAssignment", false))) {}

void PreferMemberInitializerCheck::storeOptions(
ClangTidyOptions::OptionMap &Opts) {
Expand Down
Expand Up @@ -85,9 +85,11 @@ Here ``n`` can be initialized in the constructor initialization list, unlike

.. option:: UseAssignment

If this option is set to `true` (default is `false`), the check will initialize
members with an assignment. In this case the fix of the first example looks
like this:
If this option is set to `true` (by default `UseAssignment` from
`modernize-use-default-member-init
<../modernize/use-default-member-init.html>`_ will be used),
the check will initialize members with an assignment.
In this case the fix of the first example looks like this:

.. code-block:: c++

Expand Down
@@ -1,5 +1,8 @@
// RUN: %check_clang_tidy %s cppcoreguidelines-prefer-member-initializer,modernize-use-default-member-init %t -- \
// RUN: -config="{CheckOptions: [{key: modernize-use-default-member-init.UseAssignment, value: true}]}"
// RUN: %check_clang_tidy %s cppcoreguidelines-prefer-member-initializer,modernize-use-default-member-init %t -- \
// RUN: -config="{CheckOptions: [{key: modernize-use-default-member-init.UseAssignment, value: false}, \
// RUN: {key: cppcoreguidelines-prefer-member-initializer.UseAssignment, value: true}]}"

class Simple1 {
int n;
Expand Down
@@ -1,4 +1,7 @@
// RUN: %check_clang_tidy %s cppcoreguidelines-prefer-member-initializer,modernize-use-default-member-init %t
// RUN: %check_clang_tidy %s cppcoreguidelines-prefer-member-initializer,modernize-use-default-member-init %t -- \
// RUN: -config="{CheckOptions: [{key: modernize-use-default-member-init.UseAssignment, value: true}, \
// RUN: {key: cppcoreguidelines-prefer-member-initializer.UseAssignment, value: false}]}"

class Simple1 {
int n;
Expand Down

0 comments on commit b34ca08

Please sign in to comment.