aboutsummaryrefslogtreecommitdiff
path: root/macros/src/syntax.rs
diff options
context:
space:
mode:
authorGravatar bors[bot] <bors[bot]@users.noreply.github.com> 2019-02-24 16:42:33 +0000
committerGravatar bors[bot] <bors[bot]@users.noreply.github.com> 2019-02-24 16:42:33 +0000
commitbbdc3221f6a76da5784ca0017a0f5ac1ca875597 (patch)
tree078c047e4605c79da7c50aa919e5ca7f588d31b0 /macros/src/syntax.rs
parent6b61cd2e3ff26d96615a7bfc386077ccf6505c28 (diff)
parent73529ea650573196762ee4135a37682845501255 (diff)
downloadrtic-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.rs14
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()?;