sedykh.eugene updated this revision to Diff 226677. sedykh.eugene added a comment.
I removed using. Not a big deal. Thank you for the reviews! Repository: rCTE Clang Tools Extra CHANGES SINCE LAST ACTION https://reviews.llvm.org/D69388/new/ https://reviews.llvm.org/D69388 Files: clang-tidy/modernize/UseNodiscardCheck.cpp test/clang-tidy/checkers/modernize-use-nodiscard.cpp Index: test/clang-tidy/checkers/modernize-use-nodiscard.cpp =================================================================== --- test/clang-tidy/checkers/modernize-use-nodiscard.cpp +++ test/clang-tidy/checkers/modernize-use-nodiscard.cpp @@ -23,6 +23,8 @@ typedef unsigned &my_unsigned_reference; typedef const unsigned &my_unsigned_const_reference; +struct NO_DISCARD NoDiscardStruct{}; + class Foo { public: using size_type = unsigned; @@ -160,6 +162,9 @@ // Do not add ``[[nodiscard]]`` to conversion functions. // explicit operator bool() const { return true; } + + // Do not add ``[[nodiscard]]`` to functions returning types marked [[nodiscard]]. + NoDiscardStruct f50() const; }; // Do not add ``[[nodiscard]]`` to Lambda. Index: clang-tidy/modernize/UseNodiscardCheck.cpp =================================================================== --- clang-tidy/modernize/UseNodiscardCheck.cpp +++ clang-tidy/modernize/UseNodiscardCheck.cpp @@ -100,7 +100,9 @@ cxxMethodDecl( allOf(isConst(), isDefinitionOrInline(), unless(anyOf( - returns(voidType()), isNoReturn(), isOverloadedOperator(), + returns(voidType()), + returns(hasDeclaration(decl(hasAttr(clang::attr::WarnUnusedResult)))), + isNoReturn(), isOverloadedOperator(), isVariadic(), hasTemplateReturnType(), hasClassMutableFields(), isConversionOperator(), hasAttr(clang::attr::WarnUnusedResult),
Index: test/clang-tidy/checkers/modernize-use-nodiscard.cpp =================================================================== --- test/clang-tidy/checkers/modernize-use-nodiscard.cpp +++ test/clang-tidy/checkers/modernize-use-nodiscard.cpp @@ -23,6 +23,8 @@ typedef unsigned &my_unsigned_reference; typedef const unsigned &my_unsigned_const_reference; +struct NO_DISCARD NoDiscardStruct{}; + class Foo { public: using size_type = unsigned; @@ -160,6 +162,9 @@ // Do not add ``[[nodiscard]]`` to conversion functions. // explicit operator bool() const { return true; } + + // Do not add ``[[nodiscard]]`` to functions returning types marked [[nodiscard]]. + NoDiscardStruct f50() const; }; // Do not add ``[[nodiscard]]`` to Lambda. Index: clang-tidy/modernize/UseNodiscardCheck.cpp =================================================================== --- clang-tidy/modernize/UseNodiscardCheck.cpp +++ clang-tidy/modernize/UseNodiscardCheck.cpp @@ -100,7 +100,9 @@ cxxMethodDecl( allOf(isConst(), isDefinitionOrInline(), unless(anyOf( - returns(voidType()), isNoReturn(), isOverloadedOperator(), + returns(voidType()), + returns(hasDeclaration(decl(hasAttr(clang::attr::WarnUnusedResult)))), + isNoReturn(), isOverloadedOperator(), isVariadic(), hasTemplateReturnType(), hasClassMutableFields(), isConversionOperator(), hasAttr(clang::attr::WarnUnusedResult),
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits