Fix suggestion for coercing Option<&String> to Option<&str>
This commit is contained in:
parent
5d32458343
commit
f874f6768c
5 changed files with 88 additions and 13 deletions
|
|
@ -61,3 +61,5 @@ hir_typeck_lang_start_incorrect_ret_ty = the return type of the `start` lang ite
|
|||
hir_typeck_help_set_edition_cargo = set `edition = "{$edition}"` in `Cargo.toml`
|
||||
hir_typeck_help_set_edition_standalone = pass `--edition {$edition}` to `rustc`
|
||||
hir_typeck_note_edition_guide = for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||
|
||||
hir_typeck_convert_to_str = try converting the passed type into a `&str`
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ use super::FnCtxt;
|
|||
use crate::errors::{AddReturnTypeSuggestion, ExpectedReturnTypeLabel};
|
||||
use crate::method::probe::{IsSuggestion, Mode, ProbeScope};
|
||||
use rustc_ast::util::parser::{ExprPrecedence, PREC_POSTFIX};
|
||||
use rustc_errors::{Applicability, Diagnostic, MultiSpan};
|
||||
use rustc_errors::{fluent, Applicability, Diagnostic, MultiSpan};
|
||||
use rustc_hir as hir;
|
||||
use rustc_hir::def::{CtorKind, CtorOf, DefKind};
|
||||
use rustc_hir::lang_items::LangItem;
|
||||
|
|
@ -414,11 +414,16 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
if let ty::Adt(adt, _) = peeled.kind()
|
||||
&& Some(adt.did()) == self.tcx.lang_items().string()
|
||||
{
|
||||
let sugg = if ref_cnt == 0 {
|
||||
".as_deref()"
|
||||
} else {
|
||||
".map(|x| x.as_str())"
|
||||
};
|
||||
err.span_suggestion_verbose(
|
||||
expr.span.shrink_to_hi(),
|
||||
"try converting the passed type into a `&str`",
|
||||
format!(".map(|x| &*{}x)", "*".repeat(ref_cnt)),
|
||||
Applicability::MaybeIncorrect,
|
||||
fluent::hir_typeck_convert_to_str,
|
||||
sugg,
|
||||
Applicability::MachineApplicable,
|
||||
);
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue