cedar_policy_validator/diagnostics/
validation_warnings.rs1macro_rules! impl_diagnostic_warning {
23 () => {
24 fn severity(&self) -> Option<miette::Severity> {
25 Some(miette::Severity::Warning)
26 }
27 };
28}
29
30use cedar_policy_core::{ast::PolicyID, impl_diagnostic_from_source_loc_opt_field, parser::Loc};
31use miette::Diagnostic;
32use thiserror::Error;
33
34#[derive(Debug, Clone, PartialEq, Error, Eq, Hash)]
36#[error("for policy `{policy_id}`, string `\"{string}\"` contains mixed scripts")]
37pub struct MixedScriptString {
38 pub source_loc: Option<Loc>,
40 pub policy_id: PolicyID,
42 pub string: String,
44}
45
46impl Diagnostic for MixedScriptString {
47 impl_diagnostic_from_source_loc_opt_field!(source_loc);
48 impl_diagnostic_warning!();
49}
50
51#[derive(Debug, Clone, PartialEq, Error, Eq, Hash)]
53#[error("for policy `{policy_id}`, string `\"{string}\"` contains BIDI control characters")]
54pub struct BidiCharsInString {
55 pub source_loc: Option<Loc>,
57 pub policy_id: PolicyID,
59 pub string: String,
61}
62
63impl Diagnostic for BidiCharsInString {
64 impl_diagnostic_from_source_loc_opt_field!(source_loc);
65 impl_diagnostic_warning!();
66}
67
68#[derive(Debug, Clone, PartialEq, Error, Eq, Hash)]
70#[error("for policy `{policy_id}`, identifier `{id}` contains BIDI control characters")]
71pub struct BidiCharsInIdentifier {
72 pub source_loc: Option<Loc>,
74 pub policy_id: PolicyID,
76 pub id: String,
78}
79
80impl Diagnostic for BidiCharsInIdentifier {
81 impl_diagnostic_from_source_loc_opt_field!(source_loc);
82 impl_diagnostic_warning!();
83}
84
85#[derive(Debug, Clone, PartialEq, Error, Eq, Hash)]
87#[error("for policy `{policy_id}`, identifier `{id}` contains mixed scripts")]
88pub struct MixedScriptIdentifier {
89 pub source_loc: Option<Loc>,
91 pub policy_id: PolicyID,
93 pub id: String,
95}
96impl Diagnostic for MixedScriptIdentifier {
97 impl_diagnostic_from_source_loc_opt_field!(source_loc);
98 impl_diagnostic_warning!();
99}
100
101#[derive(Debug, Clone, PartialEq, Error, Eq, Hash)]
103#[error("for policy `{policy_id}`, identifier `{id}` contains characters that fall outside of the General Security Profile for Identifiers")]
104pub struct ConfusableIdentifier {
105 pub source_loc: Option<Loc>,
107 pub policy_id: PolicyID,
109 pub id: String,
111}
112
113impl Diagnostic for ConfusableIdentifier {
114 impl_diagnostic_from_source_loc_opt_field!(source_loc);
115 impl_diagnostic_warning!();
116}
117
118#[derive(Debug, Clone, PartialEq, Error, Eq, Hash)]
120#[error("for policy `{policy_id}`, policy is impossible: the policy expression evaluates to false for all valid requests")]
121pub struct ImpossiblePolicy {
122 pub source_loc: Option<Loc>,
124 pub policy_id: PolicyID,
126}
127
128impl Diagnostic for ImpossiblePolicy {
129 impl_diagnostic_from_source_loc_opt_field!(source_loc);
130 impl_diagnostic_warning!();
131}