Skip to content

Commit 5c88ee9

Browse files
committed
Fix nr function when interrupt enum is uninhabited
1 parent 1e7d1d3 commit 5c88ee9

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

src/generate/interrupt.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -146,10 +146,11 @@ pub fn render(
146146
Target::None => {}
147147
}
148148

149-
let enum_repr = if variants.is_empty() {
150-
quote!()
149+
let self_token = quote!(self);
150+
let (enum_repr, nr_expr) = if variants.is_empty() {
151+
(quote!(), quote!(match #self_token {}))
151152
} else {
152-
quote!(#[repr(u8)])
153+
(quote!(#[repr(u8)]), quote!(*#self_token as u8))
153154
};
154155

155156
let interrupt_enum = quote! {
@@ -162,8 +163,8 @@ pub fn render(
162163

163164
unsafe impl bare_metal::Nr for Interrupt {
164165
#[inline(always)]
165-
fn nr(&self) -> u8 {
166-
*self as u8
166+
fn nr(&#self_token) -> u8 {
167+
#nr_expr
167168
}
168169
}
169170
};

0 commit comments

Comments
 (0)