From 73529ea650573196762ee4135a37682845501255 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sat, 23 Feb 2019 22:35:29 +0100 Subject: reject duplicate arguments in #[interrupt] and #[exception] This program was being accepted: ``` rust #[task( capacity = 1, capacity = 2, priority = 1, priority = 2, )] fn foo() {} ``` now it will trigger a compiler error --- macros/src/syntax.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'macros/src/syntax.rs') diff --git a/macros/src/syntax.rs b/macros/src/syntax.rs index 581eb83..9771ea9 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 { + 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 { + if priority.is_some() { + return Err(parse::Error::new( + ident.span(), + "argument appears more than once", + )); + } + // #lit let lit: LitInt = content.parse()?; -- cgit v1.2.3