let store = self.sess.lint_store.borrow();
let sess = self.sess;
let bad_attr = |span| {
- struct_span_err!(sess, span, E0452, "malformed lint attribute")
+ struct_span_err!(sess, span, E0452, "malformed lint attribute input")
};
for attr in attrs {
- let level = match Level::from_str(&attr.name_or_empty()) {
+ let level = match Level::from_symbol(attr.name_or_empty()) {
None => continue,
Some(lvl) => lvl,
};
match item.node {
ast::MetaItemKind::Word => {} // actual lint names handled later
ast::MetaItemKind::NameValue(ref name_value) => {
- if item.path == "reason" {
+ if item.path == sym::reason {
// found reason, reslice meta list to exclude it
metas = &metas[0..metas.len()-1];
// FIXME (#55112): issue unused-attributes lint if we thereby
}
reason = Some(rationale);
} else {
- let mut err = bad_attr(name_value.span);
- err.help("reason must be a string literal");
- err.emit();
+ bad_attr(name_value.span)
+ .span_label(name_value.span, "reason must be a string literal")
+ .emit();
}
} else {
- let mut err = bad_attr(item.span);
- err.emit();
+ bad_attr(item.span)
+ .span_label(item.span, "bad attribute argument")
+ .emit();
}
},
ast::MetaItemKind::List(_) => {
- let mut err = bad_attr(item.span);
- err.emit();
+ bad_attr(item.span)
+ .span_label(item.span, "bad attribute argument")
+ .emit();
}
}
}
let meta_item = match li.meta_item() {
Some(meta_item) if meta_item.is_word() => meta_item,
_ => {
- let mut err = bad_attr(li.span());
+ let sp = li.span();
+ let mut err = bad_attr(sp);
+ let mut add_label = true;
if let Some(item) = li.meta_item() {
if let ast::MetaItemKind::NameValue(_) = item.node {
- if item.path == "reason" {
- err.help("reason in lint attribute must come last");
+ if item.path == sym::reason {
+ err.span_label(sp, "reason in lint attribute must come last");
+ add_label = false;
}
}
}
+ if add_label {
+ err.span_label(sp, "bad attribute argument");
+ }
err.emit();
continue;
}
Also `cfg_attr(cargo-clippy)` won't be necessary anymore",
name
);
- let mut err = lint::struct_lint_level(
+ lint::struct_lint_level(
self.sess,
lint,
lvl,
src,
Some(li.span().into()),
&msg,
- );
- err.span_suggestion(
+ ).span_suggestion(
li.span(),
"change it to",
new_lint_name.to_string(),