aboutsummaryrefslogtreecommitdiff
path: root/embassy-executor-macros/src/macros/task.rs
diff options
context:
space:
mode:
authorMatthew Tran <[email protected]>2025-03-29 02:06:49 -0500
committerMatthew Tran <[email protected]>2025-03-29 02:46:32 -0500
commit35b353ab948256f4ae959767a7652c24bd42cd57 (patch)
treeb8e4f3f910cb96ad6592256e5d5392c84d88d6f7 /embassy-executor-macros/src/macros/task.rs
parentc72e2c5d100fd42acdd3a39f6250c112c2a37495 (diff)
Fix ugly compiler errors
Diffstat (limited to 'embassy-executor-macros/src/macros/task.rs')
-rw-r--r--embassy-executor-macros/src/macros/task.rs26
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 }