aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJorge Aparicio <jorge@japaric.io>2019-02-23 21:54:56 +0100
committerJorge Aparicio <jorge@japaric.io>2019-02-26 23:22:34 +0100
commit72f0cc505addf00d493b764418e4207f53434152 (patch)
tree026485497068c83921161752c1f9d62f2a583a8a
parentc749979c458472c8e7e719b17a6d6906c7ddf3e0 (diff)
make cfail test actually fail
-rw-r--r--macros/src/check.rs12
-rw-r--r--tests/cfail/used-free-interrupt-2.rs4
2 files changed, 11 insertions, 5 deletions
diff --git a/macros/src/check.rs b/macros/src/check.rs
index 464e280..ab86461 100644
--- a/macros/src/check.rs
+++ b/macros/src/check.rs
@@ -106,10 +106,16 @@ pub fn app(app: &App) -> parse::Result<()> {
}
// Check that free interrupts are not being used
- for int in app.interrupts.keys() {
- if app.free_interrupts.contains_key(int) {
+ for (name, interrupt) in &app.interrupts {
+ let name = if let Some(ref binds) = interrupt.args.binds {
+ binds
+ } else {
+ name
+ };
+
+ if app.free_interrupts.contains_key(name) {
return Err(parse::Error::new(
- int.span(),
+ name.span(),
"free interrupts (`extern { .. }`) can't be used as interrupt handlers",
));
}
diff --git a/tests/cfail/used-free-interrupt-2.rs b/tests/cfail/used-free-interrupt-2.rs
index f9aab78..616d308 100644
--- a/tests/cfail/used-free-interrupt-2.rs
+++ b/tests/cfail/used-free-interrupt-2.rs
@@ -12,8 +12,8 @@ const APP: () = {
#[init]
fn init() {}
- #[interrupt(binds = UART0)]
- fn foo() {} //~ ERROR free interrupts (`extern { .. }`) can't be used as interrupt handlers
+ #[interrupt(binds = UART0)] //~ ERROR free interrupts (`extern { .. }`) can't be used as interrupt handlers
+ fn foo() {}
extern "C" {
fn UART0();