diff options
author | Malcolm Parsons <malcolm.parsons@gmail.com> | 2016-11-01 21:26:53 +0000 |
---|---|---|
committer | Malcolm Parsons <malcolm.parsons@gmail.com> | 2016-11-01 21:26:53 +0000 |
commit | 883ebacd7885be5299e171da2e46e278c13bf671 (patch) | |
tree | b5aeed74843d84ca8548d0e8c890c198426d05cc /clang-tools-extra/clang-tidy/cppcoreguidelines | |
parent | 5fc84a182810d38416248cc5ac8732471e65a294 (diff) | |
download | bcm5719-llvm-883ebacd7885be5299e171da2e46e278c13bf671.tar.gz bcm5719-llvm-883ebacd7885be5299e171da2e46e278c13bf671.zip |
[clang-tidy] Handle bitfields in cppcoreguidelines-pro-type-member-init
Summary:
Unnamed bitfields cannot be initialized.
Bitfields cannot be in-class initialized.
Reviewers: alexfh, hokein, aaron.ballman
Subscribers: Prazek, nemanjai, cfe-commits
Differential Revision: https://reviews.llvm.org/D26119
llvm-svn: 285752
Diffstat (limited to 'clang-tools-extra/clang-tidy/cppcoreguidelines')
-rw-r--r-- | clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp b/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp index 272e2dad1be..a5c26482e4d 100644 --- a/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp +++ b/clang-tools-extra/clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp @@ -358,7 +358,7 @@ void ProTypeMemberInitCheck::checkMissingMemberInitializer( if (!F->hasInClassInitializer() && utils::type_traits::isTriviallyDefaultConstructible(F->getType(), Context) && - !isEmpty(Context, F->getType())) + !isEmpty(Context, F->getType()) && !F->isUnnamedBitfield()) FieldsToInit.insert(F); }); if (FieldsToInit.empty()) @@ -407,7 +407,9 @@ void ProTypeMemberInitCheck::checkMissingMemberInitializer( SmallPtrSet<const FieldDecl *, 16> FieldsToFix; forEachField(ClassDecl, FieldsToInit, true, [&](const FieldDecl *F) { // Don't suggest fixes for enums because we don't know a good default. - if (!F->getType()->isEnumeralType()) + // Don't suggest fixes for bitfields because in-class initialization is not + // possible. + if (!F->getType()->isEnumeralType() && !F->isBitField()) FieldsToFix.insert(F); }); if (FieldsToFix.empty()) |