weirflow 0.1.0

GPU-first dataflow analysis primitives for Vyre and Santh compiler pipelines.
Documentation
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
    );
}