use crate::error::ForgeResult;
use crate::exec::backend::{CheckResult, EffectSignature};
use crate::invariants;
use crate::runtime::patch::apply::LineAttributionMap;
use crate::runtime::patch::types::*;
pub use cea_core::{AttributedRunResult, AttributionTriple, EditOpSignature};
pub fn build_edit_op_signature(
op: &EditOp,
op_idx: usize,
total_ops: usize,
file_idx: usize,
total_files: usize,
file_extension: &str,
) -> ForgeResult<EditOpSignature> {
let sig = cea_core::build_edit_op_signature(
op,
op_idx,
total_ops,
file_idx,
total_files,
file_extension,
)?;
let sig_json = serde_json::to_string(&sig)?;
invariants::validate_cea_no_raw_source(&sig_json)?;
Ok(sig)
}
pub fn edit_op_node_id(sig: &EditOpSignature) -> String {
cea_core::edit_op_node_id(sig)
}
pub fn effect_node_id(sig: &EffectSignature) -> String {
cea_core::effect_node_id(sig)
}
pub fn attribute_effects(
patch: &StructuredPatch,
check_result: &CheckResult,
line_map: &LineAttributionMap,
max_line_distance: u32,
) -> ForgeResult<Vec<AttributionTriple>> {
Ok(cea_core::attribute_effects(
patch,
check_result,
line_map,
max_line_distance,
)?)
}
pub fn compute_run_hash(result: &AttributedRunResult) -> String {
cea_core::compute_run_hash(result)
}