Auto merge of #74471 - da-x:string-type-diagnostic-item, r=petrochenkov

librustc_typeck: use diag item instead of string compare
This commit is contained in:
bors 2020-07-28 20:00:37 +00:00
commit 2caf854f7a
2 changed files with 6 additions and 1 deletions

View File

@ -1043,6 +1043,7 @@ symbols! {
stop_after_dataflow,
str,
str_alloc,
string_type,
stringify,
struct_field_attributes,
struct_inherit,

View File

@ -562,7 +562,11 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
on the left and may require reallocation. This \
requires ownership of the string on the left";
let is_std_string = |ty| &format!("{:?}", ty) == "std::string::String";
let string_type = self.tcx.get_diagnostic_item(sym::string_type);
let is_std_string = |ty: Ty<'tcx>| match ty.ty_adt_def() {
Some(ty_def) => Some(ty_def.did) == string_type,
None => false,
};
match (&lhs_ty.kind, &rhs_ty.kind) {
(&Ref(_, l_ty, _), &Ref(_, r_ty, _)) // &str or &String + &str, &String or &&str