slang-netlist  0.9.0
Loading...
Searching...
No Matches
NetlistDiagnostics.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "slang/ast/Compilation.h"
4#include "slang/diagnostics/DiagnosticEngine.h"
5#include "slang/diagnostics/Diagnostics.h"
6#include "slang/diagnostics/TextDiagnosticClient.h"
7
8#define NETLIST_DIAGNOSTICS \
9 X(Value, 0, "value {}") \
10 X(InputPort, 1, "input port {}") \
11 X(OutputPort, 2, "output port {}") \
12 X(Assignment, 3, "assignment") \
13 X(Conditional, 4, "conditional statement") \
14 X(Case, 5, "case statement")
15
16namespace slang::diag {
17
18#define X(name, code, text) \
19 inline constexpr DiagCode name(DiagSubsystem::Netlist, code);
21#undef X
22
23} // namespace slang::diag
24
25namespace slang::netlist {
26
29
30 DiagnosticEngine engine;
31 std::shared_ptr<TextDiagnosticClient> client;
32
33 NetlistDiagnostics(ast::Compilation const &compilation,
34 bool showColours = true)
35 : engine(*compilation.getSourceManager()),
36 client(std::make_shared<TextDiagnosticClient>()) {
37
38#define X(name, code, text) \
39 engine.setMessage(diag::name, text); \
40 engine.setSeverity(diag::name, DiagnosticSeverity::Note);
42#undef X
43
44 engine.addClient(client);
45
46 // Client configuration.
47 client->showColors(showColours);
48 client->showLocation(true);
49 client->showSourceLine(true);
50 client->showHierarchyInstance(ShowHierarchyPathOption::Always);
51 }
52
53 auto issue(Diagnostic &diagnostic) { engine.issue(diagnostic); }
54
55 auto getString() const { return client->getString(); }
56
57 auto clear() const { client->clear(); }
58};
59
60} // namespace slang::netlist
#define NETLIST_DIAGNOSTICS
Definition NetlistDiagnostics.hpp:8
Definition NetlistDiagnostics.hpp:16
Definition Utilities.hpp:16
DiagnosticEngine engine
Definition NetlistDiagnostics.hpp:30
auto issue(Diagnostic &diagnostic)
Definition NetlistDiagnostics.hpp:53
NetlistDiagnostics(ast::Compilation const &compilation, bool showColours=true)
Definition NetlistDiagnostics.hpp:33
auto clear() const
Definition NetlistDiagnostics.hpp:57
auto getString() const
Definition NetlistDiagnostics.hpp:55
std::shared_ptr< TextDiagnosticClient > client
Definition NetlistDiagnostics.hpp:31