Skip to content

Commit 166b751

Browse files
committed
transpile: Derive Eq for enum newtypes
1 parent 96dbe2f commit 166b751

11 files changed

Lines changed: 17 additions & 17 deletions

c2rust-transpile/src/translator/enums.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ impl<'c> Translation<'c> {
2828
EnumMode::NewType => {
2929
let field = mk().pub_().enum_field(integral_type_rs);
3030
mk().span(span)
31-
.call_attr("derive", vec!["Clone", "Copy"])
31+
.call_attr("derive", vec!["Clone", "Copy", "PartialEq", "Eq"])
3232
.call_attr("repr", vec!["transparent"])
3333
.pub_()
3434
.struct_item(enum_name, vec![field], true)

c2rust-transpile/tests/snapshots/snapshots__transpile@enums.c.2021.clang15.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ expression: cat tests/snapshots/enums.2021.clang15.rs
1111
unused_assignments,
1212
unused_mut
1313
)]
14-
#[derive(Clone, Copy)]
14+
#[derive(Clone, Copy, PartialEq, Eq)]
1515
#[repr(transparent)]
1616
pub struct Foo(pub ::core::ffi::c_uint);
1717
pub const Foo3: Foo = Foo(3);
1818
pub const Foo2: Foo = Foo(2);
1919
pub const Foo1: Foo = Foo(1);
2020
pub const Foo0: Foo = Foo(0);
21-
#[derive(Clone, Copy)]
21+
#[derive(Clone, Copy, PartialEq, Eq)]
2222
#[repr(transparent)]
2323
pub struct Bar(pub ::core::ffi::c_int);
2424
pub const Bar3: Bar = Bar(3);

c2rust-transpile/tests/snapshots/snapshots__transpile@enums.c.2024.clang15.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ expression: cat tests/snapshots/enums.2024.clang15.rs
1212
unused_assignments,
1313
unused_mut
1414
)]
15-
#[derive(Clone, Copy)]
15+
#[derive(Clone, Copy, PartialEq, Eq)]
1616
#[repr(transparent)]
1717
pub struct Foo(pub ::core::ffi::c_uint);
1818
pub const Foo3: Foo = Foo(3);
1919
pub const Foo2: Foo = Foo(2);
2020
pub const Foo1: Foo = Foo(1);
2121
pub const Foo0: Foo = Foo(0);
22-
#[derive(Clone, Copy)]
22+
#[derive(Clone, Copy, PartialEq, Eq)]
2323
#[repr(transparent)]
2424
pub struct Bar(pub ::core::ffi::c_int);
2525
pub const Bar3: Bar = Bar(3);

c2rust-transpile/tests/snapshots/snapshots__transpile@exprs.c.2021.clang15.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ expression: cat tests/snapshots/exprs.2021.clang15.rs
1515
extern "C" {
1616
fn puts(str: *const ::core::ffi::c_char) -> ::core::ffi::c_int;
1717
}
18-
#[derive(Clone, Copy)]
18+
#[derive(Clone, Copy, PartialEq, Eq)]
1919
#[repr(transparent)]
2020
pub struct E(pub ::core::ffi::c_uint);
2121
pub const EA: E = E(0);
2222
pub type int_t = ::core::ffi::c_int;
23-
#[derive(Clone, Copy)]
23+
#[derive(Clone, Copy, PartialEq, Eq)]
2424
#[repr(transparent)]
2525
pub struct C2Rust_Unnamed(pub ::core::ffi::c_uint);
2626
pub const C: C2Rust_Unnamed = C2Rust_Unnamed(2);

c2rust-transpile/tests/snapshots/snapshots__transpile@exprs.c.2024.clang15.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ expression: cat tests/snapshots/exprs.2024.clang15.rs
1515
unsafe extern "C" {
1616
unsafe fn puts(str: *const ::core::ffi::c_char) -> ::core::ffi::c_int;
1717
}
18-
#[derive(Clone, Copy)]
18+
#[derive(Clone, Copy, PartialEq, Eq)]
1919
#[repr(transparent)]
2020
pub struct E(pub ::core::ffi::c_uint);
2121
pub const EA: E = E(0);
2222
pub type int_t = ::core::ffi::c_int;
23-
#[derive(Clone, Copy)]
23+
#[derive(Clone, Copy, PartialEq, Eq)]
2424
#[repr(transparent)]
2525
pub struct C2Rust_Unnamed(pub ::core::ffi::c_uint);
2626
pub const C: C2Rust_Unnamed = C2Rust_Unnamed(2);

