Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit e00fd78

Browse files
committedJul 10, 2024
simplify and future-proof needs_normalization
1 parent 0fdfb61 commit e00fd78

File tree

3 files changed

+10
-13
lines changed

3 files changed

+10
-13
lines changed
 

‎compiler/rustc_trait_selection/src/traits/normalize.rs

+5-8
Original file line numberDiff line numberDiff line change
@@ -109,16 +109,13 @@ pub(super) fn needs_normalization<'tcx, T: TypeVisitable<TyCtxt<'tcx>>>(
109109
value: &T,
110110
reveal: Reveal,
111111
) -> bool {
112-
// This mirrors `ty::TypeFlags::HAS_ALIASES` except that we take `Reveal` into account.
113-
114-
let mut flags = ty::TypeFlags::HAS_TY_PROJECTION
115-
| ty::TypeFlags::HAS_TY_WEAK
116-
| ty::TypeFlags::HAS_TY_INHERENT
117-
| ty::TypeFlags::HAS_CT_PROJECTION;
112+
let mut flags = ty::TypeFlags::HAS_ALIAS;
118113

114+
// Opaques are treated as rigid with `Reveal::UserFacing`,
115+
// so we can ignore those.
119116
match reveal {
120-
Reveal::UserFacing => {}
121-
Reveal::All => flags |= ty::TypeFlags::HAS_TY_OPAQUE,
117+
Reveal::UserFacing => flags.remove(ty::TypeFlags::HAS_TY_OPAQUE),
118+
Reveal::All => {}
122119
}
123120

124121
value.has_type_flags(flags)

‎compiler/rustc_type_ir/src/flags.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ bitflags::bitflags! {
1414
/// Does this have `ConstKind::Param`?
1515
const HAS_CT_PARAM = 1 << 2;
1616

17-
const HAS_PARAM = TypeFlags::HAS_TY_PARAM.bits()
17+
const HAS_PARAM = TypeFlags::HAS_TY_PARAM.bits()
1818
| TypeFlags::HAS_RE_PARAM.bits()
1919
| TypeFlags::HAS_CT_PARAM.bits();
2020

@@ -27,7 +27,7 @@ bitflags::bitflags! {
2727

2828
/// Does this have inference variables? Used to determine whether
2929
/// inference is required.
30-
const HAS_INFER = TypeFlags::HAS_TY_INFER.bits()
30+
const HAS_INFER = TypeFlags::HAS_TY_INFER.bits()
3131
| TypeFlags::HAS_RE_INFER.bits()
3232
| TypeFlags::HAS_CT_INFER.bits();
3333

@@ -39,7 +39,7 @@ bitflags::bitflags! {
3939
const HAS_CT_PLACEHOLDER = 1 << 8;
4040

4141
/// Does this have placeholders?
42-
const HAS_PLACEHOLDER = TypeFlags::HAS_TY_PLACEHOLDER.bits()
42+
const HAS_PLACEHOLDER = TypeFlags::HAS_TY_PLACEHOLDER.bits()
4343
| TypeFlags::HAS_RE_PLACEHOLDER.bits()
4444
| TypeFlags::HAS_CT_PLACEHOLDER.bits();
4545

@@ -81,7 +81,7 @@ bitflags::bitflags! {
8181
/// Does this have `Alias` or `ConstKind::Unevaluated`?
8282
///
8383
/// Rephrased, could this term be normalized further?
84-
const HAS_ALIASES = TypeFlags::HAS_TY_PROJECTION.bits()
84+
const HAS_ALIAS = TypeFlags::HAS_TY_PROJECTION.bits()
8585
| TypeFlags::HAS_TY_WEAK.bits()
8686
| TypeFlags::HAS_TY_OPAQUE.bits()
8787
| TypeFlags::HAS_TY_INHERENT.bits()

‎compiler/rustc_type_ir/src/visit.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ pub trait TypeVisitableExt<I: Interner>: TypeVisitable<I> {
230230
}
231231

232232
fn has_aliases(&self) -> bool {
233-
self.has_type_flags(TypeFlags::HAS_ALIASES)
233+
self.has_type_flags(TypeFlags::HAS_ALIAS)
234234
}
235235

236236
fn has_inherent_projections(&self) -> bool {

0 commit comments

Comments
 (0)
Failed to load comments.