mirror of
https://github.com/rtic-rs/rtic.git
synced 2025-12-16 21:05:35 +01:00
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:
parent
6b61cd2e3f
commit
73529ea650
3 changed files with 62 additions and 0 deletions
|
|
@ -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()?;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue