summaryrefslogtreecommitdiff
path: root/source/slang/slang-diagnostics.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-diagnostics.cpp')
-rw-r--r--source/slang/slang-diagnostics.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/source/slang/slang-diagnostics.cpp b/source/slang/slang-diagnostics.cpp
index 4aabd3ab9..76b2fcffa 100644
--- a/source/slang/slang-diagnostics.cpp
+++ b/source/slang/slang-diagnostics.cpp
@@ -339,12 +339,37 @@ void DiagnosticSink::diagnoseRaw(
}
}
-
namespace Diagnostics
{
#define DIAGNOSTIC(id, severity, name, messageFormat) const DiagnosticInfo name = { id, Severity::severity, messageFormat };
#include "slang-diagnostic-defs.h"
}
+DiagnosticInfo const* findDiagnosticByName(UnownedStringSlice const& name)
+{
+ // TODO: We should eventually have a more formal system for associating individual
+ // diagnostics, or groups of diagnostics, with user-exposed names for use when
+ // enabling/disabling warnings (or turning warnings into errors, etc.).
+ //
+ // For now we build an ad hoc mapping from string names to corresponding single
+ // diagnostics (not groups).
+ //
+ static const struct
+ {
+ char const* name;
+ DiagnosticInfo const* diagnostic;
+ } kDiagnostics[] =
+ {
+ { "overlapping-bindings", &Diagnostics::parameterBindingsOverlap },
+ };
+
+ for( auto& entry : kDiagnostics )
+ {
+ if( name == entry.name )
+ return entry.diagnostic;
+ }
+ return nullptr;
+}
+
} // namespace Slang