forked from OSchip/llvm-project
unique_ptrify PathDiagnosticConsumer::HandlePathDiagnostic
FoldingSet, another intrusive data structure that could use some unique_ptr love on its interfaces. Eventually. llvm-svn: 216764
This commit is contained in:
parent
d5478fdd8f
commit
c9950cb1dd
|
@ -94,8 +94,8 @@ public:
|
|||
FilesMade *filesMade) = 0;
|
||||
|
||||
virtual StringRef getName() const = 0;
|
||||
|
||||
void HandlePathDiagnostic(PathDiagnostic *D);
|
||||
|
||||
void HandlePathDiagnostic(std::unique_ptr<PathDiagnostic> D);
|
||||
|
||||
enum PathGenerationScheme { None, Minimal, Extensive, AlternateExtensive };
|
||||
virtual PathGenerationScheme getGenerationScheme() const { return Minimal; }
|
||||
|
|
|
@ -3465,7 +3465,7 @@ void BugReporter::FlushReport(BugReport *exampleReport,
|
|||
D->addMeta(*i);
|
||||
}
|
||||
|
||||
PD.HandlePathDiagnostic(D.release());
|
||||
PD.HandlePathDiagnostic(std::move(D));
|
||||
}
|
||||
|
||||
void BugReporter::EmitBasicReport(const Decl *DeclWithIssue,
|
||||
|
|
|
@ -197,9 +197,8 @@ PathDiagnosticConsumer::~PathDiagnosticConsumer() {
|
|||
}
|
||||
}
|
||||
|
||||
void PathDiagnosticConsumer::HandlePathDiagnostic(PathDiagnostic *D) {
|
||||
std::unique_ptr<PathDiagnostic> OwningD(D);
|
||||
|
||||
void PathDiagnosticConsumer::HandlePathDiagnostic(
|
||||
std::unique_ptr<PathDiagnostic> D) {
|
||||
if (!D || D->path.empty())
|
||||
return;
|
||||
|
||||
|
@ -213,7 +212,7 @@ void PathDiagnosticConsumer::HandlePathDiagnostic(PathDiagnostic *D) {
|
|||
if (!supportsCrossFileDiagnostics()) {
|
||||
// Verify that the entire path is from the same FileID.
|
||||
FileID FID;
|
||||
const SourceManager &SMgr = (*D->path.begin())->getLocation().getManager();
|
||||
const SourceManager &SMgr = D->path.front()->getLocation().getManager();
|
||||
SmallVector<const PathPieces *, 5> WorkList;
|
||||
WorkList.push_back(&D->path);
|
||||
|
||||
|
@ -272,12 +271,12 @@ void PathDiagnosticConsumer::HandlePathDiagnostic(PathDiagnostic *D) {
|
|||
if (orig_size <= new_size)
|
||||
return;
|
||||
|
||||
assert(orig != D);
|
||||
assert(orig != D.get());
|
||||
Diags.RemoveNode(orig);
|
||||
delete orig;
|
||||
}
|
||||
|
||||
Diags.InsertNode(OwningD.release());
|
||||
Diags.InsertNode(D.release());
|
||||
}
|
||||
|
||||
static Optional<bool> comparePath(const PathPieces &X, const PathPieces &Y);
|
||||
|
|
Loading…
Reference in New Issue