From 240e0111bf6ea84b6435eb2fe99506edd4b64e4c Mon Sep 17 00:00:00 2001 From: luaneko Date: Thu, 26 Jun 2025 19:24:19 +1000 Subject: [PATCH] Fix lua finaliser parameter check --- crates/luaffi_impl/src/metatype.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/crates/luaffi_impl/src/metatype.rs b/crates/luaffi_impl/src/metatype.rs index b63425b..ca2eb5c 100644 --- a/crates/luaffi_impl/src/metatype.rs +++ b/crates/luaffi_impl/src/metatype.rs @@ -745,11 +745,17 @@ fn inject_merged_drop(registry: &mut Registry, lua: Option<&LuaFunction>) -> Res "finaliser must take exactly one parameter" ); - syn_assert!( - pat_ident(&lua.params[0])? == "self", - lua.params[0], - "finaliser parameter must be `self`" - ); + match lua.params[0] { + // should be `self: cdata` PatType + Pat::Type(ref ty) => { + syn_assert!( + pat_ident(&ty.pat)? == "self", + lua.params[0], + "finaliser parameter must be `self`" + ); + } + _ => syn_error!(lua.params[0], "finaliser parameter must be `self`"), + } let params = &lua.params; let body = &lua.body;