Skip to content

Commit 7e87813

Browse files
committed
[Refactoring] Move LocalizeString to its own file
1 parent 94ab95e commit 7e87813

File tree

3 files changed

+55
-38
lines changed

3 files changed

+55
-38
lines changed

lib/Refactoring/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ add_swift_host_library(swiftRefactoring STATIC
1212
ExtractRepeatedExpr.cpp
1313
ExtractFunction.cpp
1414
FillProtocolStubs.cpp
15+
LocalizeString.cpp
1516
MoveMembersToExtension.cpp
1617
Refactoring.cpp
1718
Renamer.cpp

lib/Refactoring/LocalizeString.cpp

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
//===----------------------------------------------------------------------===//
2+
//
3+
// This source file is part of the Swift.org open source project
4+
//
5+
// Copyright (c) 2014 - 2023 Apple Inc. and the Swift project authors
6+
// Licensed under Apache License v2.0 with Runtime Library Exception
7+
//
8+
// See https://swift.org/LICENSE.txt for license information
9+
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
10+
//
11+
//===----------------------------------------------------------------------===//
12+
13+
#include "RefactoringActions.h"
14+
15+
using namespace swift::refactoring;
16+
17+
static Expr *findLocalizeTarget(ResolvedCursorInfoPtr CursorInfo) {
18+
auto ExprStartInfo = dyn_cast<ResolvedExprStartCursorInfo>(CursorInfo);
19+
if (!ExprStartInfo)
20+
return nullptr;
21+
struct StringLiteralFinder : public SourceEntityWalker {
22+
SourceLoc StartLoc;
23+
Expr *Target;
24+
StringLiteralFinder(SourceLoc StartLoc)
25+
: StartLoc(StartLoc), Target(nullptr) {}
26+
bool walkToExprPre(Expr *E) override {
27+
if (E->getStartLoc() != StartLoc)
28+
return false;
29+
if (E->getKind() == ExprKind::InterpolatedStringLiteral)
30+
return false;
31+
if (E->getKind() == ExprKind::StringLiteral) {
32+
Target = E;
33+
return false;
34+
}
35+
return true;
36+
}
37+
} Walker(ExprStartInfo->getTrailingExpr()->getStartLoc());
38+
Walker.walk(ExprStartInfo->getTrailingExpr());
39+
return Walker.Target;
40+
}
41+
42+
bool RefactoringActionLocalizeString::isApplicable(ResolvedCursorInfoPtr Tok,
43+
DiagnosticEngine &Diag) {
44+
return findLocalizeTarget(Tok);
45+
}
46+
47+
bool RefactoringActionLocalizeString::performChange() {
48+
Expr *Target = findLocalizeTarget(CursorInfo);
49+
if (!Target)
50+
return true;
51+
EditConsumer.accept(SM, Target->getStartLoc(), "NSLocalizedString(");
52+
EditConsumer.insertAfter(SM, Target->getEndLoc(), ", comment: \"\")");
53+
return false;
54+
}

lib/Refactoring/Refactoring.cpp

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -566,44 +566,6 @@ collectRefactoringsAtCursor(SourceFile *SF, unsigned Line, unsigned Column,
566566
return collectRefactorings(Tok, /*ExcludeRename=*/false);
567567
}
568568

569-
static Expr *findLocalizeTarget(ResolvedCursorInfoPtr CursorInfo) {
570-
auto ExprStartInfo = dyn_cast<ResolvedExprStartCursorInfo>(CursorInfo);
571-
if (!ExprStartInfo)
572-
return nullptr;
573-
struct StringLiteralFinder: public SourceEntityWalker {
574-
SourceLoc StartLoc;
575-
Expr *Target;
576-
StringLiteralFinder(SourceLoc StartLoc): StartLoc(StartLoc), Target(nullptr) {}
577-
bool walkToExprPre(Expr *E) override {
578-
if (E->getStartLoc() != StartLoc)
579-
return false;
580-
if (E->getKind() == ExprKind::InterpolatedStringLiteral)
581-
return false;
582-
if (E->getKind() == ExprKind::StringLiteral) {
583-
Target = E;
584-
return false;
585-
}
586-
return true;
587-
}
588-
} Walker(ExprStartInfo->getTrailingExpr()->getStartLoc());
589-
Walker.walk(ExprStartInfo->getTrailingExpr());
590-
return Walker.Target;
591-
}
592-
593-
bool RefactoringActionLocalizeString::isApplicable(ResolvedCursorInfoPtr Tok,
594-
DiagnosticEngine &Diag) {
595-
return findLocalizeTarget(Tok);
596-
}
597-
598-
bool RefactoringActionLocalizeString::performChange() {
599-
Expr* Target = findLocalizeTarget(CursorInfo);
600-
if (!Target)
601-
return true;
602-
EditConsumer.accept(SM, Target->getStartLoc(), "NSLocalizedString(");
603-
EditConsumer.insertAfter(SM, Target->getEndLoc(), ", comment: \"\")");
604-
return false;
605-
}
606-
607569
struct MemberwiseParameter {
608570
CharSourceRange NameRange;
609571
Type MemberType;

0 commit comments

Comments
 (0)