Author: alexfh Date: Fri Sep 11 17:54:44 2015 New Revision: 247489 URL: http://llvm.org/viewvc/llvm-project?rev=247489&view=rev Log: [clang-tidy] misc-sizeof-container: whitelist std::bitset<>.
It's fine to use sizeof on std::bitset<>, since it doesn't have any external storage, everything's inside. Modified: clang-tools-extra/trunk/clang-tidy/misc/SizeofContainerCheck.cpp clang-tools-extra/trunk/test/clang-tidy/misc-sizeof-container.cpp Modified: clang-tools-extra/trunk/clang-tidy/misc/SizeofContainerCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/SizeofContainerCheck.cpp?rev=247489&r1=247488&r2=247489&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/SizeofContainerCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/misc/SizeofContainerCheck.cpp Fri Sep 11 17:54:44 2015 @@ -36,6 +36,7 @@ void SizeofContainerCheck::registerMatch expr(unless(isInTemplateInstantiation()), expr(sizeOfExpr(has(expr(hasType(hasCanonicalType(hasDeclaration( recordDecl(matchesName("^(::std::|::string)"), + unless(hasName("::std::bitset")), hasMethod(methodDecl(hasName("size"), isPublic(), isConst())))))))))) .bind("sizeof"), Modified: clang-tools-extra/trunk/test/clang-tidy/misc-sizeof-container.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/misc-sizeof-container.cpp?rev=247489&r1=247488&r2=247489&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/misc-sizeof-container.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/misc-sizeof-container.cpp Fri Sep 11 17:54:44 2015 @@ -19,6 +19,12 @@ struct vector { size_t size() const; }; +// std::bitset<> is not a container. sizeof() is reasonable for it. +template <size_t N> +struct bitset { + size_t size() const; +}; + class fake_container1 { size_t size() const; // non-public }; @@ -78,9 +84,11 @@ void f() { std::fake_container1 f1; std::fake_container2 f2; + std::bitset<7> bs; a = sizeof(f1); a = sizeof(f2); + a = sizeof(bs); std::string arr[3]; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits