diff options
Diffstat (limited to 'macros/src/codegen')
-rw-r--r-- | macros/src/codegen/post_init.rs | 2 | ||||
-rw-r--r-- | macros/src/codegen/resources.rs | 22 |
2 files changed, 16 insertions, 8 deletions
diff --git a/macros/src/codegen/post_init.rs b/macros/src/codegen/post_init.rs index 733d6eec..c7a574ac 100644 --- a/macros/src/codegen/post_init.rs +++ b/macros/src/codegen/post_init.rs @@ -24,7 +24,7 @@ pub fn codegen(app: &App, analysis: &Analysis) -> Vec<TokenStream2> { // - `get_mut_unchecked` to obtain `MaybeUninit<T>` // - `as_mut_ptr` to obtain a raw pointer to `MaybeUninit<T>` // - `write` the defined value for the late resource T - #mangled_name.get_mut_unchecked().as_mut_ptr().write(late.#name); + #mangled_name.get_mut_unchecked().as_mut_ptr().write(late.#name); )); } } diff --git a/macros/src/codegen/resources.rs b/macros/src/codegen/resources.rs index ad01ccbf..37de9124 100644 --- a/macros/src/codegen/resources.rs +++ b/macros/src/codegen/resources.rs @@ -93,17 +93,23 @@ pub fn codegen( } )); - let ptr = if expr.is_none() { + let (ptr, doc) = if expr.is_none() { // late resource - quote!( - #(#cfgs)* - &mut #mangled_name.get_mut_unchecked().assume_init() + ( + quote!( + #(#cfgs)* + #mangled_name.get_mut_unchecked().as_mut_ptr() + ), + "late", ) } else { // early resource - quote!( - #(#cfgs)* - unsafe { #mangled_name.get_mut_unchecked() } + ( + quote!( + #(#cfgs)* + #mangled_name.get_mut_unchecked() + ), + "early", ) }; @@ -114,6 +120,8 @@ pub fn codegen( None => 0, }; + // let doc = format!(" RTIC internal ({} resource): {}:{}", doc, file!(), line!()); + mod_app.push(util::impl_mutex( extra, cfgs, |