use miette::Diagnostic;
use ref_cast::RefCast;
use thiserror::Error;
use crate::PolicyId;
#[cfg(doc)]
use crate::ValidationWarning;
macro_rules! wrap_core_warning {
($s:ident) => {
#[derive(Debug, Clone, Error, Diagnostic)]
#[error(transparent)]
#[diagnostic(transparent)]
#[doc=concat!("Structure containing details about a [`ValidationWarning::", stringify!($s), "`].")]
pub struct $s(cedar_policy_core::validator::validation_warnings::$s);
impl $s {
pub fn policy_id(&self) -> &PolicyId {
PolicyId::ref_cast(&self.0.policy_id)
}
}
#[doc(hidden)]
impl From<cedar_policy_core::validator::validation_warnings::$s> for $s {
fn from(e: cedar_policy_core::validator::validation_warnings::$s) -> Self {
Self(e)
}
}
};
}
wrap_core_warning!(MixedScriptString);
wrap_core_warning!(BidiCharsInString);
wrap_core_warning!(BidiCharsInIdentifier);
wrap_core_warning!(MixedScriptIdentifier);
wrap_core_warning!(ConfusableIdentifier);
wrap_core_warning!(ImpossiblePolicy);