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:
David Blaikie 2014-08-29 20:06:10 +00:00
parent d5478fdd8f
commit c9950cb1dd
3 changed files with 8 additions and 9 deletions

View File

@ -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; }

View File

@ -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,

View File

@ -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);