mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[SourceKit] Remove pImpl abstraction pattern for RequestRenameRangeConsumer
This commit is contained in:
@@ -1344,60 +1344,41 @@ void RequestRefactoringEditConsumer::handleDiagnostic(
|
||||
Impl.DiagConsumer.handleDiagnostic(SM, Info);
|
||||
}
|
||||
|
||||
class RequestRenameRangeConsumer::Implementation {
|
||||
CategorizedRenameRangesReceiver Receiver;
|
||||
std::string ErrBuffer;
|
||||
llvm::raw_string_ostream OS;
|
||||
std::vector<CategorizedRenameRanges> CategorizedRanges;
|
||||
|
||||
public:
|
||||
PrintingDiagnosticConsumer DiagConsumer;
|
||||
|
||||
public:
|
||||
Implementation(CategorizedRenameRangesReceiver Receiver)
|
||||
: Receiver(Receiver), OS(ErrBuffer), DiagConsumer(OS) {}
|
||||
|
||||
~Implementation() {
|
||||
if (DiagConsumer.didErrorOccur()) {
|
||||
Receiver(RequestResult<ArrayRef<CategorizedRenameRanges>>::fromError(OS.str()));
|
||||
return;
|
||||
}
|
||||
Receiver(RequestResult<ArrayRef<CategorizedRenameRanges>>::fromResult(CategorizedRanges));
|
||||
}
|
||||
|
||||
void accept(SourceManager &SM, RegionType RegionType,
|
||||
ArrayRef<ide::RenameRangeDetail> Ranges) {
|
||||
CategorizedRenameRanges Results;
|
||||
Results.Category = SwiftLangSupport::getUIDForRegionType(RegionType);
|
||||
for (const auto &R : Ranges) {
|
||||
SourceKit::RenameRangeDetail Result;
|
||||
std::tie(Result.StartLine, Result.StartColumn) =
|
||||
SM.getLineAndColumnInBuffer(R.Range.getStart());
|
||||
std::tie(Result.EndLine, Result.EndColumn) =
|
||||
SM.getLineAndColumnInBuffer(R.Range.getEnd());
|
||||
Result.ArgIndex = R.Index;
|
||||
Result.Kind =
|
||||
SwiftLangSupport::getUIDForRefactoringRangeKind(R.RangeKind);
|
||||
Results.Ranges.push_back(std::move(Result));
|
||||
}
|
||||
CategorizedRanges.push_back(std::move(Results));
|
||||
}
|
||||
};
|
||||
|
||||
RequestRenameRangeConsumer::RequestRenameRangeConsumer(
|
||||
CategorizedRenameRangesReceiver Receiver)
|
||||
: Impl(*new Implementation(Receiver)) {}
|
||||
RequestRenameRangeConsumer::~RequestRenameRangeConsumer() { delete &Impl; }
|
||||
: Receiver(Receiver), OS(ErrBuffer), DiagConsumer(OS) {}
|
||||
|
||||
RequestRenameRangeConsumer::~RequestRenameRangeConsumer() {
|
||||
if (DiagConsumer.didErrorOccur()) {
|
||||
Receiver(
|
||||
RequestResult<ArrayRef<CategorizedRenameRanges>>::fromError(OS.str()));
|
||||
return;
|
||||
}
|
||||
Receiver(RequestResult<ArrayRef<CategorizedRenameRanges>>::fromResult(
|
||||
CategorizedRanges));
|
||||
}
|
||||
|
||||
void RequestRenameRangeConsumer::accept(
|
||||
SourceManager &SM, RegionType RegionType,
|
||||
ArrayRef<ide::RenameRangeDetail> Ranges) {
|
||||
Impl.accept(SM, RegionType, Ranges);
|
||||
CategorizedRenameRanges Results;
|
||||
Results.Category = SwiftLangSupport::getUIDForRegionType(RegionType);
|
||||
for (const auto &R : Ranges) {
|
||||
SourceKit::RenameRangeDetail Result;
|
||||
std::tie(Result.StartLine, Result.StartColumn) =
|
||||
SM.getLineAndColumnInBuffer(R.Range.getStart());
|
||||
std::tie(Result.EndLine, Result.EndColumn) =
|
||||
SM.getLineAndColumnInBuffer(R.Range.getEnd());
|
||||
Result.ArgIndex = R.Index;
|
||||
Result.Kind = SwiftLangSupport::getUIDForRefactoringRangeKind(R.RangeKind);
|
||||
Results.Ranges.push_back(std::move(Result));
|
||||
}
|
||||
CategorizedRanges.push_back(std::move(Results));
|
||||
}
|
||||
|
||||
void RequestRenameRangeConsumer::handleDiagnostic(SourceManager &SM,
|
||||
const DiagnosticInfo &Info) {
|
||||
Impl.DiagConsumer.handleDiagnostic(SM, Info);
|
||||
DiagConsumer.handleDiagnostic(SM, Info);
|
||||
}
|
||||
|
||||
static NameUsage getNameUsage(RenameType Type) {
|
||||
|
||||
@@ -24,12 +24,13 @@
|
||||
#include "swift/AST/DiagnosticConsumer.h"
|
||||
#include "swift/AST/PluginRegistry.h"
|
||||
#include "swift/Basic/ThreadSafeRefCounted.h"
|
||||
#include "swift/Frontend/PrintingDiagnosticConsumer.h"
|
||||
#include "swift/IDE/CancellableResult.h"
|
||||
#include "swift/IDE/Indenting.h"
|
||||
#include "swift/Refactoring/Refactoring.h"
|
||||
#include "swift/IDETool/CompileInstance.h"
|
||||
#include "swift/IDETool/IDEInspectionInstance.h"
|
||||
#include "swift/Index/IndexSymbol.h"
|
||||
#include "swift/Refactoring/Refactoring.h"
|
||||
#include "llvm/ADT/IntrusiveRefCntPtr.h"
|
||||
#include "llvm/ADT/StringMap.h"
|
||||
#include "llvm/Support/Mutex.h"
|
||||
@@ -276,8 +277,12 @@ public:
|
||||
|
||||
class RequestRenameRangeConsumer : public swift::ide::FindRenameRangesConsumer,
|
||||
public swift::DiagnosticConsumer {
|
||||
class Implementation;
|
||||
Implementation &Impl;
|
||||
CategorizedRenameRangesReceiver Receiver;
|
||||
std::string ErrBuffer;
|
||||
llvm::raw_string_ostream OS;
|
||||
std::vector<CategorizedRenameRanges> CategorizedRanges;
|
||||
|
||||
swift::PrintingDiagnosticConsumer DiagConsumer;
|
||||
|
||||
public:
|
||||
RequestRenameRangeConsumer(CategorizedRenameRangesReceiver Receiver);
|
||||
|
||||
Reference in New Issue
Block a user