diff options
| author | Emil Fresk <emil.fresk@gmail.com> | 2022-05-17 20:12:36 +0200 |
|---|---|---|
| committer | Emil Fresk <emil.fresk@gmail.com> | 2022-05-17 20:20:59 +0200 |
| commit | cd445165c50a46042e0cf17eb0081879f9cf4d52 (patch) | |
| tree | f81f8a85fe9331216a3203542d2ee6da3f4d90a3 /macros | |
| parent | 6896749f7b8d35a53e359cf90758e2790ad95b19 (diff) | |
More ergonomic error from static asserts messages
Diffstat (limited to 'macros')
| -rw-r--r-- | macros/src/codegen/pre_init.rs | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/macros/src/codegen/pre_init.rs b/macros/src/codegen/pre_init.rs index 91c9991..ae2fd05 100644 --- a/macros/src/codegen/pre_init.rs +++ b/macros/src/codegen/pre_init.rs @@ -49,8 +49,14 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream Some((&task.args.priority, &task.args.binds)) } })) { + let es = format!( + "Maximum priority used by interrupt vector '{}' is more than supported by hardware", + name + ); // Compile time assert that this priority is supported by the device - stmts.push(quote!(let _ = [(); ((1 << #nvic_prio_bits) - #priority as usize)];)); + stmts.push(quote!( + const _: () = assert!((1 << #nvic_prio_bits) >= #priority as usize, #es); + )); stmts.push(quote!( core.NVIC.set_priority( @@ -72,8 +78,14 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream None } }) { + let es = format!( + "Maximum priority used by interrupt vector '{}' is more than supported by hardware", + name + ); // Compile time assert that this priority is supported by the device - stmts.push(quote!(let _ = [(); ((1 << #nvic_prio_bits) - #priority as usize)];)); + stmts.push(quote!( + const _: () = assert!((1 << #nvic_prio_bits) >= #priority as usize, #es); + )); stmts.push(quote!(core.SCB.set_priority( rtic::export::SystemHandler::#name, @@ -90,8 +102,15 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream }; let binds = &monotonic.args.binds; + let name = &monotonic.ident; + let es = format!( + "Maximum priority used by monotonic '{}' is more than supported by hardware", + name + ); // Compile time assert that this priority is supported by the device - stmts.push(quote!(let _ = [(); ((1 << #nvic_prio_bits) - #priority as usize)];)); + stmts.push(quote!( + const _: () = assert!((1 << #nvic_prio_bits) >= #priority as usize, #es); + )); let mono_type = &monotonic.ty; |
