diff options
Diffstat (limited to 'source/slang/slang-diagnostics.cpp')
| -rw-r--r-- | source/slang/slang-diagnostics.cpp | 27 |
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 |
