mirror of
https://github.com/rtic-rs/rtic.git
synced 2025-12-18 05:45:19 +01:00
Propogate the task attributes to the spawn handles
This allows tasks to be gated by `cfg` attributes when also using
monotonics. For example:
```rust
#[cfg(feature = "logging")]
#[task(shared = [logger])]
fn logger_init(mut cx: logger_init::Context) {
/* ... */
}
```
Without this change, the reschedule_at() implementation is
unconditionally included even though it references the SpawnHandle from
its task module, which is _conditionally_ included. This resulted in
compiler errors like the following:
```
error[E0433]: failed to resolve: use of undeclared crate or module `logger_init`
--> src/main.rs:243:8
|
243 | fn logger_init(mut cx: logger_init::Context) {
| ^^^^^^^^^^^ use of undeclared crate or module `logger_init`
```
This commit is contained in:
parent
2f3b5cba80
commit
5f395658f0
1 changed files with 2 additions and 0 deletions
|
|
@ -317,11 +317,13 @@ pub fn codegen(
|
||||||
));
|
));
|
||||||
|
|
||||||
items.push(quote!(
|
items.push(quote!(
|
||||||
|
#(#cfgs)*
|
||||||
pub struct #internal_spawn_handle_ident {
|
pub struct #internal_spawn_handle_ident {
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
marker: u32,
|
marker: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#(#cfgs)*
|
||||||
impl #internal_spawn_handle_ident {
|
impl #internal_spawn_handle_ident {
|
||||||
pub fn cancel(self) -> Result<#ty, ()> {
|
pub fn cancel(self) -> Result<#ty, ()> {
|
||||||
rtic::export::interrupt::free(|_| unsafe {
|
rtic::export::interrupt::free(|_| unsafe {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue