aboutsummaryrefslogtreecommitdiff
path: root/cortex-m-rt/macros/src/lib.rs
diff options
context:
space:
mode:
authorGravatar Emil Fresk <emil.fresk@gmail.com> 2020-01-16 12:58:18 +0100
committerGravatar Emil Fresk <emil.fresk@gmail.com> 2020-01-16 12:58:18 +0100
commit58949206e3a752dbfd47521d2b6bfdafa9010c90 (patch)
tree1e1695d96d4c5e6434d3aecdd38bef980c2eba13 /cortex-m-rt/macros/src/lib.rs
parent3a887e98acc78473692bee070ce33451b1d3c136 (diff)
downloadcortex-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.rs14
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(),