Skip to content

Commit bc8ad8a

Browse files
committed
Distinguish between field and container attributes when parsing
1 parent 071dfa3 commit bc8ad8a

File tree

5 files changed

+11
-5
lines changed

5 files changed

+11
-5
lines changed

postgres-derive/src/composites.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ pub struct Field {
1414

1515
impl Field {
1616
pub fn parse(raw: &syn::Field, rename_all: Option<RenameRule>) -> Result<Field, Error> {
17-
let overrides = Overrides::extract(&raw.attrs)?;
17+
let overrides = Overrides::extract(&raw.attrs, false)?;
1818
let ident = raw.ident.as_ref().unwrap().clone();
1919

2020
// field level name override takes precendence over container level rename_all override

postgres-derive/src/enums.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ impl Variant {
1818
))
1919
}
2020
}
21-
let overrides = Overrides::extract(&raw.attrs)?;
21+
let overrides = Overrides::extract(&raw.attrs, false)?;
2222

2323
// variant level name override takes precendence over container level rename_all override
2424
let name = overrides.name.unwrap_or_else(|| match rename_all {

postgres-derive/src/fromsql.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use crate::enums::Variant;
1515
use crate::overrides::Overrides;
1616

1717
pub fn expand_derive_fromsql(input: DeriveInput) -> Result<TokenStream, Error> {
18-
let overrides = Overrides::extract(&input.attrs)?;
18+
let overrides = Overrides::extract(&input.attrs, true)?;
1919

2020
if overrides.name.is_some() && overrides.transparent {
2121
return Err(Error::new_spanned(

postgres-derive/src/overrides.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pub struct Overrides {
1010
}
1111

1212
impl Overrides {
13-
pub fn extract(attrs: &[Attribute]) -> Result<Overrides, Error> {
13+
pub fn extract(attrs: &[Attribute], container_attr: bool) -> Result<Overrides, Error> {
1414
let mut overrides = Overrides {
1515
name: None,
1616
rename_all: None,
@@ -34,6 +34,12 @@ impl Overrides {
3434
Meta::NameValue(meta) => {
3535
let name_override = meta.path.is_ident("name");
3636
let rename_all_override = meta.path.is_ident("rename_all");
37+
if !container_attr && rename_all_override {
38+
return Err(Error::new_spanned(
39+
&meta.path,
40+
"rename_all is a container attribute",
41+
));
42+
}
3743
if !name_override && !rename_all_override {
3844
return Err(Error::new_spanned(&meta.path, "unknown override"));
3945
}

postgres-derive/src/tosql.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use crate::enums::Variant;
1313
use crate::overrides::Overrides;
1414

1515
pub fn expand_derive_tosql(input: DeriveInput) -> Result<TokenStream, Error> {
16-
let overrides = Overrides::extract(&input.attrs)?;
16+
let overrides = Overrides::extract(&input.attrs, true)?;
1717

1818
if overrides.name.is_some() && overrides.transparent {
1919
return Err(Error::new_spanned(

0 commit comments

Comments
 (0)