Use Symbol
in LateContext::get_associated_type
.
To avoid unnecessary interning.
This commit is contained in:
parent
092a284ba0
commit
abce592029
8 changed files with 16 additions and 11 deletions
|
@ -855,11 +855,16 @@ impl<'tcx> LateContext<'tcx> {
|
|||
&self,
|
||||
self_ty: Ty<'tcx>,
|
||||
trait_id: DefId,
|
||||
name: &str,
|
||||
name: Symbol,
|
||||
) -> Option<Ty<'tcx>> {
|
||||
let tcx = self.tcx;
|
||||
tcx.associated_items(trait_id)
|
||||
.find_by_ident_and_kind(tcx, Ident::from_str(name), ty::AssocKind::Type, trait_id)
|
||||
.find_by_ident_and_kind(
|
||||
tcx,
|
||||
Ident::with_dummy_span(name),
|
||||
ty::AssocKind::Type,
|
||||
trait_id,
|
||||
)
|
||||
.and_then(|assoc| {
|
||||
let proj = Ty::new_projection(tcx, assoc.def_id, [self_ty]);
|
||||
tcx.try_normalize_erasing_regions(self.typing_env(), proj).ok()
|
||||
|
|
|
@ -69,7 +69,7 @@ impl<'tcx> LateLintPass<'tcx> for DerefIntoDynSupertrait {
|
|||
&& let ty::Dynamic(data, _, ty::Dyn) = self_ty.kind()
|
||||
&& let Some(self_principal) = data.principal()
|
||||
// `<T as Deref>::Target` is `dyn target_principal`
|
||||
&& let Some(target) = cx.get_associated_type(self_ty, did, "Target")
|
||||
&& let Some(target) = cx.get_associated_type(self_ty, did, sym::Target)
|
||||
&& let ty::Dynamic(data, _, ty::Dyn) = target.kind()
|
||||
&& let Some(target_principal) = data.principal()
|
||||
// `target_principal` is a supertrait of `t_principal`
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue