blob: f0cc2805ebf52bbf0a53f7143c92b0b0d1d14c78 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#include <willow/IR/DiagnosticEngine.h>
namespace willow {
void DiagnosticEngine::report(Diagnostic d) {
if (handler)
handler(std::move(d));
}
DiagnosticBuilder::DiagnosticBuilder(DiagnosticBuilder &&other) noexcept
: engine(std::exchange(other.engine, nullptr)), diag(std::move(other.diag)),
os(std::move(other.os)) {}
DiagnosticBuilder::~DiagnosticBuilder() {
if (!engine) // was moved from
return;
diag.message += os.str();
engine->report(std::move(diag));
}
DiagnosticBuilder::DiagnosticBuilder(DiagnosticEngine &eng, Severity severity,
std::optional<Location> loc)
: engine(&eng) {
diag.severity = severity;
diag.location = loc;
}
} // namespace willow
|