chore: upgrade darling and syn (#1138)
This commit is contained in:
parent
07bcda2973
commit
f57d585168
3 changed files with 32 additions and 4 deletions
|
|
@ -16,11 +16,11 @@ documentation = "https://docs.rs/rmcp-macros"
|
||||||
proc-macro = true
|
proc-macro = true
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
syn = {version = "2", features = ["full"]}
|
syn = {version = "3", features = ["full"]}
|
||||||
quote = "1"
|
quote = "1"
|
||||||
proc-macro2 = "1"
|
proc-macro2 = "1"
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
darling = { version = "0.23" }
|
darling = { version = "0.24" }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
local = []
|
local = []
|
||||||
|
|
|
||||||
|
|
@ -133,7 +133,7 @@ pub fn prompt(attr: TokenStream, input: TokenStream) -> syn::Result<TokenStream>
|
||||||
let new_output = syn::parse2::<ReturnType>({
|
let new_output = syn::parse2::<ReturnType>({
|
||||||
let mut lt = quote! { 'static };
|
let mut lt = quote! { 'static };
|
||||||
if let Some(receiver) = fn_item.sig.receiver()
|
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 {
|
if let Some(receiver_lt) = receiver_lt {
|
||||||
lt = quote! { #receiver_lt };
|
lt = quote! { #receiver_lt };
|
||||||
|
|
@ -259,6 +259,20 @@ mod test {
|
||||||
Ok(())
|
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]
|
#[test]
|
||||||
fn test_async_prompt_local_omits_send() -> syn::Result<()> {
|
fn test_async_prompt_local_omits_send() -> syn::Result<()> {
|
||||||
let attr = quote! { local };
|
let attr = quote! { local };
|
||||||
|
|
|
||||||
|
|
@ -284,7 +284,7 @@ pub fn tool(attr: TokenStream, input: TokenStream) -> syn::Result<TokenStream> {
|
||||||
let new_output = syn::parse2::<ReturnType>({
|
let new_output = syn::parse2::<ReturnType>({
|
||||||
let mut lt = quote! { 'static };
|
let mut lt = quote! { 'static };
|
||||||
if let Some(receiver) = fn_item.sig.receiver()
|
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 {
|
if let Some(receiver_lt) = receiver_lt {
|
||||||
lt = quote! { #receiver_lt };
|
lt = quote! { #receiver_lt };
|
||||||
|
|
@ -342,6 +342,20 @@ mod test {
|
||||||
Ok(())
|
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]
|
#[test]
|
||||||
fn test_doc_comment_description() -> syn::Result<()> {
|
fn test_doc_comment_description() -> syn::Result<()> {
|
||||||
let attr = quote! {}; // No explicit description
|
let attr = quote! {}; // No explicit description
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue