use desynt::DynamicPathResolver;
use syn::Path;
fn main() {
println!("=== Generic Type Resolution Demo ===");
println!();
let resolver = DynamicPathResolver::with_primitives();
let test_cases = vec![
"Option<butane::ForeignKey<Foo>>", "Vec<String>", "HashMap<String, i32>", "Result<User, DatabaseError>", "Option<Vec<HashMap<String, Value>>>", "std::option::Option<String>", "option::Option<i32>", "vec::Vec<String>", "collections::HashMap<K, V>", ];
println!("Testing generic type resolution:");
for case in &test_cases {
let path: Path = syn::parse_str(case).unwrap();
let result = resolver.resolve(&path);
println!(" {} -> {:?}", case, result);
}
println!();
println!("✓ The resolver automatically handles path variations!");
println!(
"✓ Only need to map 'std::option::Option' to handle 'Option<T>' and 'option::Option<T>'"
);
let specific_case = "Option<butane::ForeignKey<Foo>>";
let path: Path = syn::parse_str(specific_case).unwrap();
let result = resolver.resolve(&path);
assert_eq!(result, Some("Option"));
println!("✓ Assertion passed: {} == Some(\"Option\")", specific_case);
}