Auto merge of #133321 - compiler-errors:const-checker, r=wesleywiser
Get rid of HIR const checker As far as I can tell, the HIR const checker was implemented in https://github.com/rust-lang/rust/pull/66170 because we were not able to issue useful const error messages in the MIR const checker. This seems to have changed in the last 5 years, probably due to work like #90532. I've tweaked the diagnostics slightly and think the error messages have gotten *better* in fact. Thus I think the HIR const checker has reached the end of its usefulness, and we can retire it. cc `@RalfJung`
This commit is contained in:
commit
efdd9e8020
38 changed files with 151 additions and 604 deletions
|
@ -958,11 +958,6 @@ rustc_queries! {
|
|||
desc { |tcx| "checking for unstable API usage in {}", describe_as_module(key, tcx) }
|
||||
}
|
||||
|
||||
/// Checks the const bodies in the module for illegal operations (e.g. `if` or `loop`).
|
||||
query check_mod_const_bodies(key: LocalModDefId) {
|
||||
desc { |tcx| "checking consts in {}", describe_as_module(key, tcx) }
|
||||
}
|
||||
|
||||
/// Checks the loops in the module.
|
||||
query check_mod_loops(key: LocalModDefId) {
|
||||
desc { |tcx| "checking loops in {}", describe_as_module(key, tcx) }
|
||||
|
|
|
@ -14,6 +14,8 @@ use crate::ty::{AssocItemContainer, GenericArgsRef, Instance, Ty, TyCtxt, Typing
|
|||
pub enum CallDesugaringKind {
|
||||
/// for _ in x {} calls x.into_iter()
|
||||
ForLoopIntoIter,
|
||||
/// for _ in x {} calls iter.next()
|
||||
ForLoopNext,
|
||||
/// x? calls x.branch()
|
||||
QuestionBranch,
|
||||
/// x? calls type_of(x)::from_residual()
|
||||
|
@ -28,6 +30,7 @@ impl CallDesugaringKind {
|
|||
pub fn trait_def_id(self, tcx: TyCtxt<'_>) -> DefId {
|
||||
match self {
|
||||
Self::ForLoopIntoIter => tcx.get_diagnostic_item(sym::IntoIterator).unwrap(),
|
||||
Self::ForLoopNext => tcx.require_lang_item(LangItem::Iterator, None),
|
||||
Self::QuestionBranch | Self::TryBlockFromOutput => {
|
||||
tcx.require_lang_item(LangItem::Try, None)
|
||||
}
|
||||
|
@ -121,6 +124,10 @@ pub fn call_kind<'tcx>(
|
|||
&& fn_call_span.desugaring_kind() == Some(DesugaringKind::ForLoop)
|
||||
{
|
||||
Some((CallDesugaringKind::ForLoopIntoIter, method_args.type_at(0)))
|
||||
} else if tcx.is_lang_item(method_did, LangItem::IteratorNext)
|
||||
&& fn_call_span.desugaring_kind() == Some(DesugaringKind::ForLoop)
|
||||
{
|
||||
Some((CallDesugaringKind::ForLoopNext, method_args.type_at(0)))
|
||||
} else if fn_call_span.desugaring_kind() == Some(DesugaringKind::QuestionMark) {
|
||||
if tcx.is_lang_item(method_did, LangItem::TryTraitBranch) {
|
||||
Some((CallDesugaringKind::QuestionBranch, method_args.type_at(0)))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue