#![recursion_limit = "256"]
#![feature(box_patterns)]
#![feature(deref_pure_trait)]
#![feature(if_let_guard)]
#![feature(impl_trait_in_assoc_type)]
#![feature(iterator_try_collect)]
#![feature(let_chains)]
#![feature(trait_alias)]
#![feature(register_tool)]
#![register_tool(charon)]
#[macro_use]
pub mod ids;
#[macro_use]
pub mod logger;
pub mod ast;
pub mod common;
pub mod errors;
pub mod export;
pub mod name_matcher;
pub mod options;
pub mod pretty;
pub mod transform;
pub use ast::{builtins, expressions, gast, llbc_ast, meta, names, types, ullbc_ast, values};
pub use pretty::formatter;
pub use transform::{graphs, reorder_decls, ullbc_to_llbc};
const VERSION: &str = env!("CARGO_PKG_VERSION");
pub fn deserialize_llbc(path: &std::path::Path) -> anyhow::Result<ast::TranslatedCrate> {
use crate::export::CrateData;
use anyhow::Context;
use serde::Deserialize;
use std::fs::File;
use std::io::BufReader;
let file = File::open(&path)
.with_context(|| format!("Failed to read llbc file {}", path.display()))?;
let reader = BufReader::new(file);
let mut deserializer = serde_json::Deserializer::from_reader(reader);
deserializer.disable_recursion_limit();
let deserializer = serde_stacker::Deserializer::new(&mut deserializer);
Ok(CrateData::deserialize(deserializer)?.translated)
}