diff options
| author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2023-03-04 21:10:24 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-04 21:10:24 +0000 |
| commit | 7c7d6558f6d9c50fbb4d2487c98c9a5be15f2f7b (patch) | |
| tree | 80a47f0dc40059014e9448c4c2eb34c54dff45fe /macros/src/codegen/idle.rs | |
| parent | 1c5db277e4161470136dbd2a11e914ff1d383581 (diff) | |
| parent | 98c5490d94950608d31cd5ad9dd260f2f853735c (diff) | |
Merge #694
694: RTIC 2 r=AfoHT a=korken89
Co-authored-by: Emil Fresk <emil.fresk@gmail.com>
Co-authored-by: Per Lindgren <per.lindgren@ltu.se>
Diffstat (limited to 'macros/src/codegen/idle.rs')
| -rw-r--r-- | macros/src/codegen/idle.rs | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/macros/src/codegen/idle.rs b/macros/src/codegen/idle.rs deleted file mode 100644 index 77a7f9f..0000000 --- a/macros/src/codegen/idle.rs +++ /dev/null @@ -1,94 +0,0 @@ -use proc_macro2::TokenStream as TokenStream2; -use quote::quote; -use rtic_syntax::{ast::App, Context}; - -use crate::{ - analyze::Analysis, - check::Extra, - codegen::{local_resources_struct, module, shared_resources_struct}, -}; - -/// Generates support code for `#[idle]` functions -pub fn codegen( - app: &App, - analysis: &Analysis, - extra: &Extra, -) -> ( - // mod_app_idle -- the `${idle}Resources` constructor - Vec<TokenStream2>, - // root_idle -- items that must be placed in the root of the crate: - // - the `${idle}Locals` struct - // - the `${idle}Resources` struct - // - the `${idle}` module, which contains types like `${idle}::Context` - Vec<TokenStream2>, - // user_idle - Option<TokenStream2>, - // call_idle - TokenStream2, -) { - if let Some(idle) = &app.idle { - let mut shared_needs_lt = false; - let mut local_needs_lt = false; - let mut mod_app = vec![]; - let mut root_idle = vec![]; - - let name = &idle.name; - - if !idle.args.shared_resources.is_empty() { - let (item, constructor) = - shared_resources_struct::codegen(Context::Idle, &mut shared_needs_lt, app); - - root_idle.push(item); - mod_app.push(constructor); - } - - if !idle.args.local_resources.is_empty() { - let (item, constructor) = - local_resources_struct::codegen(Context::Idle, &mut local_needs_lt, app); - - root_idle.push(item); - - mod_app.push(constructor); - } - - root_idle.push(module::codegen( - Context::Idle, - shared_needs_lt, - local_needs_lt, - app, - analysis, - extra, - )); - let idle_doc = " User provided idle function".to_string(); - - let attrs = &idle.attrs; - let context = &idle.context; - let stmts = &idle.stmts; - let user_idle = Some(quote!( - #(#attrs)* - #[doc = #idle_doc] - #[allow(non_snake_case)] - fn #name(#context: #name::Context) -> ! { - use rtic::Mutex as _; - use rtic::mutex::prelude::*; - - #(#stmts)* - } - )); - - let call_idle = quote!(#name( - #name::Context::new(&rtic::export::Priority::new(0)) - )); - - (mod_app, root_idle, user_idle, call_idle) - } else { - ( - vec![], - vec![], - None, - quote!(loop { - rtic::export::nop() - }), - ) - } -} |
