[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <c7662771-ea67-43ae-a4b2-6ffac29c0509@proton.me>
Date: Wed, 25 Oct 2023 07:36:13 +0000
From: Benno Lossin <benno.lossin@...ton.me>
To: FUJITA Tomonori <fujita.tomonori@...il.com>
Cc: netdev@...r.kernel.org, rust-for-linux@...r.kernel.org, andrew@...n.ch, tmgross@...ch.edu, miguel.ojeda.sandonis@...il.com, wedsonaf@...il.com, greg@...ah.com, ojeda@...nel.org
Subject: Re: [PATCH net-next v6 3/5] rust: add second `bindgen` pass for enum exhaustiveness checking
On 25.10.23 03:33, FUJITA Tomonori wrote:
> On Tue, 24 Oct 2023 16:29:16 +0000
> Benno Lossin <benno.lossin@...ton.me> wrote:
>
>> On 24.10.23 02:58, FUJITA Tomonori wrote:
>>> From: Miguel Ojeda <ojeda@...nel.org>
>>
>> I think this commit message should also explain what it is
>> doing and not only the error below.
>
> Looks ok?
>
> This patch makes sure that the C's enum phy_state is sync with Rust
> sides. If not, compiling fails. Note that this is a temporary
> solution. It will be replaced with bindgen when it supports generating
> the enum conversion code.
The solution that is implemented does not only work for `phy_state`, but
also other enums (you still have to manually add them). Also it would be
good to say that the error below is the error that one will receive when
the enum is out of sync/not all C variants are in Rust.
--
Cheers,
Benno
>
> error[E0005]: refutable pattern in function argument
> --> rust/bindings/bindings_enum_check.rs:29:6
> |
> 29 | (phy_state::PHY_DOWN
> | ______^
> 30 | | | phy_state::PHY_READY
> 31 | | | phy_state::PHY_HALTED
> 32 | | | phy_state::PHY_ERROR
> ... |
> 35 | | | phy_state::PHY_NOLINK
> 36 | | | phy_state::PHY_CABLETEST): phy_state,
> | |______________________________^ pattern `phy_state::PHY_NEW` not covered
> |
> note: `phy_state` defined here
> --> rust/bindings/bindings_generated_enum_check.rs:60739:10
> |
> 60739 | pub enum phy_state {
> | ^^^^^^^^^
> ...
> 60745 | PHY_NEW = 5,
> | ------- not covered
> = note: the matched value is of type `phy_state`
>
Powered by blists - more mailing lists