aboutsummaryrefslogtreecommitdiff
path: root/cortex-m-rt/examples
diff options
context:
space:
mode:
authorGravatar Jonas Schievink <jonasschievink@gmail.com> 2020-01-26 18:26:28 +0100
committerGravatar Jonas Schievink <jonasschievink@gmail.com> 2020-01-26 18:31:59 +0100
commita0a17868686028a38ff9d3569b38993c315b8c95 (patch)
tree759535f8c88c13a5c4356550836a1dd700b98422 /cortex-m-rt/examples
parent36b33b21af1bed29a9e37e07d96ab779f3c2314e (diff)
downloadcortex-m-a0a17868686028a38ff9d3569b38993c315b8c95.tar.gz
cortex-m-a0a17868686028a38ff9d3569b38993c315b8c95.tar.zst
cortex-m-a0a17868686028a38ff9d3569b38993c315b8c95.zip
Add a test that enables ALL the warnings
Diffstat (limited to 'cortex-m-rt/examples')
-rw-r--r--cortex-m-rt/examples/warnings.rs50
1 files changed, 50 insertions, 0 deletions
diff --git a/cortex-m-rt/examples/warnings.rs b/cortex-m-rt/examples/warnings.rs
new file mode 100644
index 0000000..3372003
--- /dev/null
+++ b/cortex-m-rt/examples/warnings.rs
@@ -0,0 +1,50 @@
+//! Tests that a crate can still build with all warnings enabled.
+//!
+//! The code generated by the `cortex-m-rt` macros might need to manually
+//! `#[allow]` some of them (even though Rust does that by default for a few
+//! warnings too).
+
+#![no_std]
+#![no_main]
+#![deny(warnings, missing_docs, rust_2018_idioms)]
+
+extern crate cortex_m_rt;
+extern crate panic_halt;
+
+use cortex_m_rt::{entry, exception, interrupt, pre_init, ExceptionFrame};
+
+#[allow(non_camel_case_types)]
+enum interrupt {
+ INT,
+}
+
+extern "C" {
+ fn INT();
+}
+
+union Vector {
+ #[allow(dead_code)]
+ handler: unsafe extern "C" fn(),
+}
+
+#[link_section = ".vector_table.interrupts"]
+#[no_mangle]
+#[used]
+static __INTERRUPTS: [Vector; 1] = [Vector { handler: INT }];
+
+/// Dummy interrupt.
+#[interrupt]
+fn INT() {}
+
+#[exception]
+fn HardFault(_eh: &ExceptionFrame) -> ! {
+ loop {}
+}
+
+#[entry]
+fn main() -> ! {
+ loop {}
+}
+
+#[pre_init]
+unsafe fn pre_init() {}