Skip to content

Commit b0a4074

Browse files
committed
Auto merge of #41504 - eddyb:query-api, r=nikomatsakis
Improve the librustc on-demand/query API ergonomics. Queries are now performed through these two forms: * `tcx.type_of(def_id)` (the most common usage) * `tcx.at(span).type_of(def_id)` (to provide a more specific location in the cycle stack) Several queries were renamed to work better as method names, i.e. by suffixing with `_of`. r? @nikomatsakis
2 parents dad9814 + decf759 commit b0a4074

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+508
-557
lines changed

src/librustc/cfg/construct.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ pub fn construct<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
5252

5353
// Find the tables for this body.
5454
let owner_def_id = tcx.hir.local_def_id(tcx.hir.body_owner(body.id()));
55-
let tables = tcx.item_tables(owner_def_id);
55+
let tables = tcx.typeck_tables_of(owner_def_id);
5656

5757
let mut cfg_builder = CFGBuilder {
5858
tcx: tcx,

src/librustc/infer/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,7 @@ impl<'a, 'tcx> InferEnv<'a, 'tcx> for hir::BodyId {
450450
Option<ty::TypeckTables<'tcx>>,
451451
Option<ty::ParameterEnvironment<'tcx>>) {
452452
let item_id = tcx.hir.body_owner(self);
453-
(Some(tcx.item_tables(tcx.hir.local_def_id(item_id))),
453+
(Some(tcx.typeck_tables_of(tcx.hir.local_def_id(item_id))),
454454
None,
455455
Some(ty::ParameterEnvironment::for_item(tcx, item_id)))
456456
}
@@ -1237,7 +1237,7 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
12371237
substs: &[Kind<'tcx>])
12381238
-> Ty<'tcx> {
12391239
let default = if def.has_default {
1240-
let default = self.tcx.item_type(def.def_id);
1240+
let default = self.tcx.type_of(def.def_id);
12411241
Some(type_variable::Default {
12421242
ty: default.subst_spanned(self.tcx, substs, Some(span)),
12431243
origin_span: span,

src/librustc/lint/context.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ use std::fmt;
4343
use syntax::attr;
4444
use syntax::ast;
4545
use syntax::symbol::Symbol;
46-
use syntax_pos::{DUMMY_SP, MultiSpan, Span};
46+
use syntax_pos::{MultiSpan, Span};
4747
use errors::{self, Diagnostic, DiagnosticBuilder};
4848
use hir;
4949
use hir::def_id::LOCAL_CRATE;
@@ -1234,7 +1234,7 @@ fn check_lint_name_cmdline(sess: &Session, lint_cx: &LintStore,
12341234
pub fn check_crate<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>) {
12351235
let _task = tcx.dep_graph.in_task(DepNode::LateLintCheck);
12361236

1237-
let access_levels = &ty::queries::privacy_access_levels::get(tcx, DUMMY_SP, LOCAL_CRATE);
1237+
let access_levels = &tcx.privacy_access_levels(LOCAL_CRATE);
12381238

12391239
let krate = tcx.hir.krate();
12401240

src/librustc/middle/const_val.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ pub use rustc_const_math::ConstInt;
1414
use hir;
1515
use hir::def::Def;
1616
use hir::def_id::DefId;
17-
use ty::{self, TyCtxt};
17+
use ty::TyCtxt;
1818
use ty::subst::Substs;
1919
use util::common::ErrorReported;
2020
use rustc_const_math::*;
@@ -228,7 +228,7 @@ pub fn eval_length(tcx: TyCtxt,
228228
let count_expr = &tcx.hir.body(count).value;
229229
let count_def_id = tcx.hir.body_owner_def_id(count);
230230
let substs = Substs::empty();
231-
match ty::queries::const_eval::get(tcx, count_expr.span, (count_def_id, substs)) {
231+
match tcx.at(count_expr.span).const_eval((count_def_id, substs)) {
232232
Ok(Integral(Usize(count))) => {
233233
let val = count.as_u64(tcx.sess.target.uint_type);
234234
assert_eq!(val as usize as u64, val);

src/librustc/middle/dead.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ use util::nodemap::FxHashSet;
2626

2727
use syntax::{ast, codemap};
2828
use syntax::attr;
29-
use syntax::codemap::DUMMY_SP;
3029
use syntax_pos;
3130

3231
// Any local node that may call something in its body block should be
@@ -160,7 +159,7 @@ impl<'a, 'tcx> MarkSymbolVisitor<'a, 'tcx> {
160159
match item.node {
161160
hir::ItemStruct(..) | hir::ItemUnion(..) => {
162161
let def_id = self.tcx.hir.local_def_id(item.id);
163-
let def = self.tcx.lookup_adt_def(def_id);
162+
let def = self.tcx.adt_def(def_id);
164163
self.struct_has_extern_repr = def.repr.c();
165164

166165
intravisit::walk_item(self, &item);
@@ -433,7 +432,7 @@ impl<'a, 'tcx> DeadVisitor<'a, 'tcx> {
433432
}
434433

435434
fn should_warn_about_field(&mut self, field: &hir::StructField) -> bool {
436-
let field_type = self.tcx.item_type(self.tcx.hir.local_def_id(field.id));
435+
let field_type = self.tcx.type_of(self.tcx.hir.local_def_id(field.id));
437436
let is_marker_field = match field_type.ty_to_def_id() {
438437
Some(def_id) => self.tcx.lang_items.items().iter().any(|item| *item == Some(def_id)),
439438
_ => false
@@ -593,7 +592,7 @@ impl<'a, 'tcx> Visitor<'tcx> for DeadVisitor<'a, 'tcx> {
593592
}
594593

595594
pub fn check_crate<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>) {
596-
let access_levels = &ty::queries::privacy_access_levels::get(tcx, DUMMY_SP, LOCAL_CRATE);
595+
let access_levels = &tcx.privacy_access_levels(LOCAL_CRATE);
597596
let krate = tcx.hir.krate();
598597
let live_symbols = find_live(tcx, access_levels, krate);
599598
let mut visitor = DeadVisitor { tcx: tcx, live_symbols: live_symbols };

src/librustc/middle/expr_use_visitor.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -998,7 +998,7 @@ impl<'a, 'gcx, 'tcx> ExprUseVisitor<'a, 'gcx, 'tcx> {
998998
Def::Variant(variant_did) |
999999
Def::VariantCtor(variant_did, ..) => {
10001000
let enum_did = tcx.parent_def_id(variant_did).unwrap();
1001-
let downcast_cmt = if tcx.lookup_adt_def(enum_did).is_univariant() {
1001+
let downcast_cmt = if tcx.adt_def(enum_did).is_univariant() {
10021002
cmt_pat
10031003
} else {
10041004
let cmt_pat_ty = cmt_pat.ty;

src/librustc/middle/intrinsicck.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ fn unpack_option_like<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
6666

6767
impl<'a, 'gcx, 'tcx> ExprVisitor<'a, 'gcx, 'tcx> {
6868
fn def_id_is_transmute(&self, def_id: DefId) -> bool {
69-
let intrinsic = match self.infcx.tcx.item_type(def_id).sty {
69+
let intrinsic = match self.infcx.tcx.type_of(def_id).sty {
7070
ty::TyFnDef(.., bfty) => bfty.abi() == RustIntrinsic,
7171
_ => return false
7272
};

src/librustc/middle/liveness.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1426,7 +1426,7 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> {
14261426
entry_ln: LiveNode,
14271427
body: &hir::Body)
14281428
{
1429-
let fn_ty = self.ir.tcx.item_type(self.ir.tcx.hir.local_def_id(id));
1429+
let fn_ty = self.ir.tcx.type_of(self.ir.tcx.hir.local_def_id(id));
14301430
let fn_sig = match fn_ty.sty {
14311431
ty::TyClosure(closure_def_id, substs) => {
14321432
self.ir.tcx.closure_type(closure_def_id)

src/librustc/middle/mem_categorization.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1159,7 +1159,7 @@ impl<'a, 'gcx, 'tcx> MemCategorizationContext<'a, 'gcx, 'tcx> {
11591159
Def::VariantCtor(variant_did, ..) => {
11601160
// univariant enums do not need downcasts
11611161
let enum_did = self.tcx().parent_def_id(variant_did).unwrap();
1162-
if !self.tcx().lookup_adt_def(enum_did).is_univariant() {
1162+
if !self.tcx().adt_def(enum_did).is_univariant() {
11631163
self.cat_downcast(pat, cmt.clone(), cmt.ty, variant_did)
11641164
} else {
11651165
cmt
@@ -1177,7 +1177,7 @@ impl<'a, 'gcx, 'tcx> MemCategorizationContext<'a, 'gcx, 'tcx> {
11771177
let expected_len = match def {
11781178
Def::VariantCtor(def_id, CtorKind::Fn) => {
11791179
let enum_def = self.tcx().parent_def_id(def_id).unwrap();
1180-
self.tcx().lookup_adt_def(enum_def).variant_with_id(def_id).fields.len()
1180+
self.tcx().adt_def(enum_def).variant_with_id(def_id).fields.len()
11811181
}
11821182
Def::StructCtor(_, CtorKind::Fn) => {
11831183
match self.pat_ty(&pat)?.sty {

src/librustc/middle/reachable.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ use util::nodemap::{NodeSet, FxHashSet};
2828
use syntax::abi::Abi;
2929
use syntax::ast;
3030
use syntax::attr;
31-
use syntax::codemap::DUMMY_SP;
3231
use hir;
3332
use hir::def_id::LOCAL_CRATE;
3433
use hir::intravisit::{Visitor, NestedVisitorMap};
@@ -364,13 +363,13 @@ impl<'a, 'tcx: 'a> ItemLikeVisitor<'tcx> for CollectPrivateImplItemsVisitor<'a,
364363
}
365364

366365
pub fn find_reachable<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>) -> Rc<NodeSet> {
367-
ty::queries::reachable_set::get(tcx, DUMMY_SP, LOCAL_CRATE)
366+
tcx.reachable_set(LOCAL_CRATE)
368367
}
369368

370369
fn reachable_set<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, crate_num: CrateNum) -> Rc<NodeSet> {
371370
debug_assert!(crate_num == LOCAL_CRATE);
372371

373-
let access_levels = &ty::queries::privacy_access_levels::get(tcx, DUMMY_SP, LOCAL_CRATE);
372+
let access_levels = &tcx.privacy_access_levels(LOCAL_CRATE);
374373

375374
let any_library = tcx.sess.crate_types.borrow().iter().any(|ty| {
376375
*ty == config::CrateTypeRlib || *ty == config::CrateTypeDylib ||

src/librustc/middle/stability.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -656,7 +656,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
656656
pub fn check_unused_or_stable_features<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>) {
657657
let sess = &tcx.sess;
658658

659-
let access_levels = &ty::queries::privacy_access_levels::get(tcx, DUMMY_SP, LOCAL_CRATE);
659+
let access_levels = &tcx.privacy_access_levels(LOCAL_CRATE);
660660

661661
if tcx.stability.borrow().staged_api[&LOCAL_CRATE] && tcx.sess.features.borrow().staged_api {
662662
let krate = tcx.hir.krate();

src/librustc/mir/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1015,7 +1015,7 @@ impl<'tcx> Operand<'tcx> {
10151015
) -> Self {
10161016
Operand::Constant(Constant {
10171017
span: span,
1018-
ty: tcx.item_type(def_id).subst(tcx, substs),
1018+
ty: tcx.type_of(def_id).subst(tcx, substs),
10191019
literal: Literal::Value { value: ConstVal::Function(def_id, substs) },
10201020
})
10211021
}

src/librustc/mir/tcx.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ impl<'tcx> Rvalue<'tcx> {
194194
)
195195
}
196196
AggregateKind::Adt(def, _, substs, _) => {
197-
tcx.item_type(def.did).subst(tcx, substs)
197+
tcx.type_of(def.did).subst(tcx, substs)
198198
}
199199
AggregateKind::Closure(did, substs) => {
200200
tcx.mk_closure_from_closure_substs(did, substs)

src/librustc/traits/error_reporting.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
258258
let mut self_match_impls = vec![];
259259
let mut fuzzy_match_impls = vec![];
260260

261-
self.tcx.lookup_trait_def(trait_ref.def_id)
261+
self.tcx.trait_def(trait_ref.def_id)
262262
.for_each_relevant_impl(self.tcx, trait_self_ty, |def_id| {
263263
let impl_substs = self.fresh_substs_for_item(obligation.cause.span, def_id);
264264
let impl_trait_ref = tcx
@@ -314,7 +314,7 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
314314
let trait_str = self.tcx.item_path_str(trait_ref.def_id);
315315
if let Some(istring) = item.value_str() {
316316
let istring = &*istring.as_str();
317-
let generics = self.tcx.item_generics(trait_ref.def_id);
317+
let generics = self.tcx.generics_of(trait_ref.def_id);
318318
let generic_map = generics.types.iter().map(|param| {
319319
(param.name.as_str().to_string(),
320320
trait_ref.substs.type_for_def(param).to_string())
@@ -372,7 +372,7 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
372372
trait_ref.skip_binder().self_ty(),
373373
true);
374374
let mut impl_candidates = Vec::new();
375-
let trait_def = self.tcx.lookup_trait_def(trait_ref.def_id());
375+
let trait_def = self.tcx.trait_def(trait_ref.def_id());
376376

377377
match simp {
378378
Some(simp) => trait_def.for_each_impl(self.tcx, |def_id| {

src/librustc/traits/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -641,7 +641,7 @@ pub fn get_vtable_methods<'a, 'tcx>(
641641
// do not hold for this particular set of type parameters.
642642
// Note that this method could then never be called, so we
643643
// do not want to try and trans it, in that case (see #23435).
644-
let predicates = tcx.item_predicates(def_id).instantiate_own(tcx, substs);
644+
let predicates = tcx.predicates_of(def_id).instantiate_own(tcx, substs);
645645
if !normalize_and_test_predicates(tcx, predicates.predicates) {
646646
debug!("get_vtable_methods: predicates do not hold");
647647
return None;

src/librustc/traits/object_safety.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ pub enum MethodViolationCode {
7979
impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
8080
pub fn is_object_safe(self, trait_def_id: DefId) -> bool {
8181
// Because we query yes/no results frequently, we keep a cache:
82-
let def = self.lookup_trait_def(trait_def_id);
82+
let def = self.trait_def(trait_def_id);
8383

8484
let result = def.object_safety().unwrap_or_else(|| {
8585
let result = self.object_safety_violations(trait_def_id).is_empty();
@@ -167,9 +167,9 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
167167
substs: Substs::identity_for_item(self, trait_def_id)
168168
});
169169
let predicates = if supertraits_only {
170-
self.item_super_predicates(trait_def_id)
170+
self.super_predicates_of(trait_def_id)
171171
} else {
172-
self.item_predicates(trait_def_id)
172+
self.predicates_of(trait_def_id)
173173
};
174174
predicates
175175
.predicates
@@ -208,7 +208,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
208208
// Search for a predicate like `Self : Sized` amongst the trait bounds.
209209
let free_substs = self.construct_free_substs(def_id,
210210
self.region_maps.node_extent(ast::DUMMY_NODE_ID));
211-
let predicates = self.item_predicates(def_id);
211+
let predicates = self.predicates_of(def_id);
212212
let predicates = predicates.instantiate(self, free_substs).predicates;
213213
elaborate_predicates(self, predicates)
214214
.any(|predicate| {
@@ -281,7 +281,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
281281

282282
// The `Self` type is erased, so it should not appear in list of
283283
// arguments or return type apart from the receiver.
284-
let ref sig = self.item_type(method.def_id).fn_sig();
284+
let ref sig = self.type_of(method.def_id).fn_sig();
285285
for input_ty in &sig.skip_binder().inputs()[1..] {
286286
if self.contains_illegal_self_type_reference(trait_def_id, input_ty) {
287287
return Some(MethodViolationCode::ReferencesSelf);
@@ -292,7 +292,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
292292
}
293293

294294
// We can't monomorphize things like `fn foo<A>(...)`.
295-
if !self.item_generics(method.def_id).types.is_empty() {
295+
if !self.generics_of(method.def_id).types.is_empty() {
296296
return Some(MethodViolationCode::Generic);
297297
}
298298

src/librustc/traits/project.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ impl<'a, 'b, 'gcx, 'tcx> TypeFolder<'gcx, 'tcx> for AssociatedTypeNormalizer<'a,
279279
ty::TyAnon(def_id, substs) if !substs.has_escaping_regions() => { // (*)
280280
// Only normalize `impl Trait` after type-checking, usually in trans.
281281
if self.selcx.projection_mode() == Reveal::All {
282-
let generic_ty = self.tcx().item_type(def_id);
282+
let generic_ty = self.tcx().type_of(def_id);
283283
let concrete_ty = generic_ty.subst(self.tcx(), substs);
284284
self.fold_ty(concrete_ty)
285285
} else {
@@ -787,7 +787,7 @@ fn assemble_candidates_from_trait_def<'cx, 'gcx, 'tcx>(
787787
};
788788

789789
// If so, extract what we know from the trait and try to come up with a good answer.
790-
let trait_predicates = selcx.tcx().item_predicates(def_id);
790+
let trait_predicates = selcx.tcx().predicates_of(def_id);
791791
let bounds = trait_predicates.instantiate(selcx.tcx(), substs);
792792
let bounds = elaborate_predicates(selcx.tcx(), bounds.predicates);
793793
assemble_candidates_from_predicates(selcx,
@@ -1288,7 +1288,7 @@ fn confirm_impl_candidate<'cx, 'gcx, 'tcx>(
12881288
obligation.predicate.trait_ref);
12891289
tcx.types.err
12901290
} else {
1291-
tcx.item_type(node_item.item.def_id)
1291+
tcx.type_of(node_item.item.def_id)
12921292
};
12931293
let substs = translate_substs(selcx.infcx(), impl_def_id, substs, node_item.node);
12941294
Progress {
@@ -1317,7 +1317,7 @@ fn assoc_ty_def<'cx, 'gcx, 'tcx>(
13171317
-> Option<specialization_graph::NodeItem<ty::AssociatedItem>>
13181318
{
13191319
let trait_def_id = selcx.tcx().impl_trait_ref(impl_def_id).unwrap().def_id;
1320-
let trait_def = selcx.tcx().lookup_trait_def(trait_def_id);
1320+
let trait_def = selcx.tcx().trait_def(trait_def_id);
13211321

13221322
if !trait_def.is_complete(selcx.tcx()) {
13231323
let impl_node = specialization_graph::Node::Impl(impl_def_id);

src/librustc/traits/select.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -842,7 +842,7 @@ impl<'cx, 'gcx, 'tcx> SelectionContext<'cx, 'gcx, 'tcx> {
842842
fn filter_negative_impls(&self, candidate: SelectionCandidate<'tcx>)
843843
-> SelectionResult<'tcx, SelectionCandidate<'tcx>> {
844844
if let ImplCandidate(def_id) = candidate {
845-
if self.tcx().trait_impl_polarity(def_id) == hir::ImplPolarity::Negative {
845+
if self.tcx().impl_polarity(def_id) == hir::ImplPolarity::Negative {
846846
return Err(Unimplemented)
847847
}
848848
}
@@ -1222,8 +1222,8 @@ impl<'cx, 'gcx, 'tcx> SelectionContext<'cx, 'gcx, 'tcx> {
12221222
def_id={:?}, substs={:?}",
12231223
def_id, substs);
12241224

1225-
let item_predicates = self.tcx().item_predicates(def_id);
1226-
let bounds = item_predicates.instantiate(self.tcx(), substs);
1225+
let predicates_of = self.tcx().predicates_of(def_id);
1226+
let bounds = predicates_of.instantiate(self.tcx(), substs);
12271227
debug!("match_projection_obligation_against_definition_bounds: \
12281228
bounds={:?}",
12291229
bounds);
@@ -1432,7 +1432,7 @@ impl<'cx, 'gcx, 'tcx> SelectionContext<'cx, 'gcx, 'tcx> {
14321432
{
14331433
debug!("assemble_candidates_from_impls(obligation={:?})", obligation);
14341434

1435-
let def = self.tcx().lookup_trait_def(obligation.predicate.def_id());
1435+
let def = self.tcx().trait_def(obligation.predicate.def_id());
14361436

14371437
def.for_each_relevant_impl(
14381438
self.tcx(),
@@ -1947,7 +1947,7 @@ impl<'cx, 'gcx, 'tcx> SelectionContext<'cx, 'gcx, 'tcx> {
19471947
// We can resolve the `impl Trait` to its concrete type,
19481948
// which enforces a DAG between the functions requiring
19491949
// the auto trait bounds in question.
1950-
vec![self.tcx().item_type(def_id).subst(self.tcx(), substs)]
1950+
vec![self.tcx().type_of(def_id).subst(self.tcx(), substs)]
19511951
}
19521952
}
19531953
}
@@ -2526,7 +2526,7 @@ impl<'cx, 'gcx, 'tcx> SelectionContext<'cx, 'gcx, 'tcx> {
25262526
(&ty::TyAdt(def, substs_a), &ty::TyAdt(_, substs_b)) => {
25272527
let fields = def
25282528
.all_fields()
2529-
.map(|f| tcx.item_type(f.did))
2529+
.map(|f| tcx.type_of(f.did))
25302530
.collect::<Vec<_>>();
25312531

25322532
// The last field of the structure has to exist and contain type parameters.
@@ -2844,7 +2844,7 @@ impl<'cx, 'gcx, 'tcx> SelectionContext<'cx, 'gcx, 'tcx> {
28442844
// obligation will normalize to `<$0 as Iterator>::Item = $1` and
28452845
// `$1: Copy`, so we must ensure the obligations are emitted in
28462846
// that order.
2847-
let predicates = tcx.item_predicates(def_id);
2847+
let predicates = tcx.predicates_of(def_id);
28482848
assert_eq!(predicates.parent, None);
28492849
let predicates = predicates.predicates.iter().flat_map(|predicate| {
28502850
let predicate = normalize_with_depth(self, cause.clone(), recursion_depth,

src/librustc/traits/specialize/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ pub fn find_associated_item<'a, 'tcx>(
117117
assert!(!substs.needs_infer());
118118

119119
let trait_def_id = tcx.trait_id_of_impl(impl_data.impl_def_id).unwrap();
120-
let trait_def = tcx.lookup_trait_def(trait_def_id);
120+
let trait_def = tcx.trait_def(trait_def_id);
121121

122122
let ancestors = trait_def.ancestors(impl_data.impl_def_id);
123123
match ancestors.defs(tcx, item.name, item.kind).next() {
@@ -175,7 +175,7 @@ pub fn specializes<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
175175
// See RFC 1210 for more details and justification.
176176

177177
// Currently we do not allow e.g. a negative impl to specialize a positive one
178-
if tcx.trait_impl_polarity(impl1_def_id) != tcx.trait_impl_polarity(impl2_def_id) {
178+
if tcx.impl_polarity(impl1_def_id) != tcx.impl_polarity(impl2_def_id) {
179179
return false;
180180
}
181181

0 commit comments

Comments
 (0)