use std::fs;
fn main() {
println!("Circular Dependency Detection Example");
println!("======================================");
println!();
let config = r#"
[defs.a]
extends = "b"
traits = ["Debug"]
[defs.b]
extends = "c"
traits = ["Clone"]
[defs.c]
extends = "a"
traits = ["PartialEq"]
"#;
let temp_dir = std::env::temp_dir();
let config_path = temp_dir.join("derive_defs_circular_example.toml");
fs::write(&config_path, config).expect("Failed to write config");
println!("Configuration (with circular dependency):");
println!("{config}");
println!();
let parsed = derive_defs::parser::parse_file(&config_path).expect("Failed to parse");
match derive_defs::resolver::resolve(&parsed) {
Ok(_) => {
eprintln!("ERROR: Expected circular dependency error, but resolution succeeded!");
std::process::exit(1);
}
Err(e) => {
println!("Expected error caught:");
println!(" {e}");
println!();
println!("This demonstrates that derive-defs correctly detects");
println!("circular inheritance and provides a helpful error message.");
}
}
let _ = fs::remove_file(&config_path);
}