use crate::muterprater::{MissingTrustEvidence, OperatorFamilyRef, ScopeShape};
#[path = "type_guard.rs"]
mod guard;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct RewriteDescriptor {
family: OperatorFamilyRef,
pattern: &'static str,
rewrite: &'static str,
}
#[must_use = "a refusal is the reason a rewrite descriptor was not built"]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum RewriteRefusal {
EmptyPattern,
EmptyRewrite,
RewriteIsPattern,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RewriteRoster {
descriptors: Vec<RewriteDescriptor>,
}
#[must_use = "a refusal is the reason a rewrite roster was not built"]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum RosterRefusal {
EmptyRoster,
DuplicateDescriptor {
at: usize,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum RewriteTrust {
AuditPending,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RewriteCandidate {
descriptor: RewriteDescriptor,
scope: ScopeShape,
trust: RewriteTrust,
}
#[must_use = "a refusal is the reason the rewrite audit road was withheld"]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum RewriteWithheld {
InterpreterUnavailable,
TrustNotOpened(MissingTrustEvidence),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum RewriteAdmission {
Admitted,
Withheld(RewriteWithheld),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum ArtifactMutation {
OrderPermuted,
IdentityRecycled,
PlannedOutputOmitted,
UnplannedOutputAdded,
ImplTargetAltered,
ShapeAltered,
OutputDuplicated,
TraitPathWrong,
DecoyInComment,
ImplMemberDuplicated,
ImplMemberUnexpected,
ConstructorPathAltered,
ImplPostureAltered,
MeaningBearingAttributeAdded,
MalformedRust,
}
pub const ARTIFACT_MUTATIONS: &[ArtifactMutation] = &[
ArtifactMutation::OrderPermuted,
ArtifactMutation::IdentityRecycled,
ArtifactMutation::PlannedOutputOmitted,
ArtifactMutation::UnplannedOutputAdded,
ArtifactMutation::ImplTargetAltered,
ArtifactMutation::ShapeAltered,
ArtifactMutation::OutputDuplicated,
ArtifactMutation::TraitPathWrong,
ArtifactMutation::DecoyInComment,
ArtifactMutation::ImplMemberDuplicated,
ArtifactMutation::ImplMemberUnexpected,
ArtifactMutation::ConstructorPathAltered,
ArtifactMutation::ImplPostureAltered,
ArtifactMutation::MeaningBearingAttributeAdded,
ArtifactMutation::MalformedRust,
];