Skip to content

Commit 9f78ea9

Browse files
committed
gen: Derive Eq, PartialEq and Hash for enums.
1 parent 759f506 commit 9f78ea9

12 files changed

+24
-24
lines changed

src/gen.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1491,9 +1491,9 @@ fn cenum_to_rs(ctx: &mut GenCtx,
14911491
}));
14921492

14931493
attrs.push(if ctx.options.derive_debug {
1494-
mk_deriving_attr(ctx, &["Debug", "Copy", "Clone"])
1494+
mk_deriving_attr(ctx, &["Debug", "Copy", "Clone", "Eq", "PartialEq", "Hash"])
14951495
} else {
1496-
mk_deriving_attr(ctx, &["Copy", "Clone"])
1496+
mk_deriving_attr(ctx, &["Copy", "Clone", "Eq", "PartialEq", "Hash"])
14971497
});
14981498

14991499
items.push(P(ast::Item {

tests/expectations/class_with_inner_struct.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ fn bindgen_test_layout_Struct_B() {
124124
assert_eq!(::std::mem::align_of::<Struct_B>() , 4usize);
125125
}
126126
#[repr(i32)]
127-
#[derive(Debug, Copy, Clone)]
127+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
128128
pub enum Enum_StepSyntax {
129129
Keyword = 0,
130130
FunctionalWithoutKeyword = 1,

tests/expectations/enum.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77

88
#[repr(u32)]
9-
#[derive(Debug, Copy, Clone)]
9+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
1010
pub enum Enum_Foo { Bar = 0, Qux = 1, }
1111
#[repr(i32)]
12-
#[derive(Debug, Copy, Clone)]
12+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
1313
pub enum Enum_Neg { MinusOne = -1, One = 1, }

tests/expectations/enum_and_vtable_mangling.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77

88
#[repr(u32)]
9-
#[derive(Debug, Copy, Clone)]
9+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
1010
pub enum Enum_enum_and_vtable_mangling_hpp_unnamed_1 {
1111
match_ = 0,
1212
whatever_else = 1,

tests/expectations/enum_dupe.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@
77

88
pub const Dupe: Enum_Foo = Enum_Foo::Bar;
99
#[repr(u32)]
10-
#[derive(Debug, Copy, Clone)]
10+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
1111
pub enum Enum_Foo { Bar = 1, }

tests/expectations/enum_explicit_type.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@
66

77

88
#[repr(u8)]
9-
#[derive(Debug, Copy, Clone)]
9+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
1010
pub enum Enum_Foo { Bar = 0, Qux = 1, }
1111
#[repr(i8)]
12-
#[derive(Debug, Copy, Clone)]
12+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
1313
pub enum Enum_Neg { MinusOne = -1, One = 1, }
1414
#[repr(u16)]
15-
#[derive(Debug, Copy, Clone)]
15+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
1616
pub enum Enum_Bigger { Much = 255, Larger = 256, }
1717
#[repr(i64)]
18-
#[derive(Debug, Copy, Clone)]
18+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
1919
pub enum Enum_MuchLong { MuchLow = -4294967296, }
2020
#[repr(u64)]
21-
#[derive(Debug, Copy, Clone)]
21+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
2222
pub enum Enum_MuchLongLong { MuchHigh = 4294967296, }

tests/expectations/enum_negative.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66

77

88
#[repr(i32)]
9-
#[derive(Debug, Copy, Clone)]
9+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
1010
pub enum Enum_Foo { Bar = -2, Qux = 1, }

tests/expectations/enum_packed.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66

77

88
#[repr(u8)]
9-
#[derive(Debug, Copy, Clone)]
9+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
1010
pub enum Enum_Foo { Bar = 0, Qux = 1, }
1111
#[repr(i8)]
12-
#[derive(Debug, Copy, Clone)]
12+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
1313
pub enum Enum_Neg { MinusOne = -1, One = 1, }
1414
#[repr(u16)]
15-
#[derive(Debug, Copy, Clone)]
15+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
1616
pub enum Enum_Bigger { Much = 255, Larger = 256, }

tests/expectations/func_ptr_in_struct.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77

88
#[repr(i32)]
9-
#[derive(Debug, Copy, Clone)]
9+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
1010
pub enum Enum_baz { _BindgenOpaqueEnum = 0, }
1111
#[repr(C)]
1212
#[derive(Debug, Copy)]

tests/expectations/jsval_layout_opaque.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ impl <T> ::std::clone::Clone for __BindgenUnionField<T> {
2525
}
2626
pub const JSVAL_TAG_SHIFT: ::std::os::raw::c_uint = 47;
2727
#[repr(u8)]
28-
#[derive(Debug, Copy, Clone)]
28+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
2929
pub enum JSValueType {
3030
JSVAL_TYPE_DOUBLE = 0,
3131
JSVAL_TYPE_INT32 = 1,
@@ -40,7 +40,7 @@ pub enum JSValueType {
4040
JSVAL_TYPE_MISSING = 33,
4141
}
4242
#[repr(u32)]
43-
#[derive(Debug, Copy, Clone)]
43+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
4444
pub enum JSValueTag {
4545
JSVAL_TAG_MAX_DOUBLE = 131056,
4646
JSVAL_TAG_INT32 = 131057,
@@ -53,7 +53,7 @@ pub enum JSValueTag {
5353
JSVAL_TAG_OBJECT = 131064,
5454
}
5555
#[repr(u64)]
56-
#[derive(Debug, Copy, Clone)]
56+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
5757
pub enum JSValueShiftedTag {
5858
JSVAL_SHIFTED_TAG_MAX_DOUBLE = 18444492278190833663,
5959
JSVAL_SHIFTED_TAG_INT32 = 18444633011384221696,
@@ -66,7 +66,7 @@ pub enum JSValueShiftedTag {
6666
JSVAL_SHIFTED_TAG_OBJECT = 18445618173802708992,
6767
}
6868
#[repr(u32)]
69-
#[derive(Debug, Copy, Clone)]
69+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
7070
pub enum JSWhyMagic {
7171
JS_ELEMENTS_HOLE = 0,
7272
JS_NO_ITER_VALUE = 1,

tests/expectations/overflowed_enum.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66

77

88
#[repr(u32)]
9-
#[derive(Debug, Copy, Clone)]
9+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
1010
pub enum Enum_Foo {
1111
BAP_ARM = 9698489,
1212
BAP_X86 = 11960045,
1313
BAP_X86_64 = 3128633167,
1414
}
1515
#[repr(u16)]
16-
#[derive(Debug, Copy, Clone)]
16+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
1717
pub enum Enum_Bar { One = 1, Big = 2, }

tests/expectations/weird_bitfields.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77

88
#[repr(u32)]
9-
#[derive(Debug, Copy, Clone)]
9+
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
1010
pub enum Enum_nsStyleSVGOpacitySource {
1111
eStyleSVGOpacitySource_Normal = 0,
1212
eStyleSVGOpacitySource_ContextFillOpacity = 1,

0 commit comments

Comments
 (0)