slang-netlist  0.12.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 X(Operation, 6, "operation {}")
16
17namespace slang::diag {
18
19#define X(name, code, text) \
20 inline constexpr DiagCode name(DiagSubsystem::Netlist, code);
22#undef X
23
24} // namespace slang::diag
25
26namespace slang::netlist {
27
30
31 DiagnosticEngine engine;
32 std::shared_ptr<TextDiagnosticClient> client;
33
34 NetlistDiagnostics(ast::Compilation const &compilation,
35 bool showColours = true)
36 : engine(*compilation.getSourceManager()),
37 client(std::make_shared<TextDiagnosticClient>()) {
38
39#define X(name, code, text) \
40 engine.setMessage(diag::name, text); \
41 engine.setSeverity(diag::name, DiagnosticSeverity::Note);
43#undef X
44
45 engine.addClient(client);
46
47 // Client configuration.
48 client->showColors(showColours);
49 client->showLocation(true);
50 client->showSourceLine(true);
51 client->showHierarchyInstance(ShowHierarchyPathOption::Always);
52 }
53
54 auto issue(Diagnostic &diagnostic) { engine.issue(diagnostic); }
55
56 auto getString() const { return client->getString(); }
57
58 auto clear() const { client->clear(); }
59};
60
61} // namespace slang::netlist
#define NETLIST_DIAGNOSTICS
Definition NetlistDiagnostics.hpp:8
Definition NetlistDiagnostics.hpp:17
Definition FormatBuffer.hpp:9
DiagnosticEngine engine
Definition NetlistDiagnostics.hpp:31
auto issue(Diagnostic &diagnostic)
Definition NetlistDiagnostics.hpp:54
NetlistDiagnostics(ast::Compilation const &compilation, bool showColours=true)
Definition NetlistDiagnostics.hpp:34
auto clear() const
Definition NetlistDiagnostics.hpp:58
auto getString() const
Definition NetlistDiagnostics.hpp:56
std::shared_ptr< TextDiagnosticClient > client
Definition NetlistDiagnostics.hpp:32