diff options
author | 2020-01-16 12:58:18 +0100 | |
---|---|---|
committer | 2020-01-16 12:58:18 +0100 | |
commit | 58949206e3a752dbfd47521d2b6bfdafa9010c90 (patch) | |
tree | 1e1695d96d4c5e6434d3aecdd38bef980c2eba13 /cortex-m-rt/macros/src/lib.rs | |
parent | 3a887e98acc78473692bee070ce33451b1d3c136 (diff) | |
download | cortex-m-58949206e3a752dbfd47521d2b6bfdafa9010c90.tar.gz cortex-m-58949206e3a752dbfd47521d2b6bfdafa9010c90.tar.zst cortex-m-58949206e3a752dbfd47521d2b6bfdafa9010c90.zip |
Better error message on multiple attributes
Diffstat (limited to 'cortex-m-rt/macros/src/lib.rs')
-rw-r--r-- | cortex-m-rt/macros/src/lib.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/cortex-m-rt/macros/src/lib.rs b/cortex-m-rt/macros/src/lib.rs index eda77f2..177ed4e 100644 --- a/cortex-m-rt/macros/src/lib.rs +++ b/cortex-m-rt/macros/src/lib.rs @@ -825,6 +825,7 @@ fn extract_cfgs(attrs: Vec<Attribute>) -> (Vec<Attribute>, Vec<Attribute>) { fn check_attr_whitelist(attrs: &[Attribute]) -> Result<(), TokenStream> { let whitelist = &["doc", "link_section", "cfg", "allow", "warn", "deny", "forbid", "cold"]; + let cortex_m_rt_blacklist = &["entry", "exception", "interrupt", "pre_init"]; 'o: for attr in attrs { for val in whitelist { @@ -833,6 +834,19 @@ fn check_attr_whitelist(attrs: &[Attribute]) -> Result<(), TokenStream> { } } + for val in cortex_m_rt_blacklist { + if eq(&attr, &val) { + return Err( + parse::Error::new( + attr.span(), + "cortex-m-rt does not support multiple attributes on the same function", + ) + .to_compile_error() + .into(), + ); + } + } + return Err( parse::Error::new( attr.span(), |