diff --git a/CHANGELOG.md b/CHANGELOG.md index ac08ed9..9fe5a8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - +## [Unreleased] + +### Changed +- `#[serde(...)]` attributes are now allowed even when not deriving + `De/Serialize` with `#[derive_where(...)]`. + ## [1.5.0] - 2025-06-08 ### Added diff --git a/src/attr/item.rs b/src/attr/item.rs index e304d50..adea6e5 100644 --- a/src/attr/item.rs +++ b/src/attr/item.rs @@ -96,18 +96,6 @@ impl ItemAttr { return Err(Error::none(span)); } - // Check for `#[serde(...)]` attributes without `De/Serialize`. - #[cfg(feature = "serde")] - if !self_.derive_wheres.iter().any(|derive_where| { - derive_where.contains(Trait::Deserialize) | derive_where.contains(Trait::Serialize) - }) { - for attr in attrs { - if attr.path().is_ident("serde") { - return Err(Error::serde_without_serde(attr.span())); - } - } - } - // Merge `DeriveWhere`s with the same bounds. self_ .derive_wheres diff --git a/src/error.rs b/src/error.rs index d531f0c..6c89095 100644 --- a/src/error.rs +++ b/src/error.rs @@ -301,12 +301,6 @@ impl Error { syn::Error::new(skip_clone, "Cannot skip `Clone` while deriving `Copy`") } - /// Unsupported `serde(...)` without deriving `De/Serialize`. - #[cfg(feature = "serde")] - pub fn serde_without_serde(serde: Span) -> syn::Error { - syn::Error::new(serde, "Found unused `#[serde(...)]`") - } - /// Conflicting `serde(bound ...)` when deriving `De/Serialize`. #[cfg(feature = "serde")] pub fn serde_bound(serde: Span) -> syn::Error { diff --git a/tests/ui/serde/serde.rs b/tests/ui/serde/serde.rs index 0548985..ea719c6 100644 --- a/tests/ui/serde/serde.rs +++ b/tests/ui/serde/serde.rs @@ -4,7 +4,7 @@ use derive_where::derive_where; #[derive_where(Clone)] #[serde(crate = "serde_")] -struct InvalidSerde(PhantomData); +struct ValidSerde(PhantomData); #[derive_where(Deserialize)] #[serde(bound = "")] diff --git a/tests/ui/serde/serde.stderr b/tests/ui/serde/serde.stderr index 70e8be4..8e16051 100644 --- a/tests/ui/serde/serde.stderr +++ b/tests/ui/serde/serde.stderr @@ -1,9 +1,3 @@ -error: Found unused `#[serde(...)]` - --> tests/ui/serde/serde.rs:6:1 - | -6 | #[serde(crate = "serde_")] - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ - error: Found conflicting `#[serde(bound ...)]` --> tests/ui/serde/serde.rs:10:9 |