[clang-tools-extra] 48fad11 - [clangd] Get rid of lexer usage in ObjCLocalizeStringLiteral tweak
Kadir Cetinkaya via cfe-commits
cfe-commits at lists.llvm.org
Fri Feb 28 00:38:39 PST 2020
Author: Kadir Cetinkaya
Date: 2020-02-28T09:38:26+01:00
New Revision: 48fad110e08a5765632d45e6a3c30186b21cc81a
URL: https://github.com/llvm/llvm-project/commit/48fad110e08a5765632d45e6a3c30186b21cc81a
DIFF: https://github.com/llvm/llvm-project/commit/48fad110e08a5765632d45e6a3c30186b21cc81a.diff
LOG: [clangd] Get rid of lexer usage in ObjCLocalizeStringLiteral tweak
Reviewers: hokein
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D75230
Added:
Modified:
clang-tools-extra/clangd/refactor/tweaks/ObjCLocalizeStringLiteral.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clangd/refactor/tweaks/ObjCLocalizeStringLiteral.cpp b/clang-tools-extra/clangd/refactor/tweaks/ObjCLocalizeStringLiteral.cpp
index 4e2521911072..62a306c9316d 100644
--- a/clang-tools-extra/clangd/refactor/tweaks/ObjCLocalizeStringLiteral.cpp
+++ b/clang-tools-extra/clangd/refactor/tweaks/ObjCLocalizeStringLiteral.cpp
@@ -63,15 +63,19 @@ bool ObjCLocalizeStringLiteral::prepare(const Selection &Inputs) {
Expected<Tweak::Effect>
ObjCLocalizeStringLiteral::apply(const Selection &Inputs) {
- auto &SM = Inputs.AST->getSourceManager();
- auto &LangOpts = Inputs.AST->getASTContext().getLangOpts();
+ auto *AST = Inputs.AST;
+ auto &SM = AST->getSourceManager();
+ const auto &TB = AST->getTokens();
+ auto Toks = TB.spelledForExpanded(TB.expandedTokens(Str->getSourceRange()));
+ if (!Toks || Toks->empty())
+ return llvm::createStringError(llvm::inconvertibleErrorCode(),
+ "Failed to find tokens to replace.");
+ // Insert `NSLocalizedString(` before the literal.
auto Reps = tooling::Replacements(tooling::Replacement(
- SM, CharSourceRange::getCharRange(Str->getBeginLoc()),
- "NSLocalizedString(", LangOpts));
- SourceLocation EndLoc = Lexer::getLocForEndOfToken(
- Str->getEndLoc(), 0, Inputs.AST->getSourceManager(), LangOpts);
- if (auto Err = Reps.add(tooling::Replacement(
- SM, CharSourceRange::getCharRange(EndLoc), ", @\"\")", LangOpts)))
+ SM, Toks->front().location(), 0, "NSLocalizedString("));
+ // Insert `, @"")` after the literal.
+ if (auto Err = Reps.add(
+ tooling::Replacement(SM, Toks->back().endLocation(), 0, ", @\"\")")))
return std::move(Err);
return Effect::mainFileEdit(SM, std::move(Reps));
}
More information about the cfe-commits
mailing list