Skip to content

Commit 00965ba

Browse files
chore(deps): Bump syn from 1.0.109 to 2.0.66 (#18792)
Signed-off-by: dependabot[bot] <[email protected]> Signed-off-by: xxchan <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: xxchan <[email protected]>
1 parent c359bd9 commit 00965ba

File tree

3 files changed

+49
-38
lines changed

3 files changed

+49
-38
lines changed

Cargo.lock

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/connector/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,11 +190,12 @@ expect-test = "1"
190190
fs-err = "2"
191191
paste = "1"
192192
pretty_assertions = "1"
193+
proc-macro2 = "1.0"
193194
quote = "1"
194195
rand = { workspace = true }
195196
serde = { version = "1", features = ["derive"] }
196197
serde_yaml = "0.9"
197-
syn = { version = "1", features = ["full"] }
198+
syn = { version = "2", features = ["full"] }
198199
tempfile = "3"
199200
tracing-subscriber = "0.3"
200201
tracing-test = "0.2"

src/connector/src/with_options_test.rs

Lines changed: 45 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ use std::path::{Path, PathBuf};
1717
use std::{env, fs};
1818

1919
use itertools::Itertools;
20+
use proc_macro2::TokenTree;
2021
use quote::ToTokens;
2122
use serde::Serialize;
22-
use syn::{parse_file, Attribute, Field, Item, ItemFn, Lit, Meta, MetaNameValue, NestedMeta, Type};
23+
use syn::{parse_file, Attribute, Field, Item, ItemFn, Lit, LitStr, Meta, Type};
24+
use thiserror_ext::AsReport;
2325
use walkdir::{DirEntry, WalkDir};
2426

2527
fn connector_crate_path() -> PathBuf {
@@ -216,16 +218,14 @@ struct FunctionInfo {
216218
/// Has `#[derive(WithOptions)]`
217219
fn has_with_options_attribute(attrs: &[Attribute]) -> bool {
218220
attrs.iter().any(|attr| {
219-
if let Ok(Meta::List(meta_list)) = attr.parse_meta() {
221+
if let Meta::List(meta_list) = &attr.meta {
220222
return meta_list.path.is_ident("derive")
221-
&& meta_list.nested.iter().any(|nested| match nested {
222-
syn::NestedMeta::Meta(Meta::Path(path)) => {
223-
// Check if the path contains WithOptions
224-
path.segments
225-
.iter()
226-
.any(|segment| segment.ident == "WithOptions")
223+
&& meta_list.tokens.clone().into_iter().any(|token| {
224+
if let TokenTree::Ident(ident) = token {
225+
ident == "WithOptions"
226+
} else {
227+
false
227228
}
228-
_ => false,
229229
});
230230
}
231231
false
@@ -236,9 +236,13 @@ fn extract_comments(attrs: &[Attribute]) -> String {
236236
attrs
237237
.iter()
238238
.filter_map(|attr| {
239-
if let Ok(Meta::NameValue(mnv)) = attr.parse_meta() {
239+
if let Meta::NameValue(mnv) = &attr.meta {
240240
if mnv.path.is_ident("doc") {
241-
if let syn::Lit::Str(lit_str) = mnv.lit {
241+
if let syn::Expr::Lit(syn::ExprLit {
242+
lit: Lit::Str(lit_str),
243+
..
244+
}) = &mnv.value
245+
{
242246
return Some(lit_str.value().trim().to_string());
243247
}
244248
}
@@ -253,38 +257,43 @@ fn extract_comments(attrs: &[Attribute]) -> String {
253257

254258
fn extract_serde_properties(field: &Field) -> SerdeProperties {
255259
for attr in &field.attrs {
256-
if let Ok(meta) = attr.parse_meta() {
257-
if meta.path().is_ident("serde") {
260+
if let Meta::List(meta_list) = &attr.meta {
261+
if meta_list.path.is_ident("serde") {
258262
// Initialize the values to be extracted
259263
let mut serde_props = SerdeProperties::default();
260264

261-
if let Meta::List(meta_list) = meta {
262-
// Iterate over nested meta items (e.g., rename = "abc")
263-
for nested_meta in meta_list.nested {
264-
if let NestedMeta::Meta(Meta::NameValue(MetaNameValue {
265-
path, lit, ..
266-
})) = nested_meta
267-
{
268-
if path.is_ident("rename") {
269-
if let Lit::Str(lit_str) = lit {
270-
serde_props.rename = Some(lit_str.value());
271-
}
272-
} else if path.is_ident("alias") {
273-
if let Lit::Str(lit_str) = lit {
274-
serde_props.alias.push(lit_str.value());
275-
}
276-
} else if path.is_ident("default") {
277-
if let Lit::Str(lit_str) = lit {
278-
serde_props.default_func = Some(lit_str.value());
279-
}
265+
// Iterate over nested meta items (e.g., rename = "abc")
266+
meta_list
267+
.parse_nested_meta(|meta| {
268+
if meta.path.is_ident("rename") {
269+
if let Ok(value) = meta.value()?.parse::<LitStr>() {
270+
serde_props.rename = Some(value.value());
280271
}
281-
} else if let NestedMeta::Meta(Meta::Path(path)) = nested_meta {
282-
if path.is_ident("default") {
272+
} else if meta.path.is_ident("alias") {
273+
if let Ok(value) = meta.value()?.parse::<LitStr>() {
274+
serde_props.alias.push(value.value());
275+
}
276+
} else if meta.path.is_ident("default") {
277+
if let Ok(value) = meta.value().and_then(|v| v.parse::<LitStr>()) {
278+
serde_props.default_func = Some(value.value());
279+
} else {
283280
serde_props.default_func = Some("Default::default".to_string());
284281
}
285282
}
286-
}
287-
}
283+
// drain the remaining meta. Otherwise parse_nested_meta returns err
284+
// <https://github.com/dtolnay/syn/issues/1426>
285+
_ = meta.value();
286+
_ = meta.input.parse::<LitStr>();
287+
Ok(())
288+
})
289+
.unwrap_or_else(|err| {
290+
panic!(
291+
"Failed to parse serde properties for field: {:?}, err: {}",
292+
field.ident,
293+
err.to_report_string(),
294+
)
295+
});
296+
288297
// Return the extracted values
289298
return serde_props;
290299
}

0 commit comments

Comments
 (0)