summaryrefslogtreecommitdiff
path: root/source/compiler-core/slang-diagnostic-sink.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/compiler-core/slang-diagnostic-sink.cpp')
-rw-r--r--source/compiler-core/slang-diagnostic-sink.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/source/compiler-core/slang-diagnostic-sink.cpp b/source/compiler-core/slang-diagnostic-sink.cpp
index f9a7d9c88..28a98266a 100644
--- a/source/compiler-core/slang-diagnostic-sink.cpp
+++ b/source/compiler-core/slang-diagnostic-sink.cpp
@@ -612,10 +612,20 @@ bool DiagnosticSink::diagnoseImpl(
return true;
}
-Severity DiagnosticSink::getEffectiveMessageSeverity(DiagnosticInfo const& info)
+Severity DiagnosticSink::getEffectiveMessageSeverity(
+ DiagnosticInfo const& info,
+ SourceLoc const& location)
{
Severity effectiveSeverity = info.severity;
+ if (effectiveSeverity <= Severity::Warning && m_sourceWarningStateTracker)
+ {
+ effectiveSeverity = m_sourceWarningStateTracker->consumeWarningSeverity(
+ location,
+ info.id,
+ effectiveSeverity);
+ }
+
Severity* pSeverityOverride = m_severityOverrides.tryGetValue(info.id);
// See if there is an override
@@ -639,7 +649,7 @@ bool DiagnosticSink::diagnoseImpl(
DiagnosticArg const* args)
{
// Override the severity in the 'info' structure to pass it further into formatDiagnostics
- info.severity = getEffectiveMessageSeverity(info);
+ info.severity = getEffectiveMessageSeverity(info, pos);
if (info.severity == Severity::Disable)
return false;