Add a convenience function
This commit is contained in:
parent
84a43f0e3a
commit
e2daccc4ac
2 changed files with 13 additions and 8 deletions
|
@ -397,14 +397,7 @@ fn check_opaque_meets_bounds<'tcx>(
|
||||||
) {
|
) {
|
||||||
let defining_use_anchor = match *origin {
|
let defining_use_anchor = match *origin {
|
||||||
hir::OpaqueTyOrigin::FnReturn(did) | hir::OpaqueTyOrigin::AsyncFn(did) => did,
|
hir::OpaqueTyOrigin::FnReturn(did) | hir::OpaqueTyOrigin::AsyncFn(did) => did,
|
||||||
hir::OpaqueTyOrigin::TyAlias { .. } => {
|
hir::OpaqueTyOrigin::TyAlias { .. } => tcx.impl_trait_parent(def_id),
|
||||||
let mut def_id = def_id;
|
|
||||||
// Find the surrounding item (type alias or assoc type)
|
|
||||||
while let DefKind::OpaqueTy = tcx.def_kind(def_id) {
|
|
||||||
def_id = tcx.local_parent(def_id);
|
|
||||||
}
|
|
||||||
def_id
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
let param_env = tcx.param_env(defining_use_anchor);
|
let param_env = tcx.param_env(defining_use_anchor);
|
||||||
|
|
||||||
|
|
|
@ -2476,6 +2476,18 @@ impl<'tcx> TyCtxt<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the `DefId` of the item within which the `impl Trait` is declared.
|
||||||
|
/// For type-alias-impl-trait this is the `type` alias.
|
||||||
|
/// For impl-trait-in-assoc-type this is the assoc type.
|
||||||
|
/// For return-position-impl-trait this is the function.
|
||||||
|
pub fn impl_trait_parent(self, mut def_id: LocalDefId) -> LocalDefId {
|
||||||
|
// Find the surrounding item (type alias or assoc type)
|
||||||
|
while let DefKind::OpaqueTy = self.def_kind(def_id) {
|
||||||
|
def_id = self.local_parent(def_id);
|
||||||
|
}
|
||||||
|
def_id
|
||||||
|
}
|
||||||
|
|
||||||
pub fn impl_method_has_trait_impl_trait_tys(self, def_id: DefId) -> bool {
|
pub fn impl_method_has_trait_impl_trait_tys(self, def_id: DefId) -> bool {
|
||||||
if self.def_kind(def_id) != DefKind::AssocFn {
|
if self.def_kind(def_id) != DefKind::AssocFn {
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue