[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