diff options
| author | Jorge Aparicio <jorge@japaric.io> | 2019-02-23 21:54:56 +0100 |
|---|---|---|
| committer | Jorge Aparicio <jorge@japaric.io> | 2019-02-26 23:22:34 +0100 |
| commit | 72f0cc505addf00d493b764418e4207f53434152 (patch) | |
| tree | 026485497068c83921161752c1f9d62f2a583a8a | |
| parent | c749979c458472c8e7e719b17a6d6906c7ddf3e0 (diff) | |
make cfail test actually fail
| -rw-r--r-- | macros/src/check.rs | 12 | ||||
| -rw-r--r-- | tests/cfail/used-free-interrupt-2.rs | 4 |
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(); |
