Files
2026-08-01 16:11:49 +03:00

51 lines
1.1 KiB
Rust

//! This is a regression test for issue [#371](https://github.com/TedDriggs/darling/issues/371).
use darling::util::{Callable, Override};
use darling::FromDeriveInput;
#[derive(FromDeriveInput)]
#[darling(attributes(test))]
struct Test1 {
#[allow(dead_code)]
func: Callable,
}
#[derive(FromDeriveInput)]
#[darling(attributes(test))]
struct Test2 {
func: Override<Callable>,
}
#[test]
fn test_explicit_closure() {
let input = syn::parse_quote! {
#[test(func = || 1 + 1)]
struct Foo;
};
assert!(Test1::from_derive_input(&input).is_ok());
assert!(Test2::from_derive_input(&input).is_ok());
}
#[test]
fn test_explicit_path() {
let input = syn::parse_quote! {
#[test(func = foo::bar)]
struct Foo;
};
assert!(Test1::from_derive_input(&input).is_ok());
assert!(Test2::from_derive_input(&input).is_ok());
}
#[test]
fn test_inherit() {
let input = syn::parse_quote! {
#[test(func)]
struct Foo;
};
assert!(Test1::from_derive_input(&input).is_err());
assert!(matches!(
Test2::from_derive_input(&input).unwrap().func,
Override::Inherit
));
}