WaiverRule struct
#include <slang/diagnostics/WaiverManager.h>
Represents a single waiver rule that can suppress diagnostics based on file paths, hierarchy paths, diagnostic names, and source content patterns.
Public variables
- bool hierScope
- True if this is a hierarchy-scoped rule; false for file-scoped.
-
std::
filesystem:: path scopeGlob - The scope glob as written by the user (for display / diagnostics).
-
std::
filesystem:: path normalizedPattern - The scope glob normalized once at load time for matching.
-
std::
unique_ptr<WaiverLinePattern> linePattern - Optional source line content pattern (regex).
-
std::
vector<std:: string> diagnosticCodes - Optional diagnostic code names (e.g., "unused-variable").
- size_t appliedCount
- Number of times this rule has suppressed a diagnostic.
- bool scopeMatched
- Whether the scope glob (file or hier) matched at least once.
- bool diagnosticMatched
- Whether scope + diagnostic name both matched at least once.
-
std::
filesystem:: path sourceFile - The path of the waiver file this rule was loaded from.
- uint32_t sourceLine
- 1-based line in sourceFile where the [[waivers]] entry begins, or 0 if the load source didn't carry position info.
- bool diagnosticSeenWithoutSymbol
- For hier-scoped rules with a diagnostic filter: set when the named diagnostic was issued but had no symbol attached, so the rule could not match.
Variable documentation
std:: filesystem:: path slang:: WaiverRule:: normalizedPattern
The scope glob normalized once at load time for matching.
For file rules: '' converted to slang's '...' then lexically_normal'd. For hier rules: '.' replaced with '/' then '' converted to '...'.
std:: unique_ptr<WaiverLinePattern> slang:: WaiverRule:: linePattern
Optional source line content pattern (regex).
Matched with regex_search (substring), not regex_match - anchor with ^ / $ if you need full-line.
std:: vector<std:: string> slang:: WaiverRule:: diagnosticCodes
Optional diagnostic code names (e.g., "unused-variable").
Empty means match all diagnostics; one or more entries means match any in the list. Names are validated against DiagnosticEngine::findFromOptionName at load time, so any value present here is guaranteed to correspond to a real diagnostic option.
bool slang:: WaiverRule:: diagnosticSeenWithoutSymbol
For hier-scoped rules with a diagnostic filter: set when the named diagnostic was issued but had no symbol attached, so the rule could not match.
This typically happens for parse/preprocess/lex diagnostics (no AST symbol exists yet) and for some elaboration-time diagnostics that are reported against a SourceLocation rather than attached to a Symbol. Used to suggest switching to a 'file' scope in the unused- waivers report rather than emitting the generic "no hierarchy paths matched glob" message.