#[cfg(feature = "exploration")]
pub use moonpool_explorer::ExplorationConfig;
#[cfg(not(feature = "exploration"))]
#[derive(Debug, Clone)]
pub enum ExplorationConfig {}
pub fn init_assertion_region() {
#[cfg(feature = "exploration")]
if let Err(e) = moonpool_explorer::init_assertions() {
tracing::error!("Failed to initialize assertion table: {e}");
}
#[cfg(not(feature = "exploration"))]
moonpool_assertions::init();
}
pub fn cleanup_assertion_region() {
#[cfg(feature = "exploration")]
moonpool_explorer::cleanup_assertions();
#[cfg(not(feature = "exploration"))]
moonpool_assertions::clear();
}
#[must_use]
pub fn code_coverage_edges(exploration_active: bool) -> Option<usize> {
#[cfg(feature = "exploration")]
{
if !moonpool_explorer::sancov_is_available() {
return None;
}
Some(if exploration_active {
moonpool_explorer::sancov_edges_covered()
} else {
moonpool_explorer::sancov_edges_covered_live()
})
}
#[cfg(not(feature = "exploration"))]
{
let _ = exploration_active;
None
}
}
#[must_use]
pub fn code_coverage_total() -> Option<usize> {
#[cfg(feature = "exploration")]
{
if moonpool_explorer::sancov_is_available() {
Some(moonpool_explorer::sancov_edge_count())
} else {
None
}
}
#[cfg(not(feature = "exploration"))]
{
None
}
}
#[must_use]
pub fn explorer_is_child() -> bool {
#[cfg(feature = "exploration")]
{
moonpool_explorer::explorer_is_child()
}
#[cfg(not(feature = "exploration"))]
{
false
}
}
pub fn exit_child(code: i32) -> ! {
#[cfg(feature = "exploration")]
{
moonpool_explorer::exit_child(code)
}
#[cfg(not(feature = "exploration"))]
{
let _ = code;
unreachable!("exit_child called without the `exploration` feature")
}
}