lint: port clashing extern diagnostics
Signed-off-by: David Wood <david.wood@huawei.com>
This commit is contained in:
parent
157cbbca04
commit
2e563a4a3e
@ -386,3 +386,10 @@ lint-builtin-explicit-outlives = outlives requirements can be inferred
|
|||||||
lint-builtin-incomplete-features = the feature `{$name}` is incomplete and may not be safe to use and/or cause compiler crashes
|
lint-builtin-incomplete-features = the feature `{$name}` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
.note = see issue #{$n} <https://github.com/rust-lang/rust/issues/{$n}> for more information
|
.note = see issue #{$n} <https://github.com/rust-lang/rust/issues/{$n}> for more information
|
||||||
.help = consider using `min_{$name}` instead, which is more stable and complete
|
.help = consider using `min_{$name}` instead, which is more stable and complete
|
||||||
|
|
||||||
|
lint-builtin-clashing-extern-same-name = `{$this_fi}` redeclared with a different signature
|
||||||
|
.previous-decl-label = `{$orig}` previously declared here
|
||||||
|
.mismatch-label = this signature doesn't match the previous declaration
|
||||||
|
lint-builtin-clashing-extern-diff-name = `{$this_fi}` redeclares `{$orig}` with a different signature
|
||||||
|
.previous-decl-label = `{$orig}` previously declared here
|
||||||
|
.mismatch-label = this signature doesn't match the previous declaration
|
||||||
|
@ -2972,23 +2972,19 @@ impl<'tcx> LateLintPass<'tcx> for ClashingExternDeclarations {
|
|||||||
let mut found_str = DiagnosticStyledString::new();
|
let mut found_str = DiagnosticStyledString::new();
|
||||||
found_str.push(this_decl_ty.fn_sig(tcx).to_string(), true);
|
found_str.push(this_decl_ty.fn_sig(tcx).to_string(), true);
|
||||||
|
|
||||||
lint.build(&format!(
|
lint.build(if orig.get_name() == this_fi.ident.name {
|
||||||
"`{}` redeclare{} with a different signature",
|
fluent::lint::builtin_clashing_extern_same_name
|
||||||
this_fi.ident.name,
|
|
||||||
if orig.get_name() == this_fi.ident.name {
|
|
||||||
"d".to_string()
|
|
||||||
} else {
|
} else {
|
||||||
format!("s `{}`", orig.get_name())
|
fluent::lint::builtin_clashing_extern_diff_name
|
||||||
}
|
})
|
||||||
))
|
.set_arg("this_fi", this_fi.ident.name)
|
||||||
|
.set_arg("orig", orig.get_name())
|
||||||
.span_label(
|
.span_label(
|
||||||
get_relevant_span(orig_fi),
|
get_relevant_span(orig_fi),
|
||||||
&format!("`{}` previously declared here", orig.get_name()),
|
fluent::lint::previous_decl_label,
|
||||||
)
|
|
||||||
.span_label(
|
|
||||||
get_relevant_span(this_fi),
|
|
||||||
"this signature doesn't match the previous declaration",
|
|
||||||
)
|
)
|
||||||
|
.span_label(get_relevant_span(this_fi), fluent::lint::mismatch_label)
|
||||||
|
// FIXME(davidtwco): translatable expected/found
|
||||||
.note_expected_found(&"", expected_str, &"", found_str)
|
.note_expected_found(&"", expected_str, &"", found_str)
|
||||||
.emit();
|
.emit();
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user