diff options
Diffstat (limited to 'clang-tools-extra')
-rw-r--r-- | clang-tools-extra/clang-tidy/readability/ContainerSizeEmptyCheck.cpp | 4 | ||||
-rw-r--r-- | clang-tools-extra/test/clang-tidy/readability-container-size-empty.cpp | 14 |
2 files changed, 17 insertions, 1 deletions
diff --git a/clang-tools-extra/clang-tidy/readability/ContainerSizeEmptyCheck.cpp b/clang-tools-extra/clang-tidy/readability/ContainerSizeEmptyCheck.cpp index 79e4061c8c3..665d1dbe349 100644 --- a/clang-tools-extra/clang-tidy/readability/ContainerSizeEmptyCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/ContainerSizeEmptyCheck.cpp @@ -58,7 +58,9 @@ void ContainerSizeEmptyCheck::registerMatchers(MatchFinder *Finder) { hasType(pointsTo(ValidContainer)), hasType(references(ValidContainer)))) .bind("STLObject")), - callee(cxxMethodDecl(hasName("size"))), WrongUse) + callee(cxxMethodDecl(hasName("size"))), WrongUse, + unless(hasAncestor(cxxMethodDecl( + ofClass(equalsBoundNode("container")))))) .bind("SizeCallExpr"), this); } diff --git a/clang-tools-extra/test/clang-tidy/readability-container-size-empty.cpp b/clang-tools-extra/test/clang-tidy/readability-container-size-empty.cpp index 8cf332b62f9..6e6c90f553e 100644 --- a/clang-tools-extra/test/clang-tidy/readability-container-size-empty.cpp +++ b/clang-tools-extra/test/clang-tidy/readability-container-size-empty.cpp @@ -61,6 +61,20 @@ public: class Derived : public Container { }; +class Container2 { +public: + int size() const; + bool empty() const { return size() == 0; } +}; + +class Container3 { +public: + int size() const; + bool empty() const; +}; + +bool Container3::empty() const { return this->size() == 0; } + int main() { std::set<int> intSet; std::string str; |