summaryrefslogtreecommitdiff
path: root/source/compiler-core/slang-core-diagnostics.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/compiler-core/slang-core-diagnostics.cpp')
-rw-r--r--source/compiler-core/slang-core-diagnostics.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/source/compiler-core/slang-core-diagnostics.cpp b/source/compiler-core/slang-core-diagnostics.cpp
new file mode 100644
index 000000000..7aa6c5c14
--- /dev/null
+++ b/source/compiler-core/slang-core-diagnostics.cpp
@@ -0,0 +1,50 @@
+// slang-core-diagnostics.cpp
+#include "slang-core-diagnostics.h"
+
+namespace Slang {
+
+namespace MiscDiagnostics
+{
+#define DIAGNOSTIC(id, severity, name, messageFormat) const DiagnosticInfo name = { id, Severity::severity, #name, messageFormat };
+#include "slang-misc-diagnostic-defs.h"
+#undef DIAGNOSTIC
+}
+
+static const DiagnosticInfo* const kMiscDiagnostics[] =
+{
+#define DIAGNOSTIC(id, severity, name, messageFormat) &MiscDiagnostics::name,
+#include "slang-misc-diagnostic-defs.h"
+#undef DIAGNOSTIC
+};
+
+
+namespace LexerDiagnostics
+{
+#define DIAGNOSTIC(id, severity, name, messageFormat) const DiagnosticInfo name = { id, Severity::severity, #name, messageFormat };
+#include "slang-lexer-diagnostic-defs.h"
+#undef DIAGNOSTIC
+}
+
+static const DiagnosticInfo* const kLexerDiagnostics[] =
+{
+#define DIAGNOSTIC(id, severity, name, messageFormat) &LexerDiagnostics::name,
+#include "slang-lexer-diagnostic-defs.h"
+#undef DIAGNOSTIC
+};
+
+static DiagnosticsLookup* _newCoreDiagnosticsLookup()
+{
+ auto lookup = new DiagnosticsLookup;
+ lookup->add(kMiscDiagnostics, SLANG_COUNT_OF(kMiscDiagnostics));
+ lookup->add(kLexerDiagnostics, SLANG_COUNT_OF(kLexerDiagnostics));
+
+ return lookup;
+}
+
+DiagnosticsLookup* getCoreDiagnosticsLookup()
+{
+ static RefPtr<DiagnosticsLookup> s_lookup = _newCoreDiagnosticsLookup();
+ return s_lookup;
+}
+
+} // namespace Slang