Move methods from Map
to TyCtxt
, part 4.
Continuing the work from #137350. Removes the unused methods: `expect_variant`, `expect_field`, `expect_foreign_item`. Every method gains a `hir_` prefix.
This commit is contained in:
parent
281af35cc3
commit
256c27e748
115 changed files with 269 additions and 321 deletions
|
@ -185,7 +185,7 @@ fn check_static_inhabited(tcx: TyCtxt<'_>, def_id: LocalDefId) {
|
|||
/// Checks that an opaque type does not contain cycles and does not use `Self` or `T::Foo`
|
||||
/// projections that would result in "inheriting lifetimes".
|
||||
fn check_opaque(tcx: TyCtxt<'_>, def_id: LocalDefId) {
|
||||
let hir::OpaqueTy { origin, .. } = *tcx.hir().expect_opaque_ty(def_id);
|
||||
let hir::OpaqueTy { origin, .. } = *tcx.hir_expect_opaque_ty(def_id);
|
||||
|
||||
// HACK(jynelson): trying to infer the type of `impl trait` breaks documenting
|
||||
// `async-std` (and `pub async fn` in general).
|
||||
|
@ -785,7 +785,7 @@ pub(crate) fn check_item_type(tcx: TyCtxt<'_>, def_id: LocalDefId) {
|
|||
check_type_alias_type_params_are_used(tcx, def_id);
|
||||
}
|
||||
DefKind::ForeignMod => {
|
||||
let it = tcx.hir().expect_item(def_id);
|
||||
let it = tcx.hir_expect_item(def_id);
|
||||
let hir::ItemKind::ForeignMod { abi, items } = it.kind else {
|
||||
return;
|
||||
};
|
||||
|
|
|
@ -1031,7 +1031,7 @@ fn report_trait_method_mismatch<'tcx>(
|
|||
// When the `impl` receiver is an arbitrary self type, like `self: Box<Self>`, the
|
||||
// span points only at the type `Box<Self`>, but we want to cover the whole
|
||||
// argument pattern and type.
|
||||
let (sig, body) = tcx.hir().expect_impl_item(impl_m.def_id.expect_local()).expect_fn();
|
||||
let (sig, body) = tcx.hir_expect_impl_item(impl_m.def_id.expect_local()).expect_fn();
|
||||
let span = tcx
|
||||
.hir_body_param_names(body)
|
||||
.zip(sig.decl.inputs.iter())
|
||||
|
@ -1051,7 +1051,7 @@ fn report_trait_method_mismatch<'tcx>(
|
|||
// Suggestion to change output type. We do not suggest in `async` functions
|
||||
// to avoid complex logic or incorrect output.
|
||||
if let ImplItemKind::Fn(sig, _) =
|
||||
&tcx.hir().expect_impl_item(impl_m.def_id.expect_local()).kind
|
||||
&tcx.hir_expect_impl_item(impl_m.def_id.expect_local()).kind
|
||||
&& !sig.header.asyncness.is_async()
|
||||
{
|
||||
let msg = "change the output type to match the trait";
|
||||
|
@ -1190,12 +1190,12 @@ fn extract_spans_for_error_reporting<'tcx>(
|
|||
) -> (Span, Option<Span>) {
|
||||
let tcx = infcx.tcx;
|
||||
let mut impl_args = {
|
||||
let (sig, _) = tcx.hir().expect_impl_item(impl_m.def_id.expect_local()).expect_fn();
|
||||
let (sig, _) = tcx.hir_expect_impl_item(impl_m.def_id.expect_local()).expect_fn();
|
||||
sig.decl.inputs.iter().map(|t| t.span).chain(iter::once(sig.decl.output.span()))
|
||||
};
|
||||
|
||||
let trait_args = trait_m.def_id.as_local().map(|def_id| {
|
||||
let (sig, _) = tcx.hir().expect_trait_item(def_id).expect_fn();
|
||||
let (sig, _) = tcx.hir_expect_trait_item(def_id).expect_fn();
|
||||
sig.decl.inputs.iter().map(|t| t.span).chain(iter::once(sig.decl.output.span()))
|
||||
});
|
||||
|
||||
|
@ -1371,7 +1371,7 @@ fn compare_number_of_generics<'tcx>(
|
|||
spans
|
||||
};
|
||||
let (trait_spans, impl_trait_spans) = if let Some(def_id) = trait_.def_id.as_local() {
|
||||
let trait_item = tcx.hir().expect_trait_item(def_id);
|
||||
let trait_item = tcx.hir_expect_trait_item(def_id);
|
||||
let arg_spans: Vec<Span> = arg_spans(trait_.kind, trait_item.generics);
|
||||
let impl_trait_spans: Vec<Span> = trait_item
|
||||
.generics
|
||||
|
@ -1388,7 +1388,7 @@ fn compare_number_of_generics<'tcx>(
|
|||
(trait_span.map(|s| vec![s]), vec![])
|
||||
};
|
||||
|
||||
let impl_item = tcx.hir().expect_impl_item(impl_.def_id.expect_local());
|
||||
let impl_item = tcx.hir_expect_impl_item(impl_.def_id.expect_local());
|
||||
let impl_item_impl_trait_spans: Vec<Span> = impl_item
|
||||
.generics
|
||||
.params
|
||||
|
@ -1466,7 +1466,7 @@ fn compare_number_of_method_arguments<'tcx>(
|
|||
.def_id
|
||||
.as_local()
|
||||
.and_then(|def_id| {
|
||||
let (trait_m_sig, _) = &tcx.hir().expect_trait_item(def_id).expect_fn();
|
||||
let (trait_m_sig, _) = &tcx.hir_expect_trait_item(def_id).expect_fn();
|
||||
let pos = trait_number_args.saturating_sub(1);
|
||||
trait_m_sig.decl.inputs.get(pos).map(|arg| {
|
||||
if pos == 0 {
|
||||
|
@ -1478,7 +1478,7 @@ fn compare_number_of_method_arguments<'tcx>(
|
|||
})
|
||||
.or_else(|| tcx.hir().span_if_local(trait_m.def_id));
|
||||
|
||||
let (impl_m_sig, _) = &tcx.hir().expect_impl_item(impl_m.def_id.expect_local()).expect_fn();
|
||||
let (impl_m_sig, _) = &tcx.hir_expect_impl_item(impl_m.def_id.expect_local()).expect_fn();
|
||||
let pos = impl_number_args.saturating_sub(1);
|
||||
let impl_span = impl_m_sig
|
||||
.decl
|
||||
|
@ -1580,10 +1580,10 @@ fn compare_synthetic_generics<'tcx>(
|
|||
// as another generic argument
|
||||
let new_name = tcx.opt_item_name(trait_def_id)?;
|
||||
let trait_m = trait_m.def_id.as_local()?;
|
||||
let trait_m = tcx.hir().expect_trait_item(trait_m);
|
||||
let trait_m = tcx.hir_expect_trait_item(trait_m);
|
||||
|
||||
let impl_m = impl_m.def_id.as_local()?;
|
||||
let impl_m = tcx.hir().expect_impl_item(impl_m);
|
||||
let impl_m = tcx.hir_expect_impl_item(impl_m);
|
||||
|
||||
// in case there are no generics, take the spot between the function name
|
||||
// and the opening paren of the argument list
|
||||
|
@ -1613,7 +1613,7 @@ fn compare_synthetic_generics<'tcx>(
|
|||
err.span_label(impl_span, "expected `impl Trait`, found generic parameter");
|
||||
let _: Option<_> = try {
|
||||
let impl_m = impl_m.def_id.as_local()?;
|
||||
let impl_m = tcx.hir().expect_impl_item(impl_m);
|
||||
let impl_m = tcx.hir_expect_impl_item(impl_m);
|
||||
let (sig, _) = impl_m.expect_fn();
|
||||
let input_tys = sig.decl.inputs;
|
||||
|
||||
|
@ -1855,7 +1855,7 @@ fn compare_const_predicate_entailment<'tcx>(
|
|||
debug!(?impl_ty, ?trait_ty);
|
||||
|
||||
// Locate the Span containing just the type of the offending impl
|
||||
let (ty, _) = tcx.hir().expect_impl_item(impl_ct_def_id).expect_const();
|
||||
let (ty, _) = tcx.hir_expect_impl_item(impl_ct_def_id).expect_const();
|
||||
cause.span = ty.span;
|
||||
|
||||
let mut diag = struct_span_code_err!(
|
||||
|
@ -1868,7 +1868,7 @@ fn compare_const_predicate_entailment<'tcx>(
|
|||
|
||||
let trait_c_span = trait_ct.def_id.as_local().map(|trait_ct_def_id| {
|
||||
// Add a label to the Span containing just the type of the const
|
||||
let (ty, _) = tcx.hir().expect_trait_item(trait_ct_def_id).expect_const();
|
||||
let (ty, _) = tcx.hir_expect_trait_item(trait_ct_def_id).expect_const();
|
||||
ty.span
|
||||
});
|
||||
|
||||
|
|
|
@ -513,7 +513,7 @@ fn check_gat_where_clauses(tcx: TyCtxt<'_>, trait_def_id: LocalDefId) {
|
|||
continue;
|
||||
}
|
||||
|
||||
let gat_item_hir = tcx.hir().expect_trait_item(gat_def_id);
|
||||
let gat_item_hir = tcx.hir_expect_trait_item(gat_def_id);
|
||||
debug!(?required_bounds);
|
||||
let param_env = tcx.param_env(gat_def_id);
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ fn check_unused_traits(tcx: TyCtxt<'_>, (): ()) {
|
|||
if used_trait_imports.contains(&id) {
|
||||
continue;
|
||||
}
|
||||
let item = tcx.hir().expect_item(id);
|
||||
let item = tcx.hir_expect_item(id);
|
||||
if item.span.is_dummy() {
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -82,7 +82,7 @@ fn visit_implementation_of_drop(checker: &Checker<'_>) -> Result<(), ErrorGuaran
|
|||
_ => {}
|
||||
}
|
||||
|
||||
let impl_ = tcx.hir().expect_item(impl_did).expect_impl();
|
||||
let impl_ = tcx.hir_expect_item(impl_did).expect_impl();
|
||||
|
||||
Err(tcx.dcx().emit_err(errors::DropImplOnWrongItem { span: impl_.self_ty.span }))
|
||||
}
|
||||
|
@ -109,7 +109,7 @@ fn visit_implementation_of_copy(checker: &Checker<'_>) -> Result<(), ErrorGuaran
|
|||
match type_allowed_to_implement_copy(tcx, param_env, self_type, cause, impl_header.safety) {
|
||||
Ok(()) => Ok(()),
|
||||
Err(CopyImplementationError::InfringingFields(fields)) => {
|
||||
let span = tcx.hir().expect_item(impl_did).expect_impl().self_ty.span;
|
||||
let span = tcx.hir_expect_item(impl_did).expect_impl().self_ty.span;
|
||||
Err(infringing_fields_error(
|
||||
tcx,
|
||||
fields.into_iter().map(|(field, ty, reason)| (tcx.def_span(field.did), ty, reason)),
|
||||
|
@ -119,15 +119,15 @@ fn visit_implementation_of_copy(checker: &Checker<'_>) -> Result<(), ErrorGuaran
|
|||
))
|
||||
}
|
||||
Err(CopyImplementationError::NotAnAdt) => {
|
||||
let span = tcx.hir().expect_item(impl_did).expect_impl().self_ty.span;
|
||||
let span = tcx.hir_expect_item(impl_did).expect_impl().self_ty.span;
|
||||
Err(tcx.dcx().emit_err(errors::CopyImplOnNonAdt { span }))
|
||||
}
|
||||
Err(CopyImplementationError::HasDestructor) => {
|
||||
let span = tcx.hir().expect_item(impl_did).expect_impl().self_ty.span;
|
||||
let span = tcx.hir_expect_item(impl_did).expect_impl().self_ty.span;
|
||||
Err(tcx.dcx().emit_err(errors::CopyImplOnTypeWithDtor { span }))
|
||||
}
|
||||
Err(CopyImplementationError::HasUnsafeFields) => {
|
||||
let span = tcx.hir().expect_item(impl_did).expect_impl().self_ty.span;
|
||||
let span = tcx.hir_expect_item(impl_did).expect_impl().self_ty.span;
|
||||
Err(tcx
|
||||
.dcx()
|
||||
.span_delayed_bug(span, format!("cannot implement `Copy` for `{}`", self_type)))
|
||||
|
@ -157,7 +157,7 @@ fn visit_implementation_of_const_param_ty(
|
|||
match type_allowed_to_implement_const_param_ty(tcx, param_env, self_type, kind, cause) {
|
||||
Ok(()) => Ok(()),
|
||||
Err(ConstParamTyImplementationError::InfrigingFields(fields)) => {
|
||||
let span = tcx.hir().expect_item(impl_did).expect_impl().self_ty.span;
|
||||
let span = tcx.hir_expect_item(impl_did).expect_impl().self_ty.span;
|
||||
Err(infringing_fields_error(
|
||||
tcx,
|
||||
fields.into_iter().map(|(field, ty, reason)| (tcx.def_span(field.did), ty, reason)),
|
||||
|
@ -167,11 +167,11 @@ fn visit_implementation_of_const_param_ty(
|
|||
))
|
||||
}
|
||||
Err(ConstParamTyImplementationError::NotAnAdtOrBuiltinAllowed) => {
|
||||
let span = tcx.hir().expect_item(impl_did).expect_impl().self_ty.span;
|
||||
let span = tcx.hir_expect_item(impl_did).expect_impl().self_ty.span;
|
||||
Err(tcx.dcx().emit_err(errors::ConstParamTyImplOnNonAdt { span }))
|
||||
}
|
||||
Err(ConstParamTyImplementationError::InvalidInnerTyOfBuiltinTy(infringing_tys)) => {
|
||||
let span = tcx.hir().expect_item(impl_did).expect_impl().self_ty.span;
|
||||
let span = tcx.hir_expect_item(impl_did).expect_impl().self_ty.span;
|
||||
Err(infringing_fields_error(
|
||||
tcx,
|
||||
infringing_tys.into_iter().map(|(ty, reason)| (span, ty, reason)),
|
||||
|
@ -181,7 +181,7 @@ fn visit_implementation_of_const_param_ty(
|
|||
))
|
||||
}
|
||||
Err(ConstParamTyImplementationError::UnsizedConstParamsFeatureRequired) => {
|
||||
let span = tcx.hir().expect_item(impl_did).expect_impl().self_ty.span;
|
||||
let span = tcx.hir_expect_item(impl_did).expect_impl().self_ty.span;
|
||||
Err(tcx.dcx().emit_err(errors::ConstParamTyImplOnUnsized { span }))
|
||||
}
|
||||
}
|
||||
|
@ -526,7 +526,7 @@ pub(crate) fn coerce_unsized_info<'tcx>(
|
|||
note: true,
|
||||
}));
|
||||
} else if diff_fields.len() > 1 {
|
||||
let item = tcx.hir().expect_item(impl_did);
|
||||
let item = tcx.hir_expect_item(impl_did);
|
||||
let span = if let ItemKind::Impl(hir::Impl { of_trait: Some(t), .. }) = &item.kind {
|
||||
t.path.span
|
||||
} else {
|
||||
|
|
|
@ -376,7 +376,7 @@ fn emit_orphan_check_error<'tcx>(
|
|||
) -> ErrorGuaranteed {
|
||||
match err {
|
||||
traits::OrphanCheckErr::NonLocalInputType(tys) => {
|
||||
let item = tcx.hir().expect_item(impl_def_id);
|
||||
let item = tcx.hir_expect_item(impl_def_id);
|
||||
let impl_ = item.expect_impl();
|
||||
let hir_trait_ref = impl_.of_trait.as_ref().unwrap();
|
||||
|
||||
|
|
|
@ -469,8 +469,7 @@ impl<'tcx> HirTyLowerer<'tcx> for ItemCtxt<'tcx> {
|
|||
hir::Node::Field(_) | hir::Node::Ctor(_) | hir::Node::Variant(_) => {
|
||||
let item = self
|
||||
.tcx
|
||||
.hir()
|
||||
.expect_item(self.tcx.hir_get_parent_item(self.hir_id()).def_id);
|
||||
.hir_expect_item(self.tcx.hir_get_parent_item(self.hir_id()).def_id);
|
||||
match &item.kind {
|
||||
hir::ItemKind::Enum(_, generics)
|
||||
| hir::ItemKind::Struct(_, generics)
|
||||
|
@ -1143,7 +1142,7 @@ fn adt_def(tcx: TyCtxt<'_>, def_id: LocalDefId) -> ty::AdtDef<'_> {
|
|||
}
|
||||
|
||||
fn trait_def(tcx: TyCtxt<'_>, def_id: LocalDefId) -> ty::TraitDef {
|
||||
let item = tcx.hir().expect_item(def_id);
|
||||
let item = tcx.hir_expect_item(def_id);
|
||||
|
||||
let (is_alias, is_auto, safety, items) = match item.kind {
|
||||
hir::ItemKind::Trait(is_auto, safety, .., items) => {
|
||||
|
@ -1342,7 +1341,7 @@ fn fn_sig(tcx: TyCtxt<'_>, def_id: LocalDefId) -> ty::EarlyBinder<'_, ty::PolyFn
|
|||
),
|
||||
|
||||
ForeignItem(&hir::ForeignItem { kind: ForeignItemKind::Fn(sig, _, _), .. }) => {
|
||||
let abi = tcx.hir().get_foreign_abi(hir_id);
|
||||
let abi = tcx.hir_get_foreign_abi(hir_id);
|
||||
compute_sig_of_foreign_fn_decl(tcx, def_id, sig.decl, abi, sig.header.safety())
|
||||
}
|
||||
|
||||
|
@ -1597,7 +1596,7 @@ pub fn suggest_impl_trait<'tcx>(
|
|||
|
||||
fn impl_trait_header(tcx: TyCtxt<'_>, def_id: LocalDefId) -> Option<ty::ImplTraitHeader<'_>> {
|
||||
let icx = ItemCtxt::new(tcx, def_id);
|
||||
let item = tcx.hir().expect_item(def_id);
|
||||
let item = tcx.hir_expect_item(def_id);
|
||||
let impl_ = item.expect_impl();
|
||||
impl_.of_trait.as_ref().map(|ast_trait_ref| {
|
||||
let selfty = tcx.type_of(def_id).instantiate_identity();
|
||||
|
|
|
@ -13,7 +13,7 @@ pub(crate) fn opaque_hidden_types(tcx: TyCtxt<'_>) {
|
|||
for id in tcx.hir_crate_items(()).opaques() {
|
||||
if let hir::OpaqueTyOrigin::FnReturn { parent: fn_def_id, .. }
|
||||
| hir::OpaqueTyOrigin::AsyncFn { parent: fn_def_id, .. } =
|
||||
tcx.hir().expect_opaque_ty(id).origin
|
||||
tcx.hir_expect_opaque_ty(id).origin
|
||||
&& let hir::Node::TraitItem(trait_item) = tcx.hir_node_by_def_id(fn_def_id)
|
||||
&& let (_, hir::TraitFn::Required(..)) = trait_item.expect_fn()
|
||||
{
|
||||
|
|
|
@ -480,5 +480,5 @@ pub(crate) fn type_alias_is_lazy<'tcx>(tcx: TyCtxt<'tcx>, def_id: LocalDefId) ->
|
|||
}
|
||||
}
|
||||
}
|
||||
HasTait.visit_ty_unambig(tcx.hir().expect_item(def_id).expect_ty_alias().0).is_break()
|
||||
HasTait.visit_ty_unambig(tcx.hir_expect_item(def_id).expect_ty_alias().0).is_break()
|
||||
}
|
||||
|
|
|
@ -404,7 +404,7 @@ fn check_constraints<'tcx>(
|
|||
};
|
||||
|
||||
if let Some(local_sig_id) = sig_id.as_local()
|
||||
&& tcx.hir().opt_delegation_sig_id(local_sig_id).is_some()
|
||||
&& tcx.hir_opt_delegation_sig_id(local_sig_id).is_some()
|
||||
{
|
||||
emit("recursive delegation is not supported yet");
|
||||
}
|
||||
|
@ -416,7 +416,7 @@ pub(crate) fn inherit_sig_for_delegation_item<'tcx>(
|
|||
tcx: TyCtxt<'tcx>,
|
||||
def_id: LocalDefId,
|
||||
) -> &'tcx [Ty<'tcx>] {
|
||||
let sig_id = tcx.hir().opt_delegation_sig_id(def_id).unwrap();
|
||||
let sig_id = tcx.hir_opt_delegation_sig_id(def_id).unwrap();
|
||||
let caller_sig = tcx.fn_sig(sig_id);
|
||||
if let Err(err) = check_constraints(tcx, def_id, sig_id) {
|
||||
let sig_len = caller_sig.instantiate_identity().skip_binder().inputs().len() + 1;
|
||||
|
|
|
@ -370,7 +370,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
|
|||
#[instrument(level = "debug", skip(self), ret)]
|
||||
pub fn lower_resolved_lifetime(&self, resolved: rbv::ResolvedArg) -> ty::Region<'tcx> {
|
||||
let tcx = self.tcx();
|
||||
let lifetime_name = |def_id| tcx.hir().name(tcx.local_def_id_to_hir_id(def_id));
|
||||
let lifetime_name = |def_id| tcx.hir_name(tcx.local_def_id_to_hir_id(def_id));
|
||||
|
||||
match resolved {
|
||||
rbv::ResolvedArg::StaticLifetime => tcx.lifetimes.re_static,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue