[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