From c2d4209f85f46cc91163bc47cc43db252c94acf6 Mon Sep 17 00:00:00 2001 From: Stefan Weigl-Bosker Date: Thu, 19 Feb 2026 18:51:48 -0500 Subject: [willow]: more cleanup, tests (#12) --- willow/lib/IR/DiagnosticEngine.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 willow/lib/IR/DiagnosticEngine.cpp (limited to 'willow/lib/IR/DiagnosticEngine.cpp') diff --git a/willow/lib/IR/DiagnosticEngine.cpp b/willow/lib/IR/DiagnosticEngine.cpp new file mode 100644 index 0000000..f0cc280 --- /dev/null +++ b/willow/lib/IR/DiagnosticEngine.cpp @@ -0,0 +1,28 @@ +#include + +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 loc) + : engine(&eng) { + diag.severity = severity; + diag.location = loc; +} + +} // namespace willow -- cgit v1.2.3