Skip to content

Commit 3361488

Browse files
Always encode implied_predicates query for traits
With associated type bounds enabled, the implied_predicates and super_predicates queries may differ for traits, since associated type bounds are also implied but are not counted as super predicates.
1 parent c855bf6 commit 3361488

File tree

4 files changed

+3
-31
lines changed

4 files changed

+3
-31
lines changed

compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs

+1-12
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ provide! { tcx, def_id, other, cdata,
211211
generics_of => { table }
212212
inferred_outlives_of => { table_defaulted_array }
213213
super_predicates_of => { table }
214+
implied_predicates_of => { table }
214215
type_of => { table }
215216
type_alias_is_lazy => { cdata.root.tables.type_alias_is_lazy.get(cdata, def_id.index) }
216217
variances_of => { table }
@@ -276,18 +277,6 @@ provide! { tcx, def_id, other, cdata,
276277
.map(|lazy| lazy.decode((cdata, tcx)))
277278
.process_decoded(tcx, || panic!("{def_id:?} does not have trait_impl_trait_tys")))
278279
}
279-
implied_predicates_of => {
280-
cdata
281-
.root
282-
.tables
283-
.implied_predicates_of
284-
.get(cdata, def_id.index)
285-
.map(|lazy| lazy.decode((cdata, tcx)))
286-
.unwrap_or_else(|| {
287-
debug_assert_eq!(tcx.def_kind(def_id), DefKind::Trait);
288-
tcx.super_predicates_of(def_id)
289-
})
290-
}
291280

292281
associated_types_for_impl_traits_in_associated_fn => { table_defaulted_array }
293282

compiler/rustc_metadata/src/rmeta/encoder.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1435,6 +1435,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
14351435
if let DefKind::Trait = def_kind {
14361436
record!(self.tables.trait_def[def_id] <- self.tcx.trait_def(def_id));
14371437
record!(self.tables.super_predicates_of[def_id] <- self.tcx.super_predicates_of(def_id));
1438+
record!(self.tables.implied_predicates_of[def_id] <- self.tcx.implied_predicates_of(def_id));
14381439

14391440
let module_children = self.tcx.module_children_local(local_id);
14401441
record_array!(self.tables.module_children_non_reexports[def_id] <-

tests/ui/associated-type-bounds/implied-predicates.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
//@ aux-build:implied-predicates.rs
2+
//@ check-pass
23

34
extern crate implied_predicates;
45
use implied_predicates::Bar;

tests/ui/associated-type-bounds/implied-predicates.stderr

-19
This file was deleted.

0 commit comments

Comments
 (0)