Unverified Commit ebe77cc3 authored by Congcong Cai's avatar Congcong Cai Committed by GitHub
Browse files

[clang-tidy] ignore local variable with [maybe_unused] attribute in...

[clang-tidy] ignore local variable with [maybe_unused] attribute in bugprone-unused-local-non-trivial-variable (#81563)
parent ca61e6a7
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ void UnusedLocalNonTrivialVariableCheck::registerMatchers(MatchFinder *Finder) {
      varDecl(isLocalVarDecl(), unless(isReferenced()),
              unless(isExceptionVariable()), hasLocalStorage(), isDefinition(),
              unless(hasType(isReferenceType())), unless(hasType(isTrivial())),
              unless(hasAttr(attr::Kind::Unused)),
              hasType(hasUnqualifiedDesugaredType(
                  anyOf(recordType(hasDeclaration(namedDecl(
                            matchesAnyListedName(IncludeTypes),
+4 −0
Original line number Diff line number Diff line
@@ -121,6 +121,10 @@ Changes in existing checks
  <clang-tidy/checks/bugprone/too-small-loop-variable>` check by incorporating
  better support for ``const`` loop boundaries.

- Improved :doc:`bugprone-unused-local-non-trivial-variable
  <clang-tidy/checks/bugprone/unused-local-non-trivial-variable>` check by
  ignoring local variable with ``[maybe_unused]`` attribute.

- Cleaned up :doc:`cppcoreguidelines-prefer-member-initializer
  <clang-tidy/checks/cppcoreguidelines/prefer-member-initializer>`
  by removing enforcement of rule `C.48
+1 −0
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@ The following types of variables are excluded from this check:
* exception variables in catch clauses
* static or thread local
* structured bindings
* variables with ``[[maybe_unused]]`` attribute

This check can be configured to warn on all non-trivial variables by setting
`IncludeTypes` to `.*`, and excluding specific types using `ExcludeTypes`.
+1 −0
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ T qux(T Generic) {
    // CHECK-MESSAGES: :[[@LINE-1]]:22: warning: unused local variable 'TemplateType' of type 'async::Future<T>' [bugprone-unused-local-non-trivial-variable]
    a::Future<T> AliasTemplateType;
    // CHECK-MESSAGES: :[[@LINE-1]]:18: warning: unused local variable 'AliasTemplateType' of type 'a::Future<T>' (aka 'Future<type-parameter-0-0>') [bugprone-unused-local-non-trivial-variable]
    [[maybe_unused]] async::Future<Units> MaybeUnused;
    return Generic;
}