use crate::ir::ExtractResult;
use crate::model::{Edge, Graph};
use super::includes_graph::IncludesGraph;
use super::symbol_table::ProjectSymbolTable;
pub trait Resolver: Send + Sync {
fn build_symbol_table(&self, results: &[ExtractResult], project: &str) -> ProjectSymbolTable;
fn resolve_all(
&self,
results: &[ExtractResult],
symbol_table: &ProjectSymbolTable,
project: &str,
graph: &mut Graph,
includes_graph: &IncludesGraph,
) -> Vec<Edge>;
}
#[cfg(test)]
const _: () = {
fn _assert_object_safe(_: &dyn Resolver) {}
fn _assert_send_sync<T: Send + Sync + ?Sized>() {}
fn _check() {
_assert_send_sync::<dyn Resolver>();
let _ = _assert_object_safe;
}
};