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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 3 additions & 4 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 2 additions & 3 deletions
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 ||

0 commit comments

Comments
 (0)