migrate ambiguous plus diagnostic

This commit is contained in:
Christian Poveda 2022-04-25 22:55:15 +02:00
parent eb55cdce4b
commit 519dd8e9de
No known key found for this signature in database
GPG key ID: 27525EF5E7420A50
3 changed files with 27 additions and 9 deletions

View file

@ -1,3 +1,6 @@
parser-struct-literal-body-without-path =
struct literal body without path
.suggestion = you might have forgotten to add the struct literal inside the block
parser-maybe-report-ambiguous-plus =
ambiguous `+` in a type
.suggestion = use parentheses to disambiguate

View file

@ -13,6 +13,7 @@ rustc_ast_pretty = { path = "../rustc_ast_pretty" }
rustc_data_structures = { path = "../rustc_data_structures" }
rustc_feature = { path = "../rustc_feature" }
rustc_lexer = { path = "../rustc_lexer" }
rustc_macros = { path = "../rustc_macros" }
rustc_errors = { path = "../rustc_errors" }
rustc_session = { path = "../rustc_session" }
rustc_span = { path = "../rustc_span" }

View file

@ -21,6 +21,7 @@ use rustc_errors::{pluralize, struct_span_err, Diagnostic, EmissionGuarantee, Er
use rustc_errors::{
Applicability, DiagnosticBuilder, DiagnosticMessage, Handler, MultiSpan, PResult,
};
use rustc_macros::SessionDiagnostic;
use rustc_span::source_map::Spanned;
use rustc_span::symbol::{kw, Ident};
use rustc_span::{Span, SpanSnippetError, DUMMY_SP};
@ -1170,16 +1171,29 @@ impl<'a> Parser<'a> {
impl_dyn_multi: bool,
ty: &Ty,
) {
#[derive(SessionDiagnostic)]
#[error(slug = "parser-maybe-report-ambiguous-plus")]
struct AmbiguousPlus {
pub sum_with_parens: String,
#[primary_span]
#[suggestion(code = "{sum_with_parens}")]
pub span: Span,
}
if matches!(allow_plus, AllowPlus::No) && impl_dyn_multi {
let sum_with_parens = format!("({})", pprust::ty_to_string(&ty));
self.struct_span_err(ty.span, "ambiguous `+` in a type")
.span_suggestion(
ty.span,
"use parentheses to disambiguate",
sum_with_parens,
Applicability::MachineApplicable,
)
.emit();
self.sess.emit_err(AmbiguousPlus {
sum_with_parens: format!("({})", pprust::ty_to_string(&ty)),
span: ty.span,
});
// let sum_with_parens = format!("({})", pprust::ty_to_string(&ty));
// self.struct_span_err(ty.span, "ambiguous `+` in a type")
// .span_suggestion(
// ty.span,
// "use parentheses to disambiguate",
// sum_with_parens,
// Applicability::MachineApplicable,
// )
// .emit();
}
}