use serde::{de::DeserializeOwned, Serialize};
use weir::reachability_witness::{
ExplodedDecodeError, ExtractedPath, ExtractedStatement, NodeAttr, PathError, PathSeed,
};
use weir::soundness::{PrecisionContract, PrimitiveSoundness, Soundness, SoundnessViolation};
fn assert_release_evidence_type<T>()
where
T: Serialize + DeserializeOwned,
{
}
fn assert_release_evidence_record<T>()
where
T: Serialize,
{
}
fn main() {
assert_release_evidence_type::<PathSeed>();
assert_release_evidence_type::<ExtractedStatement>();
assert_release_evidence_type::<ExtractedPath>();
assert_release_evidence_type::<NodeAttr>();
assert_release_evidence_type::<PathError>();
assert_release_evidence_type::<ExplodedDecodeError>();
assert_release_evidence_type::<Soundness>();
assert_release_evidence_type::<PrecisionContract>();
assert_release_evidence_record::<PrimitiveSoundness>();
assert_release_evidence_record::<SoundnessViolation>();
let primitive = PrimitiveSoundness::new("weir::ssa", Soundness::Exact);
let contract = PrecisionContract::ZeroFalsePositive;
println!(
"weir serde evidence: {} {:?} {:?}",
primitive.op_id, primitive.soundness, contract
);
}