aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/task_named_main.rs26
-rw-r--r--macros/src/codegen.rs19
2 files changed, 37 insertions, 8 deletions
diff --git a/examples/task_named_main.rs b/examples/task_named_main.rs
new file mode 100644
index 00000000..c3d21b58
--- /dev/null
+++ b/examples/task_named_main.rs
@@ -0,0 +1,26 @@
+//! examples/task_named_main.rs
+
+#![deny(unsafe_code)]
+#![deny(warnings)]
+#![no_main]
+#![no_std]
+
+use panic_semihosting as _;
+
+#[rtic::app(device = lm3s6965, dispatchers = [SSI0])]
+mod app {
+ use cortex_m_semihosting::{debug, hprintln};
+
+ #[init]
+ fn init(_: init::Context) -> init::LateResources {
+ main::spawn().unwrap();
+
+ init::LateResources {}
+ }
+
+ #[task]
+ fn main(_: main::Context) {
+ hprintln!("This task is named main, useful for rust-analyzer").unwrap();
+ debug::exit(debug::EXIT_SUCCESS);
+ }
+}
diff --git a/macros/src/codegen.rs b/macros/src/codegen.rs
index 8309473a..acd03d77 100644
--- a/macros/src/codegen.rs
+++ b/macros/src/codegen.rs
@@ -57,19 +57,22 @@ pub fn app(app: &App, analysis: &Analysis, extra: &Extra) -> TokenStream2 {
let main = util::suffixed("main");
mains.push(quote!(
- #[no_mangle]
- unsafe extern "C" fn #main() -> ! {
- let _TODO: () = ();
+ pub mod rtic_ext {
+ use super::*;
+ #[no_mangle]
+ unsafe extern "C" fn #main() -> ! {
+ let _TODO: () = ();
- #(#assertion_stmts)*
+ #(#assertion_stmts)*
- #(#pre_init_stmts)*
+ #(#pre_init_stmts)*
- #call_init
+ #call_init
- #(#post_init_stmts)*
+ #(#post_init_stmts)*
- #call_idle
+ #call_idle
+ }
}
));