use alloc::sync::Arc;
use miden_mast_package::debug_info::PackageDebugInfo;
use miden_mast_package::{Package, PackageDebugInfoError};
use miden_processor::LoadedMastForest;
use crate::MastForest;
pub fn package_debug_info(package: &Package) -> Option<Arc<PackageDebugInfo>> {
match package.debug_info() {
Ok(debug_info) => debug_info.map(Arc::new),
Err(PackageDebugInfoError::UntrustedSections) => None,
Err(_) => None,
}
}
pub fn loaded_mast_forest(
mast: Arc<MastForest>,
package_debug_info: Option<Arc<PackageDebugInfo>>,
) -> LoadedMastForest {
match package_debug_info {
Some(package_debug_info) => {
LoadedMastForest::with_package_debug_info(mast, Ok(Some((*package_debug_info).clone())))
},
None => LoadedMastForest::new(mast),
}
}
pub fn loaded_mast_forest_from_package(package: &Package) -> LoadedMastForest {
loaded_mast_forest(package.mast_forest().clone(), package_debug_info(package))
}