macro_rules! artifact_mutation_bank {
($callback:ident) => {
$callback! {
OrderPermuted => "the emitted members are written in reverse of declared order",
IdentityRecycled => "every emitted member is written under the first member's key",
PlannedOutputOmitted => "a planned output is deleted",
UnplannedOutputAdded => "an unplanned output is appended",
ImplTargetAltered => "the implementation targets a different type",
ShapeAltered => "the declared body shape is changed",
OutputDuplicated => "a planned output is emitted twice",
TraitPathWrong => "the trait path names a different contract",
DecoyInComment => "the anchored bytes are planted in a comment",
ImplMemberDuplicated => "one member constant is emitted twice",
ImplMemberUnexpected => "a member nobody planned joins the implementation",
ConstructorPathAltered => "a row is built through another constructor",
ImplPostureAltered => "the implementation is written under another posture",
MeaningBearingAttributeAdded => "an attribute that decides something is added",
MalformedRust => "the artifact stops being well-formed Rust",
}
};
}
pub(crate) use artifact_mutation_bank;