blob: 3dc73836961594e165ae6a35c7460f7b21c9e5a4 [file] [log] [blame]
// This crate crawls the Syn source directory to find all structs and enums that
// form the Syn syntax tree.
//
// A machine-readable representation of the syntax tree is saved to syn.json in
// the repo root for other code generation tools to consume. The syn-codegen
// crate (https://docs.rs/syn-codegen/) provides the data structures for parsing
// and making use of syn.json from Rust code.
//
// Finally this crate generates the Visit, VisitMut, and Fold traits in Syn
// programmatically from the syntax tree description.
#![recursion_limit = "128"]
#![allow(clippy::needless_pass_by_value)]
mod debug;
mod error;
mod file;
mod fold;
mod full;
mod gen;
mod json;
mod operand;
mod parse;
mod version;
mod visit;
mod visit_mut;
use crate::error::Result;
use std::process;
fn main() {
if let Err(err) = do_main() {
let _ = eprintln!("error: {}", err);
process::exit(1);
}
}
fn do_main() -> Result<()> {
let defs = parse::parse()?;
json::generate(&defs)?;
fold::generate(&defs)?;
visit::generate(&defs)?;
visit_mut::generate(&defs)?;
debug::generate(&defs)?;
Ok(())
}