Skip to content

Commit 8f926e5

Browse files
saiintbrissonabonander
authored andcommitted
refac: rebase syn 2 changes
1 parent c5357f1 commit 8f926e5

File tree

10 files changed

+203
-275
lines changed

10 files changed

+203
-275
lines changed

Cargo.lock

Lines changed: 16 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sqlx-macros-core/Cargo.toml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,11 @@ hex = { version = "0.4.3" }
5252
heck = { version = "0.4", features = ["unicode"] }
5353
either = "1.6.1"
5454
once_cell = "1.9.0"
55-
proc-macro2 = { version = "1.0.36", default-features = false }
55+
proc-macro2 = { version = "1.0.79", default-features = false }
5656
serde = { version = "1.0.132", features = ["derive"] }
5757
serde_json = { version = "1.0.73" }
5858
sha2 = { version = "0.10.0" }
59-
syn = { version = "1.0.84", default-features = false, features = ["full", "derive", "parsing", "printing", "clone-impls"] }
59+
syn = { version = "2.0.52", default-features = false, features = ["full", "derive", "parsing", "printing", "clone-impls"] }
6060
tempfile = { version = "3.3.0" }
61-
quote = { version = "1.0.14", default-features = false }
61+
quote = { version = "1.0.26", default-features = false }
6262
url = { version = "2.2.2", default-features = false }
63-

sqlx-macros-core/src/database/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ mod mysql;
172172
mod sqlite;
173173

