Skip to content

Commit a987bbb

Browse files
committed
Remove hir::Crate::attrs.
1 parent c05c902 commit a987bbb

File tree

15 files changed

+47
-45
lines changed

15 files changed

+47
-45
lines changed

compiler/rustc_ast_lowering/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -568,7 +568,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
568568
visit::walk_crate(&mut item::ItemLowerer { lctx: &mut self }, c);
569569

570570
let module = self.lower_mod(&c.items, c.span);
571-
let attrs = self.lower_attrs(hir::CRATE_HIR_ID, &c.attrs);
571+
self.lower_attrs(hir::CRATE_HIR_ID, &c.attrs);
572572
let body_ids = body_ids(&self.bodies);
573573
let proc_macros =
574574
c.proc_macros.iter().map(|id| self.node_id_to_hir_id[*id].unwrap()).collect();
@@ -599,7 +599,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
599599
self.attrs.push_owner(Idx::new(self.resolver.definitions().def_index_count() - 1));
600600

601601
hir::Crate {
602-
item: hir::CrateItem { module, attrs, span: c.span },
602+
item: hir::CrateItem { module, span: c.span },
603603
exported_macros: self.arena.alloc_from_iter(self.exported_macros),
604604
non_exported_macro_attrs: self.arena.alloc_from_iter(self.non_exported_macro_attrs),
605605
items: self.items,

compiler/rustc_codegen_ssa/src/back/write.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -433,12 +433,10 @@ pub fn start_async_codegen<B: ExtraBackendMethods>(
433433
let sess = tcx.sess;
434434

435435
let crate_name = tcx.crate_name(LOCAL_CRATE);
436-
let no_builtins = tcx.sess.contains_name(&tcx.hir().krate().item.attrs, sym::no_builtins);
437-
let is_compiler_builtins =
438-
tcx.sess.contains_name(&tcx.hir().krate().item.attrs, sym::compiler_builtins);
439-
let subsystem = tcx
440-
.sess
441-
.first_attr_value_str_by_name(&tcx.hir().krate().item.attrs, sym::windows_subsystem);
436+
let crate_attrs = tcx.hir().attrs(rustc_hir::CRATE_HIR_ID);
437+
let no_builtins = tcx.sess.contains_name(crate_attrs, sym::no_builtins);
438+
let is_compiler_builtins = tcx.sess.contains_name(crate_attrs, sym::compiler_builtins);
439+
let subsystem = tcx.sess.first_attr_value_str_by_name(crate_attrs, sym::windows_subsystem);
442440
let windows_subsystem = subsystem.map(|subsystem| {
443441
if subsystem != sym::windows && subsystem != sym::console {
444442
tcx.sess.fatal(&format!(

compiler/rustc_hir/src/hir.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -629,7 +629,6 @@ pub struct ModuleItems {
629629
#[derive(Encodable, Debug, HashStable_Generic)]
630630
pub struct CrateItem<'hir> {
631631
pub module: Mod<'hir>,
632-
pub attrs: &'hir [Attribute],
633632
pub span: Span,
634633
}
635634

compiler/rustc_hir_pretty/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ pub fn print_crate<'a>(
168168
// When printing the AST, we sometimes need to inject `#[no_std]` here.
169169
// Since you can't compile the HIR, it's not necessary.
170170

171-
s.print_mod(&krate.item.module, &krate.item.attrs);
171+
s.print_mod(&krate.item.module, krate.attrs[hir::CRATE_HIR_ID]);
172172
s.print_remaining_comments();
173173
s.s.eof()
174174
}

compiler/rustc_incremental/src/assert_module_sources.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ pub fn assert_module_sources(tcx: TyCtxt<'_>) {
4444

4545
let ams = AssertModuleSource { tcx, available_cgus };
4646

47-
for attr in tcx.hir().krate().item.attrs {
47+
for attr in tcx.hir().attrs(rustc_hir::CRATE_HIR_ID) {
4848
ams.check_attr(attr);
4949
}
5050
})

compiler/rustc_lint/src/levels.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ fn lint_levels(tcx: TyCtxt<'_>, cnum: CrateNum) -> LintLevelMap {
3838

3939
builder.levels.id_to_set.reserve(krate.exported_macros.len() + 1);
4040

41-
let push = builder.levels.push(&krate.item.attrs, &store, true);
41+
let push = builder.levels.push(tcx.hir().attrs(hir::CRATE_HIR_ID), &store, true);
4242
builder.levels.register_id(hir::CRATE_HIR_ID);
4343
for macro_def in krate.exported_macros {
4444
builder.levels.register_id(macro_def.hir_id());

compiler/rustc_metadata/src/link_args.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ crate fn collect(tcx: TyCtxt<'_>) -> Vec<String> {
88
let mut collector = Collector { tcx, args: Vec::new() };
99
tcx.hir().krate().visit_all_item_likes(&mut collector);
1010

11-
for attr in tcx.hir().krate().item.attrs.iter() {
11+
for attr in tcx.hir().attrs(hir::CRATE_HIR_ID).iter() {
1212
if attr.has_name(sym::link_args) {
1313
if let Some(linkarg) = attr.value_str() {
1414
collector.add_link_args(linkarg);

compiler/rustc_passes/src/entry.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use rustc_ast::entry::EntryPointType;
22
use rustc_errors::struct_span_err;
33
use rustc_hir::def_id::{CrateNum, LocalDefId, CRATE_DEF_INDEX, LOCAL_CRATE};
44
use rustc_hir::itemlikevisit::ItemLikeVisitor;
5-
use rustc_hir::{ForeignItem, HirId, ImplItem, Item, ItemKind, TraitItem};
5+
use rustc_hir::{ForeignItem, HirId, ImplItem, Item, ItemKind, TraitItem, CRATE_HIR_ID};
66
use rustc_middle::hir::map::Map;
77
use rustc_middle::ty::query::Providers;
88
use rustc_middle::ty::TyCtxt;
@@ -60,7 +60,7 @@ fn entry_fn(tcx: TyCtxt<'_>, cnum: CrateNum) -> Option<(LocalDefId, EntryFnType)
6060
}
6161

6262
// If the user wants no main function at all, then stop here.
63-
if tcx.sess.contains_name(&tcx.hir().krate().item.attrs, sym::no_main) {
63+
if tcx.sess.contains_name(&tcx.hir().attrs(CRATE_HIR_ID), sym::no_main) {
6464
return None;
6565
}
6666

compiler/rustc_save_analysis/src/dump_visitor.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1118,6 +1118,7 @@ impl<'tcx> DumpVisitor<'tcx> {
11181118
.map(|i| id_from_def_id(i.def_id.to_def_id()))
11191119
.collect();
11201120
let span = self.span_from_span(krate.item.span);
1121+
let attrs = self.tcx.hir().attrs(id);
11211122

11221123
self.dumper.dump_def(
11231124
&Access { public: true, reachable: true },
@@ -1131,9 +1132,9 @@ impl<'tcx> DumpVisitor<'tcx> {
11311132
children,
11321133
parent: None,
11331134
decl_id: None,
1134-
docs: self.save_ctxt.docs_for_attrs(krate.item.attrs),
1135+
docs: self.save_ctxt.docs_for_attrs(attrs),
11351136
sig: None,
1136-
attributes: lower_attributes(krate.item.attrs.to_owned(), &self.save_ctxt),
1137+
attributes: lower_attributes(attrs.to_owned(), &self.save_ctxt),
11371138
},
11381139
);
11391140
intravisit::walk_crate(self, krate);

src/librustdoc/doctest.rs

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -106,25 +106,27 @@ crate fn run(options: Options) -> Result<(), ErrorReported> {
106106

107107
let tests = interface::run_compiler(config, |compiler| {
108108
compiler.enter(|queries| {
109-
let lower_to_hir = queries.lower_to_hir()?;
110-
111-
let mut opts = scrape_test_config(lower_to_hir.peek().0);
112-
opts.display_warnings |= options.display_warnings;
113-
let enable_per_target_ignores = options.enable_per_target_ignores;
114-
let mut collector = Collector::new(
115-
queries.crate_name()?.peek().to_string(),
116-
options,
117-
false,
118-
opts,
119-
Some(compiler.session().parse_sess.clone_source_map()),
120-
None,
121-
enable_per_target_ignores,
122-
);
109+
let _lower_to_hir = queries.lower_to_hir()?;
123110

111+
let crate_name = queries.crate_name()?.peek().to_string();
124112
let mut global_ctxt = queries.global_ctxt()?.take();
125113

126-
global_ctxt.enter(|tcx| {
114+
let collector = global_ctxt.enter(|tcx| {
127115
let krate = tcx.hir().krate();
116+
let crate_attrs = tcx.hir().attrs(CRATE_HIR_ID);
117+
118+
let mut opts = scrape_test_config(crate_attrs);
119+
opts.display_warnings |= options.display_warnings;
120+
let enable_per_target_ignores = options.enable_per_target_ignores;
121+
let mut collector = Collector::new(
122+
crate_name,
123+
options,
124+
false,
125+
opts,
126+
Some(compiler.session().parse_sess.clone_source_map()),
127+
None,
128+
enable_per_target_ignores,
129+
);
128130

129131
let mut hir_collector = HirCollector {
130132
sess: compiler.session(),
@@ -143,6 +145,8 @@ crate fn run(options: Options) -> Result<(), ErrorReported> {
143145
intravisit::walk_crate(this, krate);
144146
},
145147
);
148+
149+
collector
146150
});
147151
compiler.session().abort_if_errors();
148152

@@ -167,15 +171,13 @@ crate fn run(options: Options) -> Result<(), ErrorReported> {
167171
}
168172

169173
// Look for `#![doc(test(no_crate_inject))]`, used by crates in the std facade.
170-
fn scrape_test_config(krate: &::rustc_hir::Crate<'_>) -> TestOptions {
174+
fn scrape_test_config(attrs: &[ast::Attribute]) -> TestOptions {
171175
use rustc_ast_pretty::pprust;
172176

173177
let mut opts =
174178
TestOptions { no_crate_inject: false, display_warnings: false, attrs: Vec::new() };
175179

176-
let test_attrs: Vec<_> = krate
177-
.item
178-
.attrs
180+
let test_attrs: Vec<_> = attrs
179181
.iter()
180182
.filter(|a| a.has_name(sym::doc))
181183
.flat_map(|a| a.meta_item_list().unwrap_or_else(Vec::new))

0 commit comments

Comments
 (0)