diff options
author | 2019-02-24 16:42:33 +0000 | |
---|---|---|
committer | 2019-02-24 16:42:33 +0000 | |
commit | bbdc3221f6a76da5784ca0017a0f5ac1ca875597 (patch) | |
tree | 078c047e4605c79da7c50aa919e5ca7f588d31b0 /macros/src/syntax.rs | |
parent | 6b61cd2e3ff26d96615a7bfc386077ccf6505c28 (diff) | |
parent | 73529ea650573196762ee4135a37682845501255 (diff) | |
download | rtic-bbdc3221f6a76da5784ca0017a0f5ac1ca875597.tar.gz rtic-bbdc3221f6a76da5784ca0017a0f5ac1ca875597.tar.zst rtic-bbdc3221f6a76da5784ca0017a0f5ac1ca875597.zip |
Merge #159
159: reject duplicate arguments in #[interrupt] and #[exception] r=TeXitoi a=japaric
This program was being accepted:
``` rust
#[task(
capacity = 1,
capacity = 2,
priority = 1,
priority = 2,
)]
fn foo() {}
```
now it will trigger a compiler error
r? @korken89 || @TeXitoi
Co-authored-by: Jorge Aparicio <jorge@japaric.io>
Diffstat (limited to 'macros/src/syntax.rs')
-rw-r--r-- | macros/src/syntax.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/macros/src/syntax.rs b/macros/src/syntax.rs index 581eb831..9771ea92 100644 --- a/macros/src/syntax.rs +++ b/macros/src/syntax.rs @@ -937,6 +937,13 @@ fn parse_args(input: ParseStream<'_>, accept_capacity: bool) -> parse::Result<Ta let ident_s = ident.to_string(); match &*ident_s { "capacity" if accept_capacity => { + if capacity.is_some() { + return Err(parse::Error::new( + ident.span(), + "argument appears more than once", + )); + } + // #lit let lit: LitInt = content.parse()?; @@ -958,6 +965,13 @@ fn parse_args(input: ParseStream<'_>, accept_capacity: bool) -> parse::Result<Ta capacity = Some(value as u8); } "priority" => { + if priority.is_some() { + return Err(parse::Error::new( + ident.span(), + "argument appears more than once", + )); + } + // #lit let lit: LitInt = content.parse()?; |