Skip to content

Commit 879edf3

Browse files
committed
scraped together some msrv compatibility
1 parent 4fcd483 commit 879edf3

File tree

4 files changed

+14
-13
lines changed

4 files changed

+14
-13
lines changed

src/attr/item.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use syn::{
1111
TraitBoundModifier, Type, TypeParamBound, TypePath, WhereClause, WherePredicate,
1212
};
1313

14-
use crate::{util, Error, Item, Skip, Trait, TraitImpl, DERIVE_WHERE};
14+
use crate::{DERIVE_WHERE, DERIVE_WHERE_INTERNAL, Error, Item, Skip, Trait, TraitImpl, util};
1515

1616
/// Attributes on item.
1717
#[derive(Default)]
@@ -29,7 +29,7 @@ impl ItemAttr {
2929
let mut skip_inners = Vec::new();
3030

3131
for attr in attrs {
32-
if attr.path.is_ident(DERIVE_WHERE) {
32+
if attr.path.is_ident(DERIVE_WHERE) || attr.path.is_ident(DERIVE_WHERE_INTERNAL) {
3333
if let Ok(meta) = attr.parse_meta() {
3434
if let Meta::List(list) = meta {
3535
match list.nested.len() {

src/lib.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,8 @@ use self::{
334334

335335
/// Token used for attributes.
336336
const DERIVE_WHERE: &str = "derive_where";
337+
/// Token used for attributes internaly.
338+
const DERIVE_WHERE_INTERNAL: &str = "__derive_where_internal_derive_attr";
337339

338340
/// derive_where attribute macro, that does not require deriving
339341
#[proc_macro_attribute]
@@ -343,12 +345,12 @@ pub fn derive_where(
343345
) -> proc_macro::TokenStream {
344346
let attr: TokenStream = attr.into();
345347
let input: TokenStream = input.into();
346-
quote! {
348+
let output = quote! {
347349
#[derive(::derive_where::DeriveWhere)]
348-
#[derive_where(#attr)]
350+
#[__derive_where_internal_derive_attr(#attr)]
349351
#input
350-
}
351-
.into()
352+
};
353+
output.into()
352354
}
353355

354356
/// Item-level options:
@@ -376,7 +378,7 @@ pub fn derive_where(
376378
/// See the [crate](crate) level description for more details.
377379
///
378380
/// [`Zeroize`]: https://docs.rs/zeroize/latest/zeroize/trait.Zeroize.html
379-
#[proc_macro_derive(DeriveWhere, attributes(derive_where))]
381+
#[proc_macro_derive(DeriveWhere, attributes(derive_where,__derive_where_internal_derive_attr))]
380382
#[cfg_attr(feature = "nightly", allow_internal_unstable(core_intrinsics))]
381383
pub fn derive_where_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
382384
match derive_where_internal(input.into()) {

tests/bound.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ mod util;
22

33
use std::marker::PhantomData;
44

5-
use derive_where::{derive_where, DeriveWhere};
5+
use derive_where::derive_where;
66

77
use self::util::AssertClone;
88

@@ -18,7 +18,6 @@ fn custom_generic() {
1818
type Type = i32;
1919
}
2020

21-
#[derive(DeriveWhere)]
2221
#[derive_where(Clone; T::Type)]
2322
struct Test<T: Trait>(T::Type);
2423

tests/enum_mixed.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@ mod util;
55

66
use std::cmp::Ordering;
77

8-
use derive_where::DeriveWhere;
9-
108
use self::util::{
119
AssertClone, AssertCopy, AssertDebug, AssertEq, AssertHash, AssertOrd, AssertPartialEq,
1210
AssertPartialOrd, Wrapper,
1311
};
1412

1513
#[test]
1614
fn all() {
17-
#[derive(DeriveWhere)]
18-
#[derive_where(Clone, Copy, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
15+
// #[derive(DeriveWhere)]
16+
use derive_where::derive_where as dw_macro;
17+
#[dw_macro(Clone, Copy, Debug)]
18+
#[derive_where(Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
1919
enum Test<T> {
2020
#[derive_where(default)]
2121
A {

0 commit comments

Comments
 (0)