[PATCH] D135405: fix handling of braced-init temporaries for modernize-use-emplace
BigPeet added a comment. Ping Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135405/new/ https://reviews.llvm.org/D135405 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D135405: fix handling of braced-init temporaries for modernize-use-emplace
BigPeet created this revision. Herald added a subscriber: carlosgalvezp. Herald added a project: All. BigPeet requested review of this revision. Herald added a project: clang-tools-extra. Herald added a subscriber: cfe-commits. Addresses https://github.com/llvm/llvm-project/issues/55870 Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D135405 Files: clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp Index: clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp === --- clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp +++ clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp @@ -1170,3 +1170,167 @@ }; v.emplace_back(std::make_pair(Something(), 2)); } + +struct InnerType { + InnerType(); + InnerType(char const*); +}; + +struct NonTrivialNoCtor { + InnerType it; +}; + +struct NonTrivialWithVector { + std::vector it; +}; + +struct NonTrivialWithCtor { + NonTrivialWithCtor(); + NonTrivialWithCtor(std::vector const&); +}; + +void testBracedInitTemporaries() { + std::vector v1; + + v1.push_back(NonTrivialNoCtor()); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back(NonTrivialNoCtor{}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back({}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back(NonTrivialNoCtor{InnerType{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back({InnerType{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back(NonTrivialNoCtor{InnerType()}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back({InnerType()}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back({{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + + v1.emplace_back(NonTrivialNoCtor()); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.emplace_back(NonTrivialNoCtor{}); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.emplace_back(NonTrivialNoCtor{InnerType{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.emplace_back(NonTrivialNoCtor{{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v1.emplace_back(); + + // These should not be noticed or fixed; after the correction, the code won't + // compile. + v1.push_back(NonTrivialNoCtor{""}); + v1.push_back({""}); + v1.push_back(NonTrivialNoCtor{InnerType{""}}); + v1.push_back({InnerType{""}}); + v1.emplace_back(NonTrivialNoCtor{""}); + + std::vector v2; + + v2.push_back(NonTrivialWithVector()); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back(NonTrivialWithVector{}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back({}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back(NonTrivialWithVector{std::vector{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back({std::vector{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back(NonTrivialWithVector{std::vector()}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back({std::vector()}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back({{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + + v2.emplace_back(NonTrivialWithVector()); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.emplace_back(NonTrivialWithVector{}); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.emplace_back(NonTrivialWithVector{std::vector{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:19: wa
[PATCH] D135405: fix handling of braced-init temporaries for modernize-use-emplace
BigPeet updated this revision to Diff 465888. BigPeet added a comment. - update comments Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135405/new/ https://reviews.llvm.org/D135405 Files: clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp Index: clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp === --- clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp +++ clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp @@ -1170,3 +1170,167 @@ }; v.emplace_back(std::make_pair(Something(), 2)); } + +struct InnerType { + InnerType(); + InnerType(char const*); +}; + +struct NonTrivialNoCtor { + InnerType it; +}; + +struct NonTrivialWithVector { + std::vector it; +}; + +struct NonTrivialWithCtor { + NonTrivialWithCtor(); + NonTrivialWithCtor(std::vector const&); +}; + +void testBracedInitTemporaries() { + std::vector v1; + + v1.push_back(NonTrivialNoCtor()); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back(NonTrivialNoCtor{}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back({}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back(NonTrivialNoCtor{InnerType{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back({InnerType{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back(NonTrivialNoCtor{InnerType()}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back({InnerType()}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back({{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + + v1.emplace_back(NonTrivialNoCtor()); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.emplace_back(NonTrivialNoCtor{}); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.emplace_back(NonTrivialNoCtor{InnerType{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.emplace_back(NonTrivialNoCtor{{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v1.emplace_back(); + + // These should not be noticed or fixed; after the correction, the code won't + // compile. + v1.push_back(NonTrivialNoCtor{""}); + v1.push_back({""}); + v1.push_back(NonTrivialNoCtor{InnerType{""}}); + v1.push_back({InnerType{""}}); + v1.emplace_back(NonTrivialNoCtor{""}); + + std::vector v2; + + v2.push_back(NonTrivialWithVector()); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back(NonTrivialWithVector{}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back({}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back(NonTrivialWithVector{std::vector{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back({std::vector{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back(NonTrivialWithVector{std::vector()}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back({std::vector()}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back({{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + + v2.emplace_back(NonTrivialWithVector()); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.emplace_back(NonTrivialWithVector{}); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.emplace_back(NonTrivialWithVector{std::vector{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.emplace_back(NonT
[PATCH] D135405: fix handling of braced-init temporaries for modernize-use-emplace
BigPeet updated this revision to Diff 466197. BigPeet added a comment. applying clang-format Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135405/new/ https://reviews.llvm.org/D135405 Files: clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp Index: clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp === --- clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp +++ clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp @@ -328,8 +328,8 @@ auto Diag = EmplacyCall ? diag(TemporaryExpr ? TemporaryExpr->getBeginLoc() - : CtorCall ? CtorCall->getBeginLoc() - : MakeCall->getBeginLoc(), + : CtorCall? CtorCall->getBeginLoc() + : MakeCall->getBeginLoc(), "unnecessary temporary object created while calling %0") : diag(Call->getExprLoc(), "use emplace%select{|_back|_front}0 " "instead of push%select{|_back|_front}0"); @@ -369,10 +369,9 @@ return; // FIXME: Will there ever be a CtorCall, if there is no TemporaryExpr? - const SourceLocation ExprBegin = - TemporaryExpr - ? TemporaryExpr->getExprLoc() - : CtorCall ? CtorCall->getExprLoc() : MakeCall->getExprLoc(); + const SourceLocation ExprBegin = TemporaryExpr ? TemporaryExpr->getExprLoc() + : CtorCall? CtorCall->getExprLoc() + : MakeCall->getExprLoc(); // Range for constructor name and opening brace. const auto ParamCallSourceRange = Index: clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp === --- clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp +++ clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp @@ -328,8 +328,8 @@ auto Diag = EmplacyCall ? diag(TemporaryExpr ? TemporaryExpr->getBeginLoc() - : CtorCall ? CtorCall->getBeginLoc() - : MakeCall->getBeginLoc(), + : CtorCall? CtorCall->getBeginLoc() + : MakeCall->getBeginLoc(), "unnecessary temporary object created while calling %0") : diag(Call->getExprLoc(), "use emplace%select{|_back|_front}0 " "instead of push%select{|_back|_front}0"); @@ -369,10 +369,9 @@ return; // FIXME: Will there ever be a CtorCall, if there is no TemporaryExpr? - const SourceLocation ExprBegin = - TemporaryExpr - ? TemporaryExpr->getExprLoc() - : CtorCall ? CtorCall->getExprLoc() : MakeCall->getExprLoc(); + const SourceLocation ExprBegin = TemporaryExpr ? TemporaryExpr->getExprLoc() + : CtorCall? CtorCall->getExprLoc() + : MakeCall->getExprLoc(); // Range for constructor name and opening brace. const auto ParamCallSourceRange = ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D135405: fix handling of braced-init temporaries for modernize-use-emplace
BigPeet updated this revision to Diff 466198. BigPeet added a comment. fixed wrong arc diff handling :-/ Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135405/new/ https://reviews.llvm.org/D135405 Files: clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp Index: clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp === --- clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp +++ clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp @@ -1170,3 +1170,167 @@ }; v.emplace_back(std::make_pair(Something(), 2)); } + +struct InnerType { + InnerType(); + InnerType(char const*); +}; + +struct NonTrivialNoCtor { + InnerType it; +}; + +struct NonTrivialWithVector { + std::vector it; +}; + +struct NonTrivialWithCtor { + NonTrivialWithCtor(); + NonTrivialWithCtor(std::vector const&); +}; + +void testBracedInitTemporaries() { + std::vector v1; + + v1.push_back(NonTrivialNoCtor()); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back(NonTrivialNoCtor{}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back({}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back(NonTrivialNoCtor{InnerType{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back({InnerType{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back(NonTrivialNoCtor{InnerType()}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back({InnerType()}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.push_back({{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v1.emplace_back(); + + v1.emplace_back(NonTrivialNoCtor()); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.emplace_back(NonTrivialNoCtor{}); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.emplace_back(NonTrivialNoCtor{InnerType{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v1.emplace_back(); + v1.emplace_back(NonTrivialNoCtor{{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v1.emplace_back(); + + // These should not be noticed or fixed; after the correction, the code won't + // compile. + v1.push_back(NonTrivialNoCtor{""}); + v1.push_back({""}); + v1.push_back(NonTrivialNoCtor{InnerType{""}}); + v1.push_back({InnerType{""}}); + v1.emplace_back(NonTrivialNoCtor{""}); + + std::vector v2; + + v2.push_back(NonTrivialWithVector()); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back(NonTrivialWithVector{}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back({}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back(NonTrivialWithVector{std::vector{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back({std::vector{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back(NonTrivialWithVector{std::vector()}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back({std::vector()}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.push_back({{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: use emplace_back + // CHECK-FIXES: v2.emplace_back(); + + v2.emplace_back(NonTrivialWithVector()); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.emplace_back(NonTrivialWithVector{}); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.emplace_back(NonTrivialWithVector{std::vector{}}); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: v2.emplace_back(); + v2.e
[PATCH] D135405: fix handling of braced-init temporaries for modernize-use-emplace
BigPeet added a comment. Just a reminder. Do I have to do anything? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135405/new/ https://reviews.llvm.org/D135405 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D135405: fix handling of braced-init temporaries for modernize-use-emplace
BigPeet added a comment. Ping. (Sorry, it's my first time contributing to LLVM and I simply don't know what happens next. Do I need to do anything? Or is it just waiting to get merged at some point?) Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135405/new/ https://reviews.llvm.org/D135405 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D135405: fix handling of braced-init temporaries for modernize-use-emplace
BigPeet added a comment. GitHub username: BigPeet GitHub email: pwolf2...@gmail.com Thanks for your quick response. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135405/new/ https://reviews.llvm.org/D135405 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D135405: fix handling of braced-init temporaries for modernize-use-emplace
BigPeet added a comment. Ping? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135405/new/ https://reviews.llvm.org/D135405 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D142939: Fix handling of -> calls for modernize-use-emplace
BigPeet created this revision. Herald added a subscriber: carlosgalvezp. Herald added a reviewer: njames93. Herald added a project: All. BigPeet requested review of this revision. Herald added a project: clang-tools-extra. Herald added a subscriber: cfe-commits. Fixes #55869 Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D142939 Files: clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp Index: clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp === --- clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp +++ clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp @@ -1334,3 +1334,40 @@ v3.push_back({{0}}); v3.push_back({{}}); } + +void testWithPointerTypes() { + std::vector v; + std::vector* vp = &v; + + vp->push_back(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_back instead of push_back [modernize-use-emplace] + // CHECK-FIXES: vp->emplace_back(1, 2); + + vp->push_back(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_back instead of push_back [modernize-use-emplace] + // CHECK-FIXES: vp->emplace_back(1, 2); + + vp->push_back(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_back instead of push_back [modernize-use-emplace] + // CHECK-FIXES: vp->emplace_back(); + + vp->push_back(Something{}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_back instead of push_back [modernize-use-emplace] + // CHECK-FIXES: vp->emplace_back(); + + vp->emplace_back(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: vp->emplace_back(1, 2); + + vp->emplace_back(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: vp->emplace_back(1, 2); + + vp->emplace_back(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: vp->emplace_back(); + + vp->emplace_back(Something{}); + // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: vp->emplace_back(); +} Index: clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp === --- clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp +++ clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp @@ -130,27 +130,35 @@ // because this requires special treatment (it could cause performance // regression) // + match for emplace calls that should be replaced with insertion + + auto PushBackTypes = hasCanonicalType( + hasDeclaration(cxxRecordDecl(hasAnyName(ContainersWithPushBack; auto CallPushBack = cxxMemberCallExpr( hasDeclaration(functionDecl(hasName("push_back"))), - on(hasType(hasCanonicalType( - hasDeclaration(cxxRecordDecl(hasAnyName(ContainersWithPushBack))); + on(anyOf(hasType(PushBackTypes), + hasType(pointerType(pointee(PushBackTypes)); - auto CallPush = - cxxMemberCallExpr(hasDeclaration(functionDecl(hasName("push"))), -on(hasType(hasCanonicalType(hasDeclaration( -cxxRecordDecl(hasAnyName(ContainersWithPush))); + auto PushTypes = hasCanonicalType( + hasDeclaration(cxxRecordDecl(hasAnyName(ContainersWithPush; + auto CallPush = cxxMemberCallExpr( + hasDeclaration(functionDecl(hasName("push"))), + on(anyOf(hasType(PushTypes), hasType(pointerType(pointee(PushTypes)); + auto PushFrontTypes = hasCanonicalType( + hasDeclaration(cxxRecordDecl(hasAnyName(ContainersWithPushFront; auto CallPushFront = cxxMemberCallExpr( hasDeclaration(functionDecl(hasName("push_front"))), - on(hasType(hasCanonicalType(hasDeclaration( - cxxRecordDecl(hasAnyName(ContainersWithPushFront))); - - auto CallEmplacy = cxxMemberCallExpr( - hasDeclaration( - functionDecl(hasAnyNameIgnoringTemplates(EmplacyFunctions))), - on(hasType(hasCanonicalType(hasDeclaration(has(typedefNameDecl( - hasName("value_type"), hasType(type(hasUnqualifiedDesugaredType( - recordType().bind("value_type"))); + on(anyOf(hasType(PushFrontTypes), + hasType(pointerType(pointee(PushFrontTypes)); + + auto EmplacyTypes = hasCanonicalType(hasDeclaration(has(typedefNameDecl( + hasName("value_type"), hasType(type(hasUnqualifiedDesugaredType( + recordType().bind("value_type"; + auto CallEmplacy = + cxxMemberCallExpr(hasDeclaration(functionDecl( +
[PATCH] D142939: Fix handling of -> calls for modernize-use-emplace
BigPeet updated this revision to Diff 493745. BigPeet added a comment. - reducing code repitition + further tests Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D142939/new/ https://reviews.llvm.org/D142939 Files: clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp Index: clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp === --- clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp +++ clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp @@ -1334,3 +1334,90 @@ v3.push_back({{0}}); v3.push_back({{}}); } + +void testWithPointerTypes() { + std::list l; + std::list* lp = &l; + std::stack s; + std::stack* sp; + + lp->push_back(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_back instead of push_back [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_back(1, 2); + lp->push_front(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_front instead of push_front [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_front(1, 2); + sp->push(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace instead of push [modernize-use-emplace] + // CHECK-FIXES: sp->emplace(1, 2); + + lp->push_back(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_back instead of push_back [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_back(1, 2); + lp->push_front(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_front instead of push_front [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_front(1, 2); + sp->push(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace instead of push [modernize-use-emplace] + // CHECK-FIXES: sp->emplace(1, 2); + + lp->push_back(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_back instead of push_back [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_back(); + lp->push_front(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_front instead of push_front [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_front(); + sp->push(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace instead of push [modernize-use-emplace] + // CHECK-FIXES: sp->emplace(); + + lp->push_back(Something{}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_back instead of push_back [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_back(); + lp->push_front(Something{}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_front instead of push_front [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_front(); + sp->push(Something{}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace instead of push [modernize-use-emplace] + // CHECK-FIXES: sp->emplace(); + + lp->emplace_back(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: lp->emplace_back(1, 2); + lp->emplace_front(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: unnecessary temporary object created while calling emplace_front + // CHECK-FIXES: lp->emplace_front(1, 2); + sp->emplace(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: unnecessary temporary object created while calling emplace + // CHECK-FIXES: sp->emplace(1, 2); + + lp->emplace_back(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: lp->emplace_back(1, 2); + lp->emplace_front(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: unnecessary temporary object created while calling emplace_front + // CHECK-FIXES: lp->emplace_front(1, 2); + sp->emplace(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: unnecessary temporary object created while calling emplace + // CHECK-FIXES: sp->emplace(1, 2); + + lp->emplace_back(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: lp->emplace_back(); + lp->emplace_front(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: unnecessary temporary object created while calling emplace_front + // CHECK-FIXES: lp->emplace_front(); + sp->emplace(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: unnecessary temporary object created while calling emplace + // CHECK-FIXES: sp->emplace(); + + lp->emplace_back(Something{}); + // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: lp->emplace_back(); + lp->emplace_front(Something{}); + // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: unnecessary temporary object created w
[PATCH] D142939: Fix handling of -> calls for modernize-use-emplace
BigPeet updated this revision to Diff 493753. BigPeet added a comment. - additional deduplication of code Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D142939/new/ https://reviews.llvm.org/D142939 Files: clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp Index: clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp === --- clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp +++ clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp @@ -1334,3 +1334,90 @@ v3.push_back({{0}}); v3.push_back({{}}); } + +void testWithPointerTypes() { + std::list l; + std::list* lp = &l; + std::stack s; + std::stack* sp; + + lp->push_back(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_back instead of push_back [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_back(1, 2); + lp->push_front(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_front instead of push_front [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_front(1, 2); + sp->push(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace instead of push [modernize-use-emplace] + // CHECK-FIXES: sp->emplace(1, 2); + + lp->push_back(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_back instead of push_back [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_back(1, 2); + lp->push_front(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_front instead of push_front [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_front(1, 2); + sp->push(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace instead of push [modernize-use-emplace] + // CHECK-FIXES: sp->emplace(1, 2); + + lp->push_back(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_back instead of push_back [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_back(); + lp->push_front(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_front instead of push_front [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_front(); + sp->push(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace instead of push [modernize-use-emplace] + // CHECK-FIXES: sp->emplace(); + + lp->push_back(Something{}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_back instead of push_back [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_back(); + lp->push_front(Something{}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_front instead of push_front [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_front(); + sp->push(Something{}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace instead of push [modernize-use-emplace] + // CHECK-FIXES: sp->emplace(); + + lp->emplace_back(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: lp->emplace_back(1, 2); + lp->emplace_front(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: unnecessary temporary object created while calling emplace_front + // CHECK-FIXES: lp->emplace_front(1, 2); + sp->emplace(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: unnecessary temporary object created while calling emplace + // CHECK-FIXES: sp->emplace(1, 2); + + lp->emplace_back(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: lp->emplace_back(1, 2); + lp->emplace_front(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: unnecessary temporary object created while calling emplace_front + // CHECK-FIXES: lp->emplace_front(1, 2); + sp->emplace(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: unnecessary temporary object created while calling emplace + // CHECK-FIXES: sp->emplace(1, 2); + + lp->emplace_back(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: lp->emplace_back(); + lp->emplace_front(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: unnecessary temporary object created while calling emplace_front + // CHECK-FIXES: lp->emplace_front(); + sp->emplace(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: unnecessary temporary object created while calling emplace + // CHECK-FIXES: sp->emplace(); + + lp->emplace_back(Something{}); + // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: lp->emplace_back(); + lp->emplace_front(Something{}); + // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: unnecessary temporary object created while cal
[PATCH] D142939: Fix handling of -> calls for modernize-use-emplace
BigPeet added a comment. Refactored the code a little bit to get rid of some repetitions. Should effectively match the same code as the accepted revision. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D142939/new/ https://reviews.llvm.org/D142939 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D142939: Fix handling of -> calls for modernize-use-emplace
BigPeet updated this revision to Diff 493756. BigPeet added a comment. - fix passing vector by value instead of by ref-to-const Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D142939/new/ https://reviews.llvm.org/D142939 Files: clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp Index: clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp === --- clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp +++ clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp @@ -1334,3 +1334,90 @@ v3.push_back({{0}}); v3.push_back({{}}); } + +void testWithPointerTypes() { + std::list l; + std::list* lp = &l; + std::stack s; + std::stack* sp; + + lp->push_back(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_back instead of push_back [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_back(1, 2); + lp->push_front(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_front instead of push_front [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_front(1, 2); + sp->push(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace instead of push [modernize-use-emplace] + // CHECK-FIXES: sp->emplace(1, 2); + + lp->push_back(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_back instead of push_back [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_back(1, 2); + lp->push_front(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_front instead of push_front [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_front(1, 2); + sp->push(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace instead of push [modernize-use-emplace] + // CHECK-FIXES: sp->emplace(1, 2); + + lp->push_back(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_back instead of push_back [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_back(); + lp->push_front(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_front instead of push_front [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_front(); + sp->push(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace instead of push [modernize-use-emplace] + // CHECK-FIXES: sp->emplace(); + + lp->push_back(Something{}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_back instead of push_back [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_back(); + lp->push_front(Something{}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace_front instead of push_front [modernize-use-emplace] + // CHECK-FIXES: lp->emplace_front(); + sp->push(Something{}); + // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use emplace instead of push [modernize-use-emplace] + // CHECK-FIXES: sp->emplace(); + + lp->emplace_back(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: lp->emplace_back(1, 2); + lp->emplace_front(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: unnecessary temporary object created while calling emplace_front + // CHECK-FIXES: lp->emplace_front(1, 2); + sp->emplace(Something(1, 2)); + // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: unnecessary temporary object created while calling emplace + // CHECK-FIXES: sp->emplace(1, 2); + + lp->emplace_back(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: lp->emplace_back(1, 2); + lp->emplace_front(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: unnecessary temporary object created while calling emplace_front + // CHECK-FIXES: lp->emplace_front(1, 2); + sp->emplace(Something{1, 2}); + // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: unnecessary temporary object created while calling emplace + // CHECK-FIXES: sp->emplace(1, 2); + + lp->emplace_back(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: lp->emplace_back(); + lp->emplace_front(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: unnecessary temporary object created while calling emplace_front + // CHECK-FIXES: lp->emplace_front(); + sp->emplace(Something()); + // CHECK-MESSAGES: :[[@LINE-1]]:15: warning: unnecessary temporary object created while calling emplace + // CHECK-FIXES: sp->emplace(); + + lp->emplace_back(Something{}); + // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: unnecessary temporary object created while calling emplace_back + // CHECK-FIXES: lp->emplace_back(); + lp->emplace_front(Something{}); + // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: unnecessary temporary ob
[PATCH] D142939: Fix handling of -> calls for modernize-use-emplace
BigPeet added a comment. > Generally we use prefer `llvm::ArrayRef` over `const std::vector &` I will keep this in mind. Or should this be fixed in this revision? Anyway, if this gets merged, my username/mail are GitHub username: BigPeet GitHub email: pwolf2...@gmail.com Thanks for the fast review response! Comment at: clang-tools-extra/clang-tidy/modernize/UseEmplaceCheck.cpp:93 +// Matches if the node has canonical type matching any of the given names. +auto hasWantedType(const std::vector &TypeNames) { + return hasCanonicalType(hasDeclaration(cxxRecordDecl(hasAnyName(TypeNames; njames93 wrote: > Generally we use prefer `llvm::ArrayRef` over `const std::vector &` > Generally we use prefer `llvm::ArrayRef` over `const std::vector &` Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D142939/new/ https://reviews.llvm.org/D142939 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D142939: Fix handling of -> calls for modernize-use-emplace
BigPeet added a comment. Ping. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D142939/new/ https://reviews.llvm.org/D142939 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D142939: Fix handling of -> calls for modernize-use-emplace
BigPeet added a comment. Thank you very much. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D142939/new/ https://reviews.llvm.org/D142939 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D135405: fix handling of braced-init temporaries for modernize-use-emplace
BigPeet added a comment. Ping Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135405/new/ https://reviews.llvm.org/D135405 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D135405: fix handling of braced-init temporaries for modernize-use-emplace
BigPeet added a comment. Thanks for the review. Do I have to do anything or how will this be handled from here? Comment at: clang-tools-extra/test/clang-tidy/checkers/modernize/use-emplace.cpp:1268 + + v2.emplace_back(NonTrivialWithVector()); + // CHECK-MESSAGES: :[[@LINE-1]]:19: warning: unnecessary temporary object created while calling emplace_back njames93 wrote: > Is this a test case that wasn't already caught, as braces aren't being used > here This case was/is already caught. I added this check (and a few others) to make sure I don't break that behavior. It might be redundant and could be removed. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135405/new/ https://reviews.llvm.org/D135405 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits