Author: hokein Date: Tue Jan 23 03:43:18 2018 New Revision: 323191 URL: http://llvm.org/viewvc/llvm-project?rev=323191&view=rev Log: [clang-tidy] Don't generate fixes for invalid new expr location in modernize-make-unique.
Reviewers: ilya-biryukov Reviewed By: ilya-biryukov Subscribers: klimek, xazax.hun, cfe-commits Differential Revision: https://reviews.llvm.org/D42363 Modified: clang-tools-extra/trunk/clang-tidy/modernize/MakeSmartPtrCheck.cpp clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique.cpp Modified: clang-tools-extra/trunk/clang-tidy/modernize/MakeSmartPtrCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/MakeSmartPtrCheck.cpp?rev=323191&r1=323190&r2=323191&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/modernize/MakeSmartPtrCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/modernize/MakeSmartPtrCheck.cpp Tue Jan 23 03:43:18 2018 @@ -241,6 +241,10 @@ bool MakeSmartPtrCheck::replaceNew(Diagn SourceLocation NewStart = New->getSourceRange().getBegin(); SourceLocation NewEnd = New->getSourceRange().getEnd(); + // Skip when the source location of the new expression is invalid. + if (NewStart.isInvalid() || NewEnd.isInvalid()) + return false; + std::string ArraySizeExpr; if (const auto* ArraySize = New->getArraySize()) { ArraySizeExpr = Lexer::getSourceText(CharSourceRange::getTokenRange( Modified: clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique.cpp?rev=323191&r1=323190&r2=323191&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/modernize-make-unique.cpp Tue Jan 23 03:43:18 2018 @@ -498,3 +498,12 @@ void invoke_template() { Foo* foo; template_fun(foo); } + +void no_fix_for_invalid_new_loc() { + // FIXME: Although the code is valid, the end location of `new struct Base` is + // invalid. Correct it once https://bugs.llvm.org/show_bug.cgi?id=35952 is + // fixed. + auto T = std::unique_ptr<Base>(new struct Base); + // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: use std::make_unique instead + // CHECK-FIXES: auto T = std::unique_ptr<Base>(new struct Base); +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits