test(derive): close second mutation shard

Match public Form<T> paths with one unambiguous segment pattern and record clean hemx-derive shard 2/8 proof.

req: derive_handler/004

req: test/022

req: test/023
This commit is contained in:
slhx agent
2026-07-17 14:11:55 +02:00
parent 62b0787a8e
commit a59e9b0bfe
2 changed files with 7 additions and 16 deletions
+6 -15
View File
@@ -289,22 +289,13 @@ fn form_model_type(ty: &Type) -> Option<Type> {
let Type::Path(path) = ty else {
return None;
};
let mut segments = path.path.segments.iter();
let first = segments.next()?;
let last = path
.path
.segments
.last()
.expect("path has at least one segment");
let path_is_form = if path.path.segments.len() == 1 {
first.ident == "Form"
} else {
first.ident == "hemx" && last.ident == "Form"
let segments = path.path.segments.iter().collect::<Vec<_>>();
let form = match segments.as_slice() {
[form] if form.ident == "Form" => form,
[hemx, .., form] if hemx.ident == "hemx" && form.ident == "Form" => form,
_ => return None,
};
if !path_is_form {
return None;
}
let PathArguments::AngleBracketed(args) = &last.arguments else {
let PathArguments::AngleBracketed(args) = &form.arguments else {
return None;
};
args.args.iter().find_map(|arg| match arg {