[clang-tools-extra] r260217 - [clang-tidy] Make readability-container-size-empty work with inline namespaces. Fix PR25812.
Alexander Kornienko via cfe-commits
cfe-commits at lists.llvm.org
Tue Feb 9 03:54:51 PST 2016
I think, we need to add a `hasAnyName()` matcher that would take a list of
names.
On Tue, Feb 9, 2016 at 11:20 AM, Gabor Horvath via cfe-commits <
cfe-commits at lists.llvm.org> wrote:
> Author: xazax
> Date: Tue Feb 9 04:20:48 2016
> New Revision: 260217
>
> URL: http://llvm.org/viewvc/llvm-project?rev=260217&view=rev
> Log:
> [clang-tidy] Make readability-container-size-empty work with inline
> namespaces. Fix PR25812.
>
> Modified:
>
> clang-tools-extra/trunk/clang-tidy/readability/ContainerSizeEmptyCheck.cpp
>
> clang-tools-extra/trunk/test/clang-tidy/readability-container-size-empty.cpp
>
> Modified:
> clang-tools-extra/trunk/clang-tidy/readability/ContainerSizeEmptyCheck.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/readability/ContainerSizeEmptyCheck.cpp?rev=260217&r1=260216&r2=260217&view=diff
>
> ==============================================================================
> ---
> clang-tools-extra/trunk/clang-tidy/readability/ContainerSizeEmptyCheck.cpp
> (original)
> +++
> clang-tools-extra/trunk/clang-tidy/readability/ContainerSizeEmptyCheck.cpp
> Tue Feb 9 04:20:48 2016
> @@ -14,23 +14,23 @@
>
> using namespace clang::ast_matchers;
>
> -static bool isContainer(llvm::StringRef ClassName) {
> - static const char *const ContainerNames[] = {"std::array",
> - "std::deque",
> - "std::forward_list",
> - "std::list",
> - "std::map",
> - "std::multimap",
> - "std::multiset",
> - "std::priority_queue",
> - "std::queue",
> - "std::set",
> - "std::stack",
> - "std::unordered_map",
> - "std::unordered_multimap",
> - "std::unordered_multiset",
> - "std::unordered_set",
> - "std::vector"};
> +static bool isContainerName(llvm::StringRef ClassName) {
> + static const char *const ContainerNames[] = {"array",
> + "deque",
> + "forward_list",
> + "list",
> + "map",
> + "multimap",
> + "multiset",
> + "priority_queue",
> + "queue",
> + "set",
> + "stack",
> + "unordered_map",
> + "unordered_multimap",
> + "unordered_multiset",
> + "unordered_set",
> + "vector"};
> return std::binary_search(std::begin(ContainerNames),
> std::end(ContainerNames), ClassName);
> }
> @@ -38,7 +38,10 @@ static bool isContainer(llvm::StringRef
> namespace clang {
> namespace {
> AST_MATCHER(NamedDecl, stlContainer) {
> - return isContainer(Node.getQualifiedNameAsString());
> + if (!isContainerName(Node.getName()))
> + return false;
> +
> + return StringRef(Node.getQualifiedNameAsString()).startswith("std::");
> }
> } // namespace
>
>
> Modified:
> clang-tools-extra/trunk/test/clang-tidy/readability-container-size-empty.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/readability-container-size-empty.cpp?rev=260217&r1=260216&r2=260217&view=diff
>
> ==============================================================================
> ---
> clang-tools-extra/trunk/test/clang-tidy/readability-container-size-empty.cpp
> (original)
> +++
> clang-tools-extra/trunk/test/clang-tidy/readability-container-size-empty.cpp
> Tue Feb 9 04:20:48 2016
> @@ -2,17 +2,32 @@
>
> namespace std {
> template <typename T> struct vector {
> - vector() {}
> + vector();
> unsigned long size() const;
> bool empty() const;
> };
> +
> +inline namespace __v2 {
> +template <typename T> struct set {
> + set();
> + unsigned long size() const;
> + bool empty() const;
> +};
> +}
> +
> +
> }
>
> int main() {
> + std::set<int> intSet;
> + if (intSet.size() == 0)
> + ;
> + // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should
> be used to check for emptiness instead of 'size'
> [readability-container-size-empty]
> + // CHECK-FIXES: {{^ }}if (intSet.empty()){{$}}
> std::vector<int> vect;
> if (vect.size() == 0)
> ;
> - // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should
> be used to check for emptiness instead of 'size'
> [readability-container-size-empty]
> + // CHECK-MESSAGES: :[[@LINE-2]]:7: warning: the 'empty' method should
> be used
> // CHECK-FIXES: {{^ }}if (vect.empty()){{$}}
> if (vect.size() != 0)
> ;
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160209/76731ce3/attachment.html>
More information about the cfe-commits
mailing list