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
This commit is contained in:
Jorge Aparicio 2019-02-23 22:35:29 +01:00
parent 6b61cd2e3f
commit 73529ea650
3 changed files with 62 additions and 0 deletions

View file

@ -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()?;