1
Fork 0

Rollup merge of #110175 - nnethercote:symbol-cleanups, r=jackh726

Symbol cleanups

r? ```@jackh726```

cc ```@b-naber```
This commit is contained in:
Matthias Krüger 2023-04-12 20:56:22 +02:00 committed by GitHub
commit b4734f01fe
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 28 additions and 49 deletions

View file

@ -69,12 +69,10 @@ impl RegionCtxt {
/// Used to determine the representative of a component in the strongly connected /// Used to determine the representative of a component in the strongly connected
/// constraint graph /// constraint graph
pub(crate) fn preference_value(self) -> usize { pub(crate) fn preference_value(self) -> usize {
let _anon = Symbol::intern("anon");
match self { match self {
RegionCtxt::Unknown => 1, RegionCtxt::Unknown => 1,
RegionCtxt::Existential(None) => 2, RegionCtxt::Existential(None) => 2,
RegionCtxt::Existential(Some(_anon)) | RegionCtxt::Free(_anon) => 2, RegionCtxt::Existential(Some(_)) | RegionCtxt::Free(_) => 2,
RegionCtxt::Location(_) => 3, RegionCtxt::Location(_) => 3,
RegionCtxt::TyContext(_) => 4, RegionCtxt::TyContext(_) => 4,
_ => 5, _ => 5,

View file

@ -35,6 +35,7 @@ use rustc_middle::ty::{
OpaqueHiddenType, OpaqueTypeKey, RegionVid, Ty, TyCtxt, UserType, UserTypeAnnotationIndex, OpaqueHiddenType, OpaqueTypeKey, RegionVid, Ty, TyCtxt, UserType, UserTypeAnnotationIndex,
}; };
use rustc_span::def_id::CRATE_DEF_ID; use rustc_span::def_id::CRATE_DEF_ID;
use rustc_span::symbol::sym;
use rustc_span::{Span, DUMMY_SP}; use rustc_span::{Span, DUMMY_SP};
use rustc_target::abi::{FieldIdx, FIRST_VARIANT}; use rustc_target::abi::{FieldIdx, FIRST_VARIANT};
use rustc_trait_selection::traits::query::type_op::custom::scrape_region_constraints; use rustc_trait_selection::traits::query::type_op::custom::scrape_region_constraints;
@ -1338,18 +1339,13 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
}; };
let (sig, map) = tcx.replace_late_bound_regions(sig, |br| { let (sig, map) = tcx.replace_late_bound_regions(sig, |br| {
use crate::renumber::{BoundRegionInfo, RegionCtxt}; use crate::renumber::{BoundRegionInfo, RegionCtxt};
use rustc_span::Symbol;
let region_ctxt_fn = || { let region_ctxt_fn = || {
let reg_info = match br.kind { let reg_info = match br.kind {
ty::BoundRegionKind::BrAnon(Some(span)) => BoundRegionInfo::Span(span), ty::BoundRegionKind::BrAnon(Some(span)) => BoundRegionInfo::Span(span),
ty::BoundRegionKind::BrAnon(..) => { ty::BoundRegionKind::BrAnon(..) => BoundRegionInfo::Name(sym::anon),
BoundRegionInfo::Name(Symbol::intern("anon"))
}
ty::BoundRegionKind::BrNamed(_, name) => BoundRegionInfo::Name(name), ty::BoundRegionKind::BrNamed(_, name) => BoundRegionInfo::Name(name),
ty::BoundRegionKind::BrEnv => { ty::BoundRegionKind::BrEnv => BoundRegionInfo::Name(sym::env),
BoundRegionInfo::Name(Symbol::intern("env"))
}
}; };
RegionCtxt::LateBound(reg_info) RegionCtxt::LateBound(reg_info)

View file

@ -4,6 +4,7 @@ use rustc_infer::traits::PredicateObligations;
use rustc_middle::mir::ConstraintCategory; use rustc_middle::mir::ConstraintCategory;
use rustc_middle::ty::relate::TypeRelation; use rustc_middle::ty::relate::TypeRelation;
use rustc_middle::ty::{self, Ty}; use rustc_middle::ty::{self, Ty};
use rustc_span::symbol::sym;
use rustc_span::{Span, Symbol}; use rustc_span::{Span, Symbol};
use rustc_trait_selection::traits::query::Fallible; use rustc_trait_selection::traits::query::Fallible;
@ -125,9 +126,9 @@ impl<'tcx> TypeRelatingDelegate<'tcx> for NllTypeRelatingDelegate<'_, '_, 'tcx>
let reg_info = match placeholder.bound.kind { let reg_info = match placeholder.bound.kind {
ty::BoundRegionKind::BrAnon(Some(span)) => BoundRegionInfo::Span(span), ty::BoundRegionKind::BrAnon(Some(span)) => BoundRegionInfo::Span(span),
ty::BoundRegionKind::BrAnon(..) => BoundRegionInfo::Name(Symbol::intern("anon")), ty::BoundRegionKind::BrAnon(..) => BoundRegionInfo::Name(sym::anon),
ty::BoundRegionKind::BrNamed(_, name) => BoundRegionInfo::Name(name), ty::BoundRegionKind::BrNamed(_, name) => BoundRegionInfo::Name(name),
ty::BoundRegionKind::BrEnv => BoundRegionInfo::Name(Symbol::intern("env")), ty::BoundRegionKind::BrEnv => BoundRegionInfo::Name(sym::env),
}; };
let reg_var = let reg_var =

View file

@ -24,6 +24,7 @@ use rustc_infer::infer::NllRegionVariableOrigin;
use rustc_middle::ty::fold::TypeFoldable; use rustc_middle::ty::fold::TypeFoldable;
use rustc_middle::ty::{self, InlineConstSubsts, InlineConstSubstsParts, RegionVid, Ty, TyCtxt}; use rustc_middle::ty::{self, InlineConstSubsts, InlineConstSubstsParts, RegionVid, Ty, TyCtxt};
use rustc_middle::ty::{InternalSubsts, SubstsRef}; use rustc_middle::ty::{InternalSubsts, SubstsRef};
use rustc_span::symbol::{kw, sym};
use rustc_span::Symbol; use rustc_span::Symbol;
use std::iter; use std::iter;
@ -404,10 +405,8 @@ impl<'cx, 'tcx> UniversalRegionsBuilder<'cx, 'tcx> {
assert_eq!(FIRST_GLOBAL_INDEX, self.infcx.num_region_vars()); assert_eq!(FIRST_GLOBAL_INDEX, self.infcx.num_region_vars());
// Create the "global" region that is always free in all contexts: 'static. // Create the "global" region that is always free in all contexts: 'static.
let fr_static = self let fr_static =
.infcx self.infcx.next_nll_region_var(FR, || RegionCtxt::Free(kw::Static)).to_region_vid();
.next_nll_region_var(FR, || RegionCtxt::Free(Symbol::intern("static")))
.to_region_vid();
// We've now added all the global regions. The next ones we // We've now added all the global regions. The next ones we
// add will be external. // add will be external.
@ -440,11 +439,7 @@ impl<'cx, 'tcx> UniversalRegionsBuilder<'cx, 'tcx> {
debug!(?r); debug!(?r);
if !indices.indices.contains_key(&r) { if !indices.indices.contains_key(&r) {
let region_vid = { let region_vid = {
let name = match r.get_name() { let name = r.get_name_or_anon();
Some(name) => name,
_ => Symbol::intern("anon"),
};
self.infcx.next_nll_region_var(FR, || { self.infcx.next_nll_region_var(FR, || {
RegionCtxt::LateBound(BoundRegionInfo::Name(name)) RegionCtxt::LateBound(BoundRegionInfo::Name(name))
}) })
@ -478,11 +473,7 @@ impl<'cx, 'tcx> UniversalRegionsBuilder<'cx, 'tcx> {
debug!(?r); debug!(?r);
if !indices.indices.contains_key(&r) { if !indices.indices.contains_key(&r) {
let region_vid = { let region_vid = {
let name = match r.get_name() { let name = r.get_name_or_anon();
Some(name) => name,
_ => Symbol::intern("anon"),
};
self.infcx.next_nll_region_var(FR, || { self.infcx.next_nll_region_var(FR, || {
RegionCtxt::LateBound(BoundRegionInfo::Name(name)) RegionCtxt::LateBound(BoundRegionInfo::Name(name))
}) })
@ -768,15 +759,10 @@ impl<'cx, 'tcx> InferCtxtExt<'tcx> for BorrowckInferCtxt<'cx, 'tcx> {
T: TypeFoldable<TyCtxt<'tcx>>, T: TypeFoldable<TyCtxt<'tcx>>,
{ {
self.infcx.tcx.fold_regions(value, |region, _depth| { self.infcx.tcx.fold_regions(value, |region, _depth| {
let name = match region.get_name() { let name = region.get_name_or_anon();
Some(name) => name,
_ => Symbol::intern("anon"),
};
debug!(?region, ?name); debug!(?region, ?name);
let reg_var = self.next_nll_region_var(origin, || RegionCtxt::Free(name)); self.next_nll_region_var(origin, || RegionCtxt::Free(name))
reg_var
}) })
} }
@ -797,7 +783,7 @@ impl<'cx, 'tcx> InferCtxtExt<'tcx> for BorrowckInferCtxt<'cx, 'tcx> {
let region_vid = { let region_vid = {
let name = match br.kind.get_name() { let name = match br.kind.get_name() {
Some(name) => name, Some(name) => name,
_ => Symbol::intern("anon"), _ => sym::anon,
}; };
self.next_nll_region_var(origin, || RegionCtxt::Bound(BoundRegionInfo::Name(name))) self.next_nll_region_var(origin, || RegionCtxt::Bound(BoundRegionInfo::Name(name)))
@ -829,11 +815,7 @@ impl<'cx, 'tcx> InferCtxtExt<'tcx> for BorrowckInferCtxt<'cx, 'tcx> {
debug!(?r); debug!(?r);
if !indices.indices.contains_key(&r) { if !indices.indices.contains_key(&r) {
let region_vid = { let region_vid = {
let name = match r.get_name() { let name = r.get_name_or_anon();
Some(name) => name,
_ => Symbol::intern("anon"),
};
self.next_nll_region_var(FR, || { self.next_nll_region_var(FR, || {
RegionCtxt::LateBound(BoundRegionInfo::Name(name)) RegionCtxt::LateBound(BoundRegionInfo::Name(name))
}) })
@ -855,11 +837,7 @@ impl<'cx, 'tcx> InferCtxtExt<'tcx> for BorrowckInferCtxt<'cx, 'tcx> {
debug!(?r); debug!(?r);
if !indices.indices.contains_key(&r) { if !indices.indices.contains_key(&r) {
let region_vid = { let region_vid = {
let name = match r.get_name() { let name = r.get_name_or_anon();
Some(name) => name,
_ => Symbol::intern("anon"),
};
self.next_nll_region_var(FR, || { self.next_nll_region_var(FR, || {
RegionCtxt::LateBound(BoundRegionInfo::Name(name)) RegionCtxt::LateBound(BoundRegionInfo::Name(name))
}) })

View file

@ -1621,19 +1621,24 @@ impl<'tcx> Region<'tcx> {
pub fn get_name(self) -> Option<Symbol> { pub fn get_name(self) -> Option<Symbol> {
if self.has_name() { if self.has_name() {
let name = match *self { match *self {
ty::ReEarlyBound(ebr) => Some(ebr.name), ty::ReEarlyBound(ebr) => Some(ebr.name),
ty::ReLateBound(_, br) => br.kind.get_name(), ty::ReLateBound(_, br) => br.kind.get_name(),
ty::ReFree(fr) => fr.bound_region.get_name(), ty::ReFree(fr) => fr.bound_region.get_name(),
ty::ReStatic => Some(kw::StaticLifetime), ty::ReStatic => Some(kw::StaticLifetime),
ty::RePlaceholder(placeholder) => placeholder.bound.kind.get_name(), ty::RePlaceholder(placeholder) => placeholder.bound.kind.get_name(),
_ => None, _ => None,
}; }
} else {
return name; None
} }
}
None pub fn get_name_or_anon(self) -> Symbol {
match self.get_name() {
Some(name) => name,
None => sym::anon,
}
} }
/// Is this region named by the user? /// Is this region named by the user?

View file

@ -357,6 +357,7 @@ symbols! {
always, always,
and, and,
and_then, and_then,
anon,
anonymous_lifetime_in_impl_trait, anonymous_lifetime_in_impl_trait,
any, any,
append_const_msg, append_const_msg,