aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar bors[bot] <26634292+bors[bot]@users.noreply.github.com> 2020-01-26 19:13:01 +0000
committerGravatar GitHub <noreply@github.com> 2020-01-26 19:13:01 +0000
commite1994fba68774c85ff0ebeb983f4711bb61e4b97 (patch)
tree759535f8c88c13a5c4356550836a1dd700b98422
parent22145aeb5dd1c25e4df2f3320e7ae7e47a9a0c6c (diff)
parenta0a17868686028a38ff9d3569b38993c315b8c95 (diff)
downloadcortex-m-e1994fba68774c85ff0ebeb983f4711bb61e4b97.tar.gz
cortex-m-e1994fba68774c85ff0ebeb983f4711bb61e4b97.tar.zst
cortex-m-e1994fba68774c85ff0ebeb983f4711bb61e4b97.zip
Merge #241
241: Fix unused doc lint firing on `#[pre_init]` and add a test r=adamgreig a=jonas-schievink Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
-rw-r--r--cortex-m-rt/Cargo.toml4
-rw-r--r--cortex-m-rt/examples/warnings.rs50
-rw-r--r--cortex-m-rt/macros/src/lib.rs1
3 files changed, 55 insertions, 0 deletions
diff --git a/cortex-m-rt/Cargo.toml b/cortex-m-rt/Cargo.toml
index e4c3b6a..bcbd600 100644
--- a/cortex-m-rt/Cargo.toml
+++ b/cortex-m-rt/Cargo.toml
@@ -31,6 +31,10 @@ compiletest_rs = "0.4.0"
name = "device"
required-features = ["device"]
+[[example]]
+name = "warnings"
+required-features = ["device"]
+
[[test]]
name = "compiletest"
required-features = ["device"]
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() {}
diff --git a/cortex-m-rt/macros/src/lib.rs b/cortex-m-rt/macros/src/lib.rs
index d919faa..8c1d182 100644
--- a/cortex-m-rt/macros/src/lib.rs
+++ b/cortex-m-rt/macros/src/lib.rs
@@ -767,6 +767,7 @@ pub fn pre_init(args: TokenStream, input: TokenStream) -> TokenStream {
quote!(
#[export_name = "__pre_init"]
+ #[allow(missing_docs)] // we make a private fn public, which can trigger this lint
#(#attrs)*
pub unsafe fn #ident() #block
)