use std::fmt;
mod category;
mod metadata;
mod severity;
mod tag;
pub use category::DiagnosticCategory;
pub use severity::DiagnosticSeverity;
pub use tag::DiagnosticTag;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum DiagnosticCode {
#[default]
ParseError,
SyntaxError,
UnexpectedEof,
MissingStrict,
MissingWarnings,
UnusedVariable,
UndefinedVariable,
VariableShadowing,
VariableRedeclaration,
DuplicateParameter,
ParameterShadowsGlobal,
UnusedParameter,
UnquotedBareword,
UninitializedVariable,
MisspelledPragma,
CaptureVarWithoutRegexMatch,
MissingPackageDeclaration,
DuplicatePackage,
DuplicateSubroutine,
MissingReturn,
InvalidPrototype,
RoleConflict,
MissingPodCoverage,
BarewordFilehandle,
TwoArgOpen,
ImplicitReturn,
AssignmentInCondition,
NumericComparisonWithUndef,
PrintfFormatMismatch,
UnreachableCode,
EvalErrorFlow,
DuplicateHashKey,
GotoUndefinedLabel,
LoopControlUndefinedLabel,
DeprecatedDefined,
DeprecatedArrayBase,
PhaseScopedStrictPragma,
PhaseScopedWarningsPragma,
SecurityStringEval,
SecurityBacktickExec,
SecuritySignalHandler,
SecuritySystemCall,
SecurityExecCall,
SecurityPipeOpen,
SecurityReadpipe,
UnusedImport,
ModuleNotFound,
HeredocInFormat,
HeredocInBegin,
HeredocDynamicDelimiter,
HeredocInSourceFilter,
HeredocInRegexCode,
HeredocInEval,
HeredocTiedHandle,
VersionIncompatFeature,
CriticSeverity1,
CriticSeverity2,
CriticSeverity3,
CriticSeverity4,
CriticSeverity5,
}
impl fmt::Display for DiagnosticCode {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.as_str())
}
}