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@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@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits