chore: upgrade darling and syn (#1138)

This commit is contained in:
Dale Seo 2026-08-05 10:20:22 -04:00 • committed by GitHub
commit f57d585168
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 32 additions and 4 deletions

View file

@ -16,11 +16,11 @@ documentation = "https://docs.rs/rmcp-macros"
proc-macro = true
[dependencies]
syn = {version = "2", features = ["full"]}
syn = {version = "3", features = ["full"]}
quote = "1"
proc-macro2 = "1"
serde_json = "1.0"
darling = { version = "0.23" }
darling = { version = "0.24" }
[features]
local = []

View file

@ -133,7 +133,7 @@ pub fn prompt(attr: TokenStream, input: TokenStream) -> syn::Result<TokenStream>
let new_output = syn::parse2::<ReturnType>({
let mut lt = quote! { 'static };
if let Some(receiver) = fn_item.sig.receiver()
&& let Some((_, receiver_lt)) = receiver.reference.as_ref()
&& let syn::ReceiverKind::Reference(_, receiver_lt, _) = &receiver.kind
{
if let Some(receiver_lt) = receiver_lt {
lt = quote! { #receiver_lt };
@ -259,6 +259,20 @@ mod test {
Ok(())
}
#[test]
fn test_async_prompt_preserves_receiver_lifetime() -> syn::Result<()> {
let attr = quote! {};
let input = quote! {
async fn test_prompt_with_lifetime<'a>(&'a self) -> String {
"ok".to_string()
}
};
let result = prompt(attr, input)?;
assert!(result.to_string().contains("+ 'a"));
Ok(())
}
#[test]
fn test_async_prompt_local_omits_send() -> syn::Result<()> {
let attr = quote! { local };

View file

@ -284,7 +284,7 @@ pub fn tool(attr: TokenStream, input: TokenStream) -> syn::Result<TokenStream> {
let new_output = syn::parse2::<ReturnType>({
let mut lt = quote! { 'static };
if let Some(receiver) = fn_item.sig.receiver()
&& let Some((_, receiver_lt)) = receiver.reference.as_ref()
&& let syn::ReceiverKind::Reference(_, receiver_lt, _) = &receiver.kind
{
if let Some(receiver_lt) = receiver_lt {
lt = quote! { #receiver_lt };
@ -342,6 +342,20 @@ mod test {
Ok(())
}
#[test]
fn test_async_tool_preserves_receiver_lifetime() -> syn::Result<()> {
let attr = quote! {};
let input = quote! {
async fn test_tool_with_lifetime<'a>(&'a self) -> String {
"ok".to_string()
}
};
let result = tool(attr, input)?;
assert!(result.to_string().contains("+ 'a"));
Ok(())
}
#[test]
fn test_doc_comment_description() -> syn::Result<()> {
let attr = quote! {}; // No explicit description