Skip to content

Commit b598baf

Browse files
authored
Merge pull request #69783 from ahoppen/ahoppen/rename-cleanup-1
Remove two pImpl abstraction layers in rename
2 parents 3d89295 + e6deb0b commit b598baf

File tree

4 files changed

+67
-95
lines changed

4 files changed

+67
-95
lines changed

include/swift/Refactoring/Refactoring.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,11 @@ class FindRenameRangesConsumer {
100100
};
101101

102102
class FindRenameRangesAnnotatingConsumer : public FindRenameRangesConsumer {
103-
struct Implementation;
104-
Implementation &Impl;
103+
std::unique_ptr<SourceEditConsumer> pRewriter;
105104

106105
public:
107106
FindRenameRangesAnnotatingConsumer(SourceManager &SM, unsigned BufferId,
108107
llvm::raw_ostream &OS);
109-
~FindRenameRangesAnnotatingConsumer();
110108
void accept(SourceManager &SM, RegionType RegionType,
111109
ArrayRef<RenameRangeDetail> Ranges) override;
112110
};

lib/Refactoring/FindRenameRangesAnnotatingConsumer.cpp

Lines changed: 33 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -14,62 +14,50 @@
1414

1515
using namespace swift::refactoring;
1616

17-
struct swift::ide::FindRenameRangesAnnotatingConsumer::Implementation {
18-
std::unique_ptr<SourceEditConsumer> pRewriter;
19-
Implementation(SourceManager &SM, unsigned BufferId, raw_ostream &OS)
20-
: pRewriter(new SourceEditOutputConsumer(SM, BufferId, OS)) {}
21-
static StringRef tag(RefactoringRangeKind Kind) {
22-
switch (Kind) {
23-
case RefactoringRangeKind::BaseName:
24-
return "base";
25-
case RefactoringRangeKind::KeywordBaseName:
26-
return "keywordBase";
27-
case RefactoringRangeKind::ParameterName:
28-
return "param";
29-
case RefactoringRangeKind::NoncollapsibleParameterName:
30-
return "noncollapsibleparam";
31-
case RefactoringRangeKind::DeclArgumentLabel:
32-
return "arglabel";
33-
case RefactoringRangeKind::CallArgumentLabel:
34-
return "callarg";
35-
case RefactoringRangeKind::CallArgumentColon:
36-
return "callcolon";
37-
case RefactoringRangeKind::CallArgumentCombined:
38-
return "callcombo";
39-
case RefactoringRangeKind::SelectorArgumentLabel:
40-
return "sel";
41-
}
42-
llvm_unreachable("unhandled kind");
17+
static StringRef tag(RefactoringRangeKind Kind) {
18+
switch (Kind) {
19+
case RefactoringRangeKind::BaseName:
20+
return "base";
21+
case RefactoringRangeKind::KeywordBaseName:
22+
return "keywordBase";
23+
case RefactoringRangeKind::ParameterName:
24+
return "param";
25+
case RefactoringRangeKind::NoncollapsibleParameterName:
26+
return "noncollapsibleparam";
27+
case RefactoringRangeKind::DeclArgumentLabel:
28+
return "arglabel";
29+
case RefactoringRangeKind::CallArgumentLabel:
30+
return "callarg";
31+
case RefactoringRangeKind::CallArgumentColon:
32+
return "callcolon";
33+
case RefactoringRangeKind::CallArgumentCombined:
34+
return "callcombo";
35+
case RefactoringRangeKind::SelectorArgumentLabel:
36+
return "sel";
4337
}
44-
void accept(SourceManager &SM, const RenameRangeDetail &Range) {
45-
std::string NewText;
46-
llvm::raw_string_ostream OS(NewText);
47-
StringRef Tag = tag(Range.RangeKind);
48-
OS << "<" << Tag;
49-
if (Range.Index.has_value())
50-
OS << " index=" << *Range.Index;
51-
OS << ">" << Range.Range.str() << "</" << Tag << ">";
52-
pRewriter->accept(SM, {/*Path=*/{}, Range.Range, /*BufferName=*/{},
53-
OS.str(), /*RegionsWorthNote=*/{}});
54-
}
55-
};
38+
llvm_unreachable("unhandled kind");
39+
}
5640

5741
swift::ide::FindRenameRangesAnnotatingConsumer::
5842
FindRenameRangesAnnotatingConsumer(SourceManager &SM, unsigned BufferId,
5943
raw_ostream &OS)
60-
: Impl(*new Implementation(SM, BufferId, OS)) {}
61-
62-
swift::ide::FindRenameRangesAnnotatingConsumer::
63-
~FindRenameRangesAnnotatingConsumer() {
64-
delete &Impl;
65-
}
44+
: pRewriter(new SourceEditOutputConsumer(SM, BufferId, OS)) {}
6645

6746
void swift::ide::FindRenameRangesAnnotatingConsumer::accept(
6847
SourceManager &SM, RegionType RegionType,
6948
ArrayRef<RenameRangeDetail> Ranges) {
7049
if (RegionType == RegionType::Mismatch || RegionType == RegionType::Unmatched)
7150
return;
7251
for (const auto &Range : Ranges) {
73-
Impl.accept(SM, Range);
52+
std::string NewText;
53+
llvm::raw_string_ostream OS(NewText);
54+
StringRef Tag = tag(Range.RangeKind);
55+
OS << "<" << Tag;
56+
if (Range.Index.has_value())
57+
OS << " index=" << *Range.Index;
58+
OS << ">" << Range.Range.str() << "</" << Tag << ">";
59+
Replacement Repl{/*Path=*/{}, Range.Range, /*BufferName=*/{}, OS.str(),
60+
/*RegionsWorthNote=*/{}};
61+
pRewriter->accept(SM, Repl);
7462
}
7563
}

tools/SourceKit/lib/SwiftLang/SwiftDocSupport.cpp

Lines changed: 25 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1344,60 +1344,41 @@ void RequestRefactoringEditConsumer::handleDiagnostic(
13441344
Impl.DiagConsumer.handleDiagnostic(SM, Info);
13451345
}
13461346

1347-
class RequestRenameRangeConsumer::Implementation {
1348-
CategorizedRenameRangesReceiver Receiver;
1349-
std::string ErrBuffer;
1350-
llvm::raw_string_ostream OS;
1351-
std::vector<CategorizedRenameRanges> CategorizedRanges;
1352-
1353-
public:
1354-
PrintingDiagnosticConsumer DiagConsumer;
1355-
1356-
public:
1357-
Implementation(CategorizedRenameRangesReceiver Receiver)
1358-
: Receiver(Receiver), OS(ErrBuffer), DiagConsumer(OS) {}
1359-
1360-
~Implementation() {
1361-
if (DiagConsumer.didErrorOccur()) {
1362-
Receiver(RequestResult<ArrayRef<CategorizedRenameRanges>>::fromError(OS.str()));
1363-
return;
1364-
}
1365-
Receiver(RequestResult<ArrayRef<CategorizedRenameRanges>>::fromResult(CategorizedRanges));
1366-
}
1367-
1368-
void accept(SourceManager &SM, RegionType RegionType,
1369-
ArrayRef<ide::RenameRangeDetail> Ranges) {
1370-
CategorizedRenameRanges Results;
1371-
Results.Category = SwiftLangSupport::getUIDForRegionType(RegionType);
1372-
for (const auto &R : Ranges) {
1373-
SourceKit::RenameRangeDetail Result;
1374-
std::tie(Result.StartLine, Result.StartColumn) =
1375-
SM.getLineAndColumnInBuffer(R.Range.getStart());
1376-
std::tie(Result.EndLine, Result.EndColumn) =
1377-
SM.getLineAndColumnInBuffer(R.Range.getEnd());
1378-
Result.ArgIndex = R.Index;
1379-
Result.Kind =
1380-
SwiftLangSupport::getUIDForRefactoringRangeKind(R.RangeKind);
1381-
Results.Ranges.push_back(std::move(Result));
1382-
}
1383-
CategorizedRanges.push_back(std::move(Results));
1384-
}
1385-
};
1386-
13871347
RequestRenameRangeConsumer::RequestRenameRangeConsumer(
13881348
CategorizedRenameRangesReceiver Receiver)
1389-
: Impl(*new Implementation(Receiver)) {}
1390-
RequestRenameRangeConsumer::~RequestRenameRangeConsumer() { delete &Impl; }
1349+
: Receiver(Receiver), OS(ErrBuffer), DiagConsumer(OS) {}
1350+
1351+
RequestRenameRangeConsumer::~RequestRenameRangeConsumer() {
1352+
if (DiagConsumer.didErrorOccur()) {
1353+
Receiver(
1354+
RequestResult<ArrayRef<CategorizedRenameRanges>>::fromError(OS.str()));
1355+
return;
1356+
}
1357+
Receiver(RequestResult<ArrayRef<CategorizedRenameRanges>>::fromResult(
1358+
CategorizedRanges));
1359+
}
13911360

13921361
void RequestRenameRangeConsumer::accept(
13931362
SourceManager &SM, RegionType RegionType,
13941363
ArrayRef<ide::RenameRangeDetail> Ranges) {
1395-
Impl.accept(SM, RegionType, Ranges);
1364+
CategorizedRenameRanges Results;
1365+
Results.Category = SwiftLangSupport::getUIDForRegionType(RegionType);
1366+
for (const auto &R : Ranges) {
1367+
SourceKit::RenameRangeDetail Result;
1368+
std::tie(Result.StartLine, Result.StartColumn) =
1369+
SM.getLineAndColumnInBuffer(R.Range.getStart());
1370+
std::tie(Result.EndLine, Result.EndColumn) =
1371+
SM.getLineAndColumnInBuffer(R.Range.getEnd());
1372+
Result.ArgIndex = R.Index;
1373+
Result.Kind = SwiftLangSupport::getUIDForRefactoringRangeKind(R.RangeKind);
1374+
Results.Ranges.push_back(std::move(Result));
1375+
}
1376+
CategorizedRanges.push_back(std::move(Results));
13961377
}
13971378

13981379
void RequestRenameRangeConsumer::handleDiagnostic(SourceManager &SM,
13991380
const DiagnosticInfo &Info) {
1400-
Impl.DiagConsumer.handleDiagnostic(SM, Info);
1381+
DiagConsumer.handleDiagnostic(SM, Info);
14011382
}
14021383

14031384
static NameUsage getNameUsage(RenameType Type) {

tools/SourceKit/lib/SwiftLang/SwiftLangSupport.h

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,13 @@
2424
#include "swift/AST/DiagnosticConsumer.h"
2525
#include "swift/AST/PluginRegistry.h"
2626
#include "swift/Basic/ThreadSafeRefCounted.h"
27+
#include "swift/Frontend/PrintingDiagnosticConsumer.h"
2728
#include "swift/IDE/CancellableResult.h"
2829
#include "swift/IDE/Indenting.h"
29-
#include "swift/Refactoring/Refactoring.h"
3030
#include "swift/IDETool/CompileInstance.h"
3131
#include "swift/IDETool/IDEInspectionInstance.h"
3232
#include "swift/Index/IndexSymbol.h"
33+
#include "swift/Refactoring/Refactoring.h"
3334
#include "llvm/ADT/IntrusiveRefCntPtr.h"
3435
#include "llvm/ADT/StringMap.h"
3536
#include "llvm/Support/Mutex.h"
@@ -276,8 +277,12 @@ class RequestRefactoringEditConsumer: public swift::ide::SourceEditConsumer,
276277

277278
class RequestRenameRangeConsumer : public swift::ide::FindRenameRangesConsumer,
278279
public swift::DiagnosticConsumer {
279-
class Implementation;
280-
Implementation &Impl;
280+
CategorizedRenameRangesReceiver Receiver;
281+
std::string ErrBuffer;
282+
llvm::raw_string_ostream OS;
283+
std::vector<CategorizedRenameRanges> CategorizedRanges;
284+
285+
swift::PrintingDiagnosticConsumer DiagConsumer;
281286

282287
public:
283288
RequestRenameRangeConsumer(CategorizedRenameRangesReceiver Receiver);

0 commit comments

Comments
 (0)