Author: alexfh Date: Thu Apr 21 09:39:12 2016 New Revision: 266992 URL: http://llvm.org/viewvc/llvm-project?rev=266992&view=rev Log: [Clang-tidy] Fix for crash in modernize-raw-string-literal check
Summary: Clang-tidy modernize-raw-string-literal check crashes on run-time assert while it is evaluating compiler predefined identifiers such as - __FUNCTION__ - __func__ - __PRETTY_FUNCTION__ Check is asserting because it cannot find opening quote for such string literal. It occurs only on debug build config. I think that it would be good to prune such cases by crossing off predefined expressions - there is no need to evaluate such matches. Reviewers: LegalizeAdulthood, alexfh Subscribers: cfe-commits Patch by Marek Jenda! Differential Revision: http://reviews.llvm.org/D19331 Modified: clang-tools-extra/trunk/clang-tidy/modernize/RawStringLiteralCheck.cpp clang-tools-extra/trunk/test/clang-tidy/modernize-raw-string-literal.cpp Modified: clang-tools-extra/trunk/clang-tidy/modernize/RawStringLiteralCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/RawStringLiteralCheck.cpp?rev=266992&r1=266991&r2=266992&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/modernize/RawStringLiteralCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/modernize/RawStringLiteralCheck.cpp Thu Apr 21 09:39:12 2016 @@ -108,7 +108,8 @@ void RawStringLiteralCheck::storeOptions } void RawStringLiteralCheck::registerMatchers(MatchFinder *Finder) { - Finder->addMatcher(stringLiteral().bind("lit"), this); + Finder->addMatcher( + stringLiteral(unless(hasParent(predefinedExpr()))).bind("lit"), this); } void RawStringLiteralCheck::check(const MatchFinder::MatchResult &Result) { Modified: clang-tools-extra/trunk/test/clang-tidy/modernize-raw-string-literal.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-raw-string-literal.cpp?rev=266992&r1=266991&r2=266992&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/modernize-raw-string-literal.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/modernize-raw-string-literal.cpp Thu Apr 21 09:39:12 2016 @@ -91,6 +91,10 @@ char const *const HexPrintable("\x40\\") // CHECK-MESSAGES: :[[@LINE-1]]:32: warning: {{.*}} can be written as a raw string literal // CHECK-FIXES: {{^}}char const *const HexPrintable(R"(@\)");{{$}} +char const *const prettyFunction(__PRETTY_FUNCTION__); +char const *const function(__FUNCTION__); +char const *const func(__func__); + #define TRICK(arg_) #arg_ char const *const MacroBody = TRICK(foo\\bar); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits