diff options
| author | Matthew Tran <[email protected]> | 2025-03-29 02:06:49 -0500 |
|---|---|---|
| committer | Matthew Tran <[email protected]> | 2025-03-29 02:46:32 -0500 |
| commit | 35b353ab948256f4ae959767a7652c24bd42cd57 (patch) | |
| tree | b8e4f3f910cb96ad6592256e5d5392c84d88d6f7 | |
| parent | c72e2c5d100fd42acdd3a39f6250c112c2a37495 (diff) | |
Fix ugly compiler errors
| -rw-r--r-- | embassy-executor-macros/src/macros/task.rs | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/embassy-executor-macros/src/macros/task.rs b/embassy-executor-macros/src/macros/task.rs index 8a2a7fdb9..e5523c5cd 100644 --- a/embassy-executor-macros/src/macros/task.rs +++ b/embassy-executor-macros/src/macros/task.rs | |||
| @@ -145,33 +145,39 @@ pub fn run(args: TokenStream, item: TokenStream) -> TokenStream { | |||
| 145 | }; | 145 | }; |
| 146 | #[cfg(not(feature = "nightly"))] | 146 | #[cfg(not(feature = "nightly"))] |
| 147 | let mut task_outer_body = quote! { | 147 | let mut task_outer_body = quote! { |
| 148 | const fn __task_pool_size<F, Args>(_: F) -> usize | 148 | // We use Fut instead of F::Fut because F::Fut causes the compiler to generate some ugly |
| 149 | // unrelated errors when the task has a compile error. | ||
| 150 | const fn __task_pool_size<F, Args, Fut>(_: F) -> usize | ||
| 149 | where | 151 | where |
| 150 | F: #embassy_executor::_export::TaskFn<Args>, | 152 | F: #embassy_executor::_export::TaskFn<Args, Fut = Fut>, |
| 153 | Fut: ::core::future::Future + 'static, | ||
| 151 | { | 154 | { |
| 152 | ::core::mem::size_of::< | 155 | ::core::mem::size_of::< |
| 153 | #embassy_executor::raw::TaskPool<F::Fut, POOL_SIZE> | 156 | #embassy_executor::raw::TaskPool<Fut, POOL_SIZE> |
| 154 | >() | 157 | >() |
| 155 | } | 158 | } |
| 156 | const fn __task_pool_align<F, Args>(_: F) -> usize | 159 | const fn __task_pool_align<F, Args, Fut>(_: F) -> usize |
| 157 | where | 160 | where |
| 158 | F: #embassy_executor::_export::TaskFn<Args>, | 161 | F: #embassy_executor::_export::TaskFn<Args, Fut = Fut>, |
| 162 | Fut: ::core::future::Future + 'static, | ||
| 159 | { | 163 | { |
| 160 | ::core::mem::align_of::< | 164 | ::core::mem::align_of::< |
| 161 | #embassy_executor::raw::TaskPool<F::Fut, POOL_SIZE> | 165 | #embassy_executor::raw::TaskPool<Fut, POOL_SIZE> |
| 162 | >() | 166 | >() |
| 163 | } | 167 | } |
| 164 | 168 | ||
| 165 | const fn __task_pool_new<F, Args>(_: F) -> #embassy_executor::raw::TaskPool<F::Fut, POOL_SIZE> | 169 | const fn __task_pool_new<F, Args, Fut>(_: F) -> #embassy_executor::raw::TaskPool<Fut, POOL_SIZE> |
| 166 | where | 170 | where |
| 167 | F: #embassy_executor::_export::TaskFn<Args>, | 171 | F: #embassy_executor::_export::TaskFn<Args, Fut = Fut>, |
| 172 | Fut: ::core::future::Future + 'static, | ||
| 168 | { | 173 | { |
| 169 | #embassy_executor::raw::TaskPool::new() | 174 | #embassy_executor::raw::TaskPool::new() |
| 170 | } | 175 | } |
| 171 | 176 | ||
| 172 | const fn __task_pool_get<F, Args>(_: F) -> &'static #embassy_executor::raw::TaskPool<F::Fut, POOL_SIZE> | 177 | const fn __task_pool_get<F, Args, Fut>(_: F) -> &'static #embassy_executor::raw::TaskPool<Fut, POOL_SIZE> |
| 173 | where | 178 | where |
| 174 | F: #embassy_executor::_export::TaskFn<Args> | 179 | F: #embassy_executor::_export::TaskFn<Args, Fut = Fut>, |
| 180 | Fut: ::core::future::Future + 'static, | ||
| 175 | { | 181 | { |
| 176 | unsafe { &*POOL.get().cast() } | 182 | unsafe { &*POOL.get().cast() } |
| 177 | } | 183 | } |
