Skip to content

Commit 9c86ce7

Browse files
committed
resolve: Turn resolve_error into a method on Resolver
Rename it to `report_error` and move into `diagnostics.rs` Also turn `check_unused` into a method on `Resolver`
1 parent 6a347f3 commit 9c86ce7

File tree

7 files changed

+411
-422
lines changed

7 files changed

+411
-422
lines changed

src/librustc_resolve/build_reduced_graph.rs

+6-7
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use crate::resolve_imports::ImportDirectiveSubclass::{self, GlobImport, SingleIm
99
use crate::{Module, ModuleData, ModuleKind, NameBinding, NameBindingKind, Segment, ToNameBinding};
1010
use crate::{ModuleOrUniformRoot, ParentScope, PerNS, Resolver, ResolverArenas, ExternPreludeEntry};
1111
use crate::Namespace::{self, TypeNS, ValueNS, MacroNS};
12-
use crate::{resolve_error, resolve_struct_error, ResolutionError, Determinacy};
12+
use crate::{ResolutionError, Determinacy};
1313

1414
use rustc::bug;
1515
use rustc::hir::def::{self, *};
@@ -165,8 +165,7 @@ impl<'a> BuildReducedGraphVisitor<'_, 'a> {
165165
type_ns_only = true;
166166

167167
if empty_for_self(&module_path) {
168-
resolve_error(
169-
&self.r,
168+
self.r.report_error(
170169
use_tree.span,
171170
ResolutionError::
172171
SelfImportOnlyInImportListWithNonEmptyPrefix
@@ -183,9 +182,9 @@ impl<'a> BuildReducedGraphVisitor<'_, 'a> {
183182
} else {
184183
// Disallow `self`
185184
if source.ident.name == kw::SelfLower {
186-
resolve_error(&self.r,
187-
use_tree.span,
188-
ResolutionError::SelfImportsOnlyAllowedWithin);
185+
self.r.report_error(
186+
use_tree.span, ResolutionError::SelfImportsOnlyAllowedWithin
187+
);
189188
}
190189

191190
// Disallow `use $crate;`
@@ -283,7 +282,7 @@ impl<'a> BuildReducedGraphVisitor<'_, 'a> {
283282
None
284283
}).collect::<Vec<_>>();
285284
if self_spans.len() > 1 {
286-
let mut e = resolve_struct_error(&self.r,
285+
let mut e = self.r.into_struct_error(
287286
self_spans[0],
288287
ResolutionError::SelfImportCanOnlyAppearOnceInTheList);
289288

src/librustc_resolve/check_unused.rs

+87-85
Original file line numberDiff line numberDiff line change
@@ -221,100 +221,102 @@ fn calc_unused_spans(
221221
}
222222
}
223223

224-
pub fn check_crate(resolver: &mut Resolver<'_>, krate: &ast::Crate) {
225-
for directive in resolver.potentially_unused_imports.iter() {
226-
match directive.subclass {
227-
_ if directive.used.get() ||
228-
directive.vis.get() == ty::Visibility::Public ||
229-
directive.span.is_dummy() => {
230-
if let ImportDirectiveSubclass::MacroUse = directive.subclass {
231-
if !directive.span.is_dummy() {
232-
resolver.session.buffer_lint(
233-
lint::builtin::MACRO_USE_EXTERN_CRATE,
234-
directive.id,
235-
directive.span,
236-
"deprecated `#[macro_use]` directive used to \
237-
import macros should be replaced at use sites \
238-
with a `use` statement to import the macro \
239-
instead",
240-
);
224+
impl Resolver<'_> {
225+
crate fn check_unused(&mut self, krate: &ast::Crate) {
226+
for directive in self.potentially_unused_imports.iter() {
227+
match directive.subclass {
228+
_ if directive.used.get() ||
229+
directive.vis.get() == ty::Visibility::Public ||
230+
directive.span.is_dummy() => {
231+
if let ImportDirectiveSubclass::MacroUse = directive.subclass {
232+
if !directive.span.is_dummy() {
233+
self.session.buffer_lint(
234+
lint::builtin::MACRO_USE_EXTERN_CRATE,
235+
directive.id,
236+
directive.span,
237+
"deprecated `#[macro_use]` directive used to \
238+
import macros should be replaced at use sites \
239+
with a `use` statement to import the macro \
240+
instead",
241+
);
242+
}
241243
}
242244
}
245+
ImportDirectiveSubclass::ExternCrate { .. } => {
246+
self.maybe_unused_extern_crates.push((directive.id, directive.span));
247+
}
248+
ImportDirectiveSubclass::MacroUse => {
249+
let lint = lint::builtin::UNUSED_IMPORTS;
250+
let msg = "unused `#[macro_use]` import";
251+
self.session.buffer_lint(lint, directive.id, directive.span, msg);
252+
}
253+
_ => {}
243254
}
244-
ImportDirectiveSubclass::ExternCrate { .. } => {
245-
resolver.maybe_unused_extern_crates.push((directive.id, directive.span));
246-
}
247-
ImportDirectiveSubclass::MacroUse => {
248-
let lint = lint::builtin::UNUSED_IMPORTS;
249-
let msg = "unused `#[macro_use]` import";
250-
resolver.session.buffer_lint(lint, directive.id, directive.span, msg);
251-
}
252-
_ => {}
253255
}
254-
}
255256

256-
let mut visitor = UnusedImportCheckVisitor {
257-
r: resolver,
258-
unused_imports: Default::default(),
259-
base_use_tree: None,
260-
base_id: ast::DUMMY_NODE_ID,
261-
item_span: DUMMY_SP,
262-
};
263-
visit::walk_crate(&mut visitor, krate);
264-
265-
for unused in visitor.unused_imports.values() {
266-
let mut fixes = Vec::new();
267-
let mut spans = match calc_unused_spans(unused, unused.use_tree, unused.use_tree_id) {
268-
UnusedSpanResult::Used => continue,
269-
UnusedSpanResult::FlatUnused(span, remove) => {
270-
fixes.push((remove, String::new()));
271-
vec![span]
272-
}
273-
UnusedSpanResult::NestedFullUnused(spans, remove) => {
274-
fixes.push((remove, String::new()));
275-
spans
276-
}
277-
UnusedSpanResult::NestedPartialUnused(spans, remove) => {
278-
for fix in &remove {
279-
fixes.push((*fix, String::new()));
280-
}
281-
spans
282-
}
257+
let mut visitor = UnusedImportCheckVisitor {
258+
r: self,
259+
unused_imports: Default::default(),
260+
base_use_tree: None,
261+
base_id: ast::DUMMY_NODE_ID,
262+
item_span: DUMMY_SP,
283263
};
264+
visit::walk_crate(&mut visitor, krate);
284265

285-
let len = spans.len();
286-
spans.sort();
287-
let ms = MultiSpan::from_spans(spans.clone());
288-
let mut span_snippets = spans.iter()
289-
.filter_map(|s| {
290-
match visitor.r.session.source_map().span_to_snippet(*s) {
291-
Ok(s) => Some(format!("`{}`", s)),
292-
_ => None,
266+
for unused in visitor.unused_imports.values() {
267+
let mut fixes = Vec::new();
268+
let mut spans = match calc_unused_spans(unused, unused.use_tree, unused.use_tree_id) {
269+
UnusedSpanResult::Used => continue,
270+
UnusedSpanResult::FlatUnused(span, remove) => {
271+
fixes.push((remove, String::new()));
272+
vec![span]
273+
}
274+
UnusedSpanResult::NestedFullUnused(spans, remove) => {
275+
fixes.push((remove, String::new()));
276+
spans
293277
}
294-
}).collect::<Vec<String>>();
295-
span_snippets.sort();
296-
let msg = format!("unused import{}{}",
297-
if len > 1 { "s" } else { "" },
298-
if !span_snippets.is_empty() {
299-
format!(": {}", span_snippets.join(", "))
300-
} else {
301-
String::new()
302-
});
278+
UnusedSpanResult::NestedPartialUnused(spans, remove) => {
279+
for fix in &remove {
280+
fixes.push((*fix, String::new()));
281+
}
282+
spans
283+
}
284+
};
303285

304-
let fix_msg = if fixes.len() == 1 && fixes[0].0 == unused.item_span {
305-
"remove the whole `use` item"
306-
} else if spans.len() > 1 {
307-
"remove the unused imports"
308-
} else {
309-
"remove the unused import"
310-
};
286+
let len = spans.len();
287+
spans.sort();
288+
let ms = MultiSpan::from_spans(spans.clone());
289+
let mut span_snippets = spans.iter()
290+
.filter_map(|s| {
291+
match visitor.r.session.source_map().span_to_snippet(*s) {
292+
Ok(s) => Some(format!("`{}`", s)),
293+
_ => None,
294+
}
295+
}).collect::<Vec<String>>();
296+
span_snippets.sort();
297+
let msg = format!("unused import{}{}",
298+
if len > 1 { "s" } else { "" },
299+
if !span_snippets.is_empty() {
300+
format!(": {}", span_snippets.join(", "))
301+
} else {
302+
String::new()
303+
});
311304

312-
visitor.r.session.buffer_lint_with_diagnostic(
313-
lint::builtin::UNUSED_IMPORTS,
314-
unused.use_tree_id,
315-
ms,
316-
&msg,
317-
lint::builtin::BuiltinLintDiagnostics::UnusedImports(fix_msg.into(), fixes),
318-
);
305+
let fix_msg = if fixes.len() == 1 && fixes[0].0 == unused.item_span {
306+
"remove the whole `use` item"
307+
} else if spans.len() > 1 {
308+
"remove the unused imports"
309+
} else {
310+
"remove the unused import"
311+
};
312+
313+
visitor.r.session.buffer_lint_with_diagnostic(
314+
lint::builtin::UNUSED_IMPORTS,
315+
unused.use_tree_id,
316+
ms,
317+
&msg,
318+
lint::builtin::BuiltinLintDiagnostics::UnusedImports(fix_msg.into(), fixes),
319+
);
320+
}
319321
}
320322
}

0 commit comments

Comments
 (0)