174174
mod fake_sqlx {
175+
#[cfg(any(feature = "mysql", feature = "postgres", feature = "sqlite"))]
175176
pub use sqlx_core::*;
176177

177178
#[cfg(feature = "mysql")]

sqlx-macros-core/src/derives/attributes.rs

Lines changed: 68 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use proc_macro2::{Ident, Span, TokenStream};
22
use quote::quote;
33
use syn::{
4-
punctuated::Punctuated, spanned::Spanned, token::Comma, Attribute, DeriveInput, Field, Lit,
5-
Meta, MetaNameValue, NestedMeta, Type, Variant,
4+
punctuated::Punctuated, token::Comma, Attribute, DeriveInput, Field, LitStr, Meta, Token, Type,
5+
Variant,
66
};
77

88
macro_rules! assert_attribute {
@@ -77,82 +77,53 @@ pub fn parse_container_attributes(input: &[Attribute]) -> syn::Result<SqlxContai
7777
let mut no_pg_array = None;
7878
let mut default = None;
7979

80-
for attr in input
81-
.iter()
82-
.filter(|a| a.path.is_ident("sqlx") || a.path.is_ident("repr"))
83-
{
84-
let meta = attr
85-
.parse_meta()
86-
.map_err(|e| syn::Error::new_spanned(attr, e))?;
87-
match meta {
88-
Meta::List(list) if list.path.is_ident("sqlx") => {
89-
for value in list.nested.iter() {
90-
match value {
91-
NestedMeta::Meta(meta) => match meta {
92-
Meta::Path(p) if p.is_ident("transparent") => {
93-
try_set!(transparent, true, value)
94-
}
95-
96-
Meta::Path(p) if p.is_ident("no_pg_array") => {
97-
try_set!(no_pg_array, true, value);
98-
}
99-
100-
Meta::NameValue(MetaNameValue {
101-
path,
102-
lit: Lit::Str(val),
103-
..
104-
}) if path.is_ident("rename_all") => {
105-
let val = match &*val.value() {
106-
"lowercase" => RenameAll::LowerCase,
107-
"snake_case" => RenameAll::SnakeCase,
108-
"UPPERCASE" => RenameAll::UpperCase,
109-
"SCREAMING_SNAKE_CASE" => RenameAll::ScreamingSnakeCase,
110-
"kebab-case" => RenameAll::KebabCase,
111-
"camelCase" => RenameAll::CamelCase,
112-
"PascalCase" => RenameAll::PascalCase,
113-
_ => fail!(meta, "unexpected value for rename_all"),
114-
};
115-
116-
try_set!(rename_all, val, value)
117-
}
118-
119-
Meta::NameValue(MetaNameValue {
120-
path,
121-
lit: Lit::Str(val),
122-
..
123-
}) if path.is_ident("type_name") => {
124-
try_set!(
125-
type_name,
126-
TypeName {
127-
val: val.value(),
128-
span: value.span(),
129-
},
130-
value
131-
)
132-
}
133-
134-
Meta::Path(p) if p.is_ident("default") => {
135-
try_set!(default, true, value)
136-
}
137-
138-
u => fail!(u, "unexpected attribute"),
139-
},
140-
u => fail!(u, "unexpected attribute"),
141-
}
142-
}
143-
}
144-
Meta::List(list) if list.path.is_ident("repr") => {
145-
if list.nested.len() != 1 {
146-
fail!(&list.nested, "expected one value")
147-
}
148-
match list.nested.first().unwrap() {
149-
NestedMeta::Meta(Meta::Path(p)) if p.get_ident().is_some() => {
150-
try_set!(repr, p.get_ident().unwrap().clone(), list);
151-
}
152-
u => fail!(u, "unexpected value"),
80+
for attr in input {
81+
if attr.path().is_ident("sqlx") {
82+
attr.parse_nested_meta(|meta| {
83+
if meta.path.is_ident("transparent") {
84+
try_set!(transparent, true, attr);
85+
} else if meta.path.is_ident("no_pg_array") {
86+
try_set!(no_pg_array, true, attr);
87+
} else if meta.path.is_ident("default") {
88+
try_set!(default, true, attr);
89+
} else if meta.path.is_ident("rename_all") {
90+
meta.input.parse::<Token![=]>()?;
91+
let lit: LitStr = meta.input.parse()?;
92+
93+
let val = match lit.value().as_str() {
94+
"lowercase" => RenameAll::LowerCase,
95+
"snake_case" => RenameAll::SnakeCase,
96+
"UPPERCASE" => RenameAll::UpperCase,
97+
"SCREAMING_SNAKE_CASE" => RenameAll::ScreamingSnakeCase,
98+
"kebab-case" => RenameAll::KebabCase,
99+
"camelCase" => RenameAll::CamelCase,
100+
"PascalCase" => RenameAll::PascalCase,
101+
_ => fail!(lit, "unexpected value for rename_all"),
102+
};
103+
104+
try_set!(rename_all, val, lit)
105+
} else if meta.path.is_ident("type_name") {
106+
meta.input.parse::<Token![=]>()?;
107+
let lit: LitStr = meta.input.parse()?;
108+
let name = TypeName {
109+
val: lit.value(),
110+
span: lit.span(),
111+
};
112+
113+
try_set!(type_name, name, lit)
114+
} else {
115+
fail!(meta.path, "unexpected attribute")
153116
}
117+
118+
Ok(())
119+
})?;
120+
} else if attr.path().is_ident("repr") {
121+
let list: Punctuated<Meta, Token![,]> =
122+
attr.parse_args_with(<Punctuated<Meta, Token![,]>>::parse_terminated)?;
123+
124+
if let Some(path) = list.iter().find_map(|f| f.require_path_only().ok()) {
125+
try_set!(repr, path.get_ident().unwrap().clone(), list);
154126
}
155-
_ => {}
156127
}
157128
}
158129

@@ -174,35 +145,28 @@ pub fn parse_child_attributes(input: &[Attribute]) -> syn::Result<SqlxChildAttri
174145
let mut skip: bool = false;
175146
let mut json = false;
176147

177-
for attr in input.iter().filter(|a| a.path.is_ident("sqlx")) {
178-
let meta = attr
179-
.parse_meta()
180-
.map_err(|e| syn::Error::new_spanned(attr, e))?;
181-
182-
if let Meta::List(list) = meta {
183-
for value in list.nested.iter() {
184-
match value {
185-
NestedMeta::Meta(meta) => match meta {
186-
Meta::NameValue(MetaNameValue {
187-
path,
188-
lit: Lit::Str(val),
189-
..
190-
}) if path.is_ident("rename") => try_set!(rename, val.value(), value),
191-
Meta::NameValue(MetaNameValue {
192-
path,
193-
lit: Lit::Str(val),
194-
..
195-
}) if path.is_ident("try_from") => try_set!(try_from, val.parse()?, value),
196-
Meta::Path(path) if path.is_ident("default") => default = true,
197-
Meta::Path(path) if path.is_ident("flatten") => flatten = true,
198-
Meta::Path(path) if path.is_ident("skip") => skip = true,
199-
Meta::Path(path) if path.is_ident("json") => json = true,
200-
u => fail!(u, "unexpected attribute"),
201-
},
202-
u => fail!(u, "unexpected attribute"),
203-
}
148+
for attr in input.iter().filter(|a| a.path().is_ident("sqlx")) {
149+
attr.parse_nested_meta(|meta| {
150+
if meta.path.is_ident("rename") {
151+
meta.input.parse::<Token![=]>()?;
152+
let val: LitStr = meta.input.parse()?;
153+
try_set!(rename, val.value(), val);
154+
} else if meta.path.is_ident("try_from") {
155+
meta.input.parse::<Token![=]>()?;
156+
let val: LitStr = meta.input.parse()?;
157+
try_set!(try_from, val.parse()?, val);
158+
} else if meta.path.is_ident("default") {
159+
default = true;
160+
} else if meta.path.is_ident("flatten") {
161+
flatten = true;
162+
} else if meta.path.is_ident("skip") {
163+
skip = true;
164+
} else if meta.path.is_ident("json") {
165+
json = true;
204166
}
205-
}
167+
168+
return Ok(());
169+
})?;
206170

207171
if json && flatten {
208172
fail!(

sqlx-macros-core/src/derives/encode.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use syn::punctuated::Punctuated;
99
use syn::token::Comma;
1010
use syn::{
1111
parse_quote, Data, DataEnum, DataStruct, DeriveInput, Expr, Field, Fields, FieldsNamed,
12-
FieldsUnnamed, Lifetime, LifetimeDef, Stmt, Variant,
12+
FieldsUnnamed, Lifetime, LifetimeParam, Stmt, Variant,
1313
};
1414

1515
pub fn expand_derive_encode(input: &DeriveInput) -> syn::Result<TokenStream> {
@@ -66,7 +66,7 @@ fn expand_derive_encode_transparent(
6666
let mut generics = generics.clone();
6767
generics
6868
.params
69-
.insert(0, LifetimeDef::new(lifetime.clone()).into());
69+
.insert(0, LifetimeParam::new(lifetime.clone()).into());
7070

7171
generics
7272
.params

sqlx-macros-core/src/derives/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ pub use row::expand_derive_from_row;
1212
use self::attributes::RenameAll;
1313
use heck::{ToKebabCase, ToLowerCamelCase, ToShoutySnakeCase, ToSnakeCase, ToUpperCamelCase};
1414
use proc_macro2::TokenStream;
15-
use std::iter::FromIterator;
1615
use syn::DeriveInput;
1716

1817
pub fn expand_derive_type_encode_decode(input: &DeriveInput) -> syn::Result<TokenStream> {

0 commit comments

Comments
 (0)