Skip to content

Commit 773a6df

Browse files
daxpeddaModProg
authored andcommitted
Fix CI
1 parent 83fa0a6 commit 773a6df

File tree

3 files changed

+48
-39
lines changed

3 files changed

+48
-39
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ syn = { version = "2", default-features = false, features = [
4040

4141
[dev-dependencies]
4242
pretty_assertions = "1"
43+
rustversion = "1"
4344
trybuild = { version = "1.0.18", default-features = false }
4445
zeroize_ = { version = "1.5", package = "zeroize", default-features = false }
4546

src/trait_/common_ord.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ use quote::quote;
55
#[cfg(not(feature = "nightly"))]
66
use syn::PatOr;
77

8+
use crate::{Data, DeriveTrait, Item, SimpleType};
89
#[cfg(not(feature = "nightly"))]
9-
use crate::Discriminant;
10-
use crate::{Data, DeriveTrait, Item, SimpleType, Trait};
10+
use crate::{Discriminant, Trait};
1111

1212
/// Build signature for [`PartialOrd`] and [`Ord`].
1313
pub fn build_ord_signature(
1414
item: &Item,
15-
traits: &[DeriveTrait],
15+
#[cfg_attr(feature = "nightly", allow(unused_variables))] traits: &[DeriveTrait],
1616
trait_: &DeriveTrait,
1717
body: &TokenStream,
1818
) -> TokenStream {
@@ -173,8 +173,8 @@ pub fn build_ord_signature(
173173
Discriminant::UnitRepr(repr) | Discriminant::Repr(repr) => {
174174
quote! {
175175
#path::#method(
176-
unsafe { *<*const _>::from(self).cast::<#repr>() },
177-
unsafe { *<*const _>::from(__other).cast::<#repr>() },
176+
&unsafe { *<*const _>::from(self).cast::<#repr>() },
177+
&unsafe { *<*const _>::from(__other).cast::<#repr>() },
178178
)
179179
}
180180
}

tests/discriminant.rs

Lines changed: 42 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -108,24 +108,28 @@ fn repr_with_values() {
108108
assert_eq!(2, unsafe { *<*const _>::from(&Test::C).cast::<u8>() });
109109
}
110110

111-
#[test]
112-
fn repr_with_discriminants_values() {
113-
#[repr(u8)]
114-
enum Test {
115-
A(u8) = 3,
116-
B,
117-
C,
118-
}
119-
120-
#[cfg(feature = "nightly")]
121-
{
122-
assert_eq!(3_u8, discriminant_value(&Test::A(0)));
123-
assert_eq!(4_u8, discriminant_value(&Test::B));
124-
assert_eq!(5_u8, discriminant_value(&Test::C));
111+
#[rustversion::since(1.66)]
112+
mod repr_with_discriminants_values {
113+
#[test]
114+
fn test() {
115+
#[repr(u8)]
116+
enum Test {
117+
A(u8) = 3,
118+
B,
119+
C,
120+
}
121+
122+
#[cfg(feature = "nightly")]
123+
{
124+
use std::intrinsics::discriminant_value;
125+
assert_eq!(3_u8, discriminant_value(&Test::A(0)));
126+
assert_eq!(4_u8, discriminant_value(&Test::B));
127+
assert_eq!(5_u8, discriminant_value(&Test::C));
128+
}
129+
assert_eq!(3, unsafe { *<*const _>::from(&Test::A(0)).cast::<u8>() });
130+
assert_eq!(4, unsafe { *<*const _>::from(&Test::B).cast::<u8>() });
131+
assert_eq!(5, unsafe { *<*const _>::from(&Test::C).cast::<u8>() });
125132
}
126-
assert_eq!(3, unsafe { *<*const _>::from(&Test::A(0)).cast::<u8>() });
127-
assert_eq!(4, unsafe { *<*const _>::from(&Test::B).cast::<u8>() });
128-
assert_eq!(5, unsafe { *<*const _>::from(&Test::C).cast::<u8>() });
129133
}
130134

131135
#[test]
@@ -148,22 +152,26 @@ fn repr_with_repr_c_with_values() {
148152
assert_eq!(2, unsafe { *<*const _>::from(&Test::C).cast::<u8>() });
149153
}
150154

151-
#[test]
152-
fn repr_with_repr_c_with_values_discriminants() {
153-
#[repr(C, u8)]
154-
enum Test {
155-
A(u8) = 3,
156-
B,
157-
C,
158-
}
159-
160-
#[cfg(feature = "nightly")]
161-
{
162-
assert_eq!(3_u8, discriminant_value(&Test::A(0)));
163-
assert_eq!(4_u8, discriminant_value(&Test::B));
164-
assert_eq!(5_u8, discriminant_value(&Test::C));
155+
#[rustversion::since(1.66)]
156+
mod repr_with_repr_c_with_values_discriminants {
157+
#[test]
158+
fn test() {
159+
#[repr(C, u8)]
160+
enum Test {
161+
A(u8) = 3,
162+
B,
163+
C,
164+
}
165+
166+
#[cfg(feature = "nightly")]
167+
{
168+
use std::intrinsics::discriminant_value;
169+
assert_eq!(3_u8, discriminant_value(&Test::A(0)));
170+
assert_eq!(4_u8, discriminant_value(&Test::B));
171+
assert_eq!(5_u8, discriminant_value(&Test::C));
172+
}
173+
assert_eq!(3, unsafe { *<*const _>::from(&Test::A(0)).cast::<u8>() });
174+
assert_eq!(4, unsafe { *<*const _>::from(&Test::B).cast::<u8>() });
175+
assert_eq!(5, unsafe { *<*const _>::from(&Test::C).cast::<u8>() });
165176
}
166-
assert_eq!(3, unsafe { *<*const _>::from(&Test::A(0)).cast::<u8>() });
167-
assert_eq!(4, unsafe { *<*const _>::from(&Test::B).cast::<u8>() });
168-
assert_eq!(5, unsafe { *<*const _>::from(&Test::C).cast::<u8>() });
169177
}

0 commit comments

Comments
 (0)