c2rust-transpile/tests/snapshots/snapshots__transpile@macrocase.c.2021.clang15.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ expression: cat tests/snapshots/macrocase.2021.clang15.rs
1111
unused_assignments,
1212
unused_mut
1313
)]
14-
#[derive(Clone, Copy)]
14+
#[derive(Clone, Copy, PartialEq, Eq)]
1515
#[repr(transparent)]
1616
pub struct ZSTD_dParameter(pub ::core::ffi::c_uint);
1717
pub const ZSTD_d_experimentalParam1: ZSTD_dParameter = ZSTD_dParameter(1000);

c2rust-transpile/tests/snapshots/snapshots__transpile@macrocase.c.2024.clang15.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ expression: cat tests/snapshots/macrocase.2024.clang15.rs
1212
unused_assignments,
1313
unused_mut
1414
)]
15-
#[derive(Clone, Copy)]
15+
#[derive(Clone, Copy, PartialEq, Eq)]
1616
#[repr(transparent)]
1717
pub struct ZSTD_dParameter(pub ::core::ffi::c_uint);
1818
pub const ZSTD_d_experimentalParam1: ZSTD_dParameter = ZSTD_dParameter(1000);

c2rust-transpile/tests/snapshots/snapshots__transpile@records.c.2021.clang15.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ expression: cat tests/snapshots/records.2021.clang15.rs
1414
#[derive(Copy, Clone)]
1515
#[repr(C)]
1616
pub struct AnonEnumInStruct {}
17-
#[derive(Clone, Copy)]
17+
#[derive(Clone, Copy, PartialEq, Eq)]
1818
#[repr(transparent)]
1919
pub struct C2Rust_Unnamed(pub ::core::ffi::c_uint);
2020
pub const VALUE2: C2Rust_Unnamed = C2Rust_Unnamed(1);
@@ -42,7 +42,7 @@ pub struct InsideStruct {
4242
pub union AnonEnumInUnion {
4343
pub a: ::core::ffi::c_int,
4444
}
45-
#[derive(Clone, Copy)]
45+
#[derive(Clone, Copy, PartialEq, Eq)]
4646
#[repr(transparent)]
4747
pub struct C2Rust_Unnamed_1(pub ::core::ffi::c_uint);
4848
pub const VALUE4: C2Rust_Unnamed_1 = C2Rust_Unnamed_1(1);

c2rust-transpile/tests/snapshots/snapshots__transpile@records.c.2024.clang15.snap

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ expression: cat tests/snapshots/records.2024.clang15.rs
1515
#[derive(Copy, Clone)]
1616
#[repr(C)]
1717
pub struct AnonEnumInStruct {}
18-
#[derive(Clone, Copy)]
18+
#[derive(Clone, Copy, PartialEq, Eq)]
1919
#[repr(transparent)]
2020
pub struct C2Rust_Unnamed(pub ::core::ffi::c_uint);
2121
pub const VALUE2: C2Rust_Unnamed = C2Rust_Unnamed(1);
@@ -43,7 +43,7 @@ pub struct InsideStruct {
4343
pub union AnonEnumInUnion {
4444
pub a: ::core::ffi::c_int,
4545
}
46-
#[derive(Clone, Copy)]
46+
##[derive(Clone, Copy, PartialEq, Eq)]
4747
#[repr(transparent)]
4848
pub struct C2Rust_Unnamed_1(pub ::core::ffi::c_uint);
4949
pub const VALUE4: C2Rust_Unnamed_1 = C2Rust_Unnamed_1(1);

c2rust-transpile/tests/snapshots/snapshots__transpile@scalar_init.c.2021.clang15.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ expression: cat tests/snapshots/scalar_init.2021.clang15.rs
1212
unused_mut
1313
)]
1414
#![feature(raw_ref_op)]
15-
#[derive(Clone, Copy)]
15+
#[derive(Clone, Copy, PartialEq, Eq)]
1616
#[repr(transparent)]
1717
pub struct E(pub ::core::ffi::c_uint);
1818
pub const A: E = E(0);

0 commit comments

Comments
 (0)