Skip to content

Commit 87db9dd

Browse files
Merge pull request #6698 from adrian-prantl/107633615
Make diagnostics API safer to use
2 parents 6b002b8 + 6d92da4 commit 87db9dd

File tree

3 files changed

+7
-2
lines changed

3 files changed

+7
-2
lines changed

lldb/include/lldb/Expression/DiagnosticManager.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ class DiagnosticManager {
114114
}
115115

116116
void AddDiagnostic(std::unique_ptr<Diagnostic> diagnostic) {
117-
m_diagnostics.push_back(std::move(diagnostic));
117+
if (diagnostic)
118+
m_diagnostics.push_back(std::move(diagnostic));
118119
}
119120

120121
size_t Printf(DiagnosticSeverity severity, const char *format, ...)

lldb/source/Plugins/TypeSystem/Swift/SwiftASTContext.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2855,7 +2855,8 @@ class StoringDiagnosticConsumer : public swift::DiagnosticConsumer {
28552855
}
28562856

28572857
void AddDiagnostic(std::unique_ptr<Diagnostic> diagnostic) {
2858-
m_diagnostics.push_back(std::move(diagnostic));
2858+
if (diagnostic)
2859+
m_diagnostics.push_back(std::move(diagnostic));
28592860
}
28602861

28612862
private:

lldb/unittests/Expression/DiagnosticManagerTest.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ TEST(DiagnosticManagerTest, HasFixits) {
7575
TEST(DiagnosticManagerTest, GetStringNoDiags) {
7676
DiagnosticManager mgr;
7777
EXPECT_EQ("", mgr.GetString());
78+
std::unique_ptr<Diagnostic> empty;
79+
mgr.AddDiagnostic(std::move(empty));
80+
EXPECT_EQ("", mgr.GetString());
7881
}
7982

8083
TEST(DiagnosticManagerTest, GetStringBasic) {

0 commit comments

Comments
 (0)