[clang-tools-extra] [clang-tidy]fix incorrect auto-fix for the string contains a user-defined suffix (PR #122901)

via cfe-commits cfe-commits at lists.llvm.org
Tue Jan 14 06:11:45 PST 2025


================
@@ -136,13 +137,26 @@ void RawStringLiteralCheck::check(const MatchFinder::MatchResult &Result) {
 
 void RawStringLiteralCheck::replaceWithRawStringLiteral(
     const MatchFinder::MatchResult &Result, const StringLiteral *Literal,
-    StringRef Replacement) {
-  CharSourceRange CharRange = Lexer::makeFileCharRange(
-      CharSourceRange::getTokenRange(Literal->getSourceRange()),
-      *Result.SourceManager, getLangOpts());
-  diag(Literal->getBeginLoc(),
-       "escaped string literal can be written as a raw string literal")
-      << FixItHint::CreateReplacement(CharRange, Replacement);
+    std::string Replacement) {
+  DiagnosticBuilder Builder =
+      diag(Literal->getBeginLoc(),
+           "escaped string literal can be written as a raw string literal");
+  const SourceManager &SM = *Result.SourceManager;
+  const CharSourceRange TokenRange =
+      CharSourceRange::getTokenRange(Literal->getSourceRange());
+  Token T;
+  if (Lexer::getRawToken(Literal->getBeginLoc(), T, SM, getLangOpts()))
+    return;
+  const CharSourceRange CharRange =
+      Lexer::makeFileCharRange(TokenRange, SM, getLangOpts());
+  if (T.hasUDSuffix()) {
+    StringRef Text = Lexer::getSourceText(CharRange, SM, getLangOpts());
----------------
EugeneZelenko wrote:

Should be `const`.

https://github.com/llvm/llvm-project/pull/122901


More information about the cfe-commits mailing list