From a7c5a24a7b725b8eb395aa28b0e3838c64ff2dbb Mon Sep 17 00:00:00 2001 From: Alex Orlenko Date: Sat, 30 May 2026 22:23:03 +0100 Subject: [PATCH] mlua_derive: Deny `#[lua = "..."]` syntax --- mlua_derive/src/userdata/mod.rs | 18 ++++++++++++++---- mlua_derive/src/userdata/userdata_impl.rs | 18 ++++++++++++++---- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/mlua_derive/src/userdata/mod.rs b/mlua_derive/src/userdata/mod.rs index 83d91e3..4cbfd4e 100644 --- a/mlua_derive/src/userdata/mod.rs +++ b/mlua_derive/src/userdata/mod.rs @@ -25,10 +25,20 @@ pub(crate) fn with_cfg(tokens: proc_macro2::TokenStream, attrs: &[Attribute]) -> fn parse_field_lua_attr(attrs: &[Attribute]) -> syn::Result { let mut lua_attr = LuaAttr::default(); for attr in attrs { - if attr.path().is_ident("lua") - && let Meta::List(_) = &attr.meta - { - attr.parse_nested_meta(|meta| lua_attr.parse_inner(meta))?; + if !attr.path().is_ident("lua") { + continue; + } + match &attr.meta { + Meta::List(_) => { + attr.parse_nested_meta(|meta| lua_attr.parse_inner(meta))?; + } + Meta::Path(_) => {} + Meta::NameValue(_) => { + return Err(syn::Error::new_spanned( + attr, + "`#[lua = \"...\"]` is not supported: use `#[lua(attr = \"...\")]`", + )); + } } } Ok(lua_attr) diff --git a/mlua_derive/src/userdata/userdata_impl.rs b/mlua_derive/src/userdata/userdata_impl.rs index a63eede..d082bb4 100644 --- a/mlua_derive/src/userdata/userdata_impl.rs +++ b/mlua_derive/src/userdata/userdata_impl.rs @@ -177,10 +177,20 @@ fn strip_item_attrs(attrs: &[Attribute]) -> Vec { fn parse_lua_attr(attrs: &[Attribute]) -> syn::Result { let mut lua_attr = LuaAttr::default(); for attr in attrs { - if attr.path().is_ident("lua") - && let Meta::List(_) = &attr.meta - { - attr.parse_nested_meta(|meta| lua_attr.parse_inner(meta))?; + if !attr.path().is_ident("lua") { + continue; + } + match &attr.meta { + Meta::List(_) => { + attr.parse_nested_meta(|meta| lua_attr.parse_inner(meta))?; + } + Meta::Path(_) => {} + Meta::NameValue(_) => { + return Err(syn::Error::new_spanned( + attr, + "`#[lua = \"...\"]` is not supported: use `#[lua(attr = \"...\")]`", + )); + } } } Ok(lua_attr)