mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-28 02:57:37 +00:00
Rollup merge of #54488 - zackmdavis:and_the_case_of_the_unused_crate, r=estebank
in which we include attributes in unused `extern crate` suggestion spans  Resolves #54400. r? @estebank
This commit is contained in:
commit
b18821201f
@ -138,9 +138,15 @@ fn unused_crates_lint<'tcx>(tcx: TyCtxt<'_, 'tcx, 'tcx>) {
|
||||
if extern_crate.warn_if_unused {
|
||||
if let Some(&span) = unused_extern_crates.get(&extern_crate.def_id) {
|
||||
let msg = "unused extern crate";
|
||||
|
||||
// Removal suggestion span needs to include attributes (Issue #54400)
|
||||
let span_with_attrs = tcx.get_attrs(extern_crate.def_id).iter()
|
||||
.map(|attr| attr.span)
|
||||
.fold(span, |acc, attr_span| acc.to(attr_span));
|
||||
|
||||
tcx.struct_span_lint_node(lint, id, span, msg)
|
||||
.span_suggestion_short_with_applicability(
|
||||
span,
|
||||
span_with_attrs,
|
||||
"remove it",
|
||||
String::new(),
|
||||
Applicability::MachineApplicable)
|
||||
|
@ -0,0 +1,24 @@
|
||||
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// aux-build:edition-lint-paths.rs
|
||||
// run-rustfix
|
||||
// compile-flags:--extern edition_lint_paths --cfg blandiloquence
|
||||
// edition:2018
|
||||
|
||||
#![deny(rust_2018_idioms)]
|
||||
#![allow(dead_code)]
|
||||
|
||||
// The suggestion span should include the attribute.
|
||||
|
||||
|
||||
//~^ ERROR unused extern crate
|
||||
|
||||
fn main() {}
|
@ -0,0 +1,25 @@
|
||||
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// aux-build:edition-lint-paths.rs
|
||||
// run-rustfix
|
||||
// compile-flags:--extern edition_lint_paths --cfg blandiloquence
|
||||
// edition:2018
|
||||
|
||||
#![deny(rust_2018_idioms)]
|
||||
#![allow(dead_code)]
|
||||
|
||||
// The suggestion span should include the attribute.
|
||||
|
||||
#[cfg(blandiloquence)] //~ HELP remove it
|
||||
extern crate edition_lint_paths;
|
||||
//~^ ERROR unused extern crate
|
||||
|
||||
fn main() {}
|
@ -0,0 +1,18 @@
|
||||
error: unused extern crate
|
||||
--> $DIR/issue-54400-unused-extern-crate-attr-span.rs:22:1
|
||||
|
|
||||
LL | / #[cfg(blandiloquence)] //~ HELP remove it
|
||||
LL | | extern crate edition_lint_paths;
|
||||
| | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
|
||||
| |________________________________|
|
||||
| help: remove it
|
||||
|
|
||||
note: lint level defined here
|
||||
--> $DIR/issue-54400-unused-extern-crate-attr-span.rs:16:9
|
||||
|
|
||||
LL | #![deny(rust_2018_idioms)]
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
= note: #[deny(unused_extern_crates)] implied by #[deny(rust_2018_idioms)]
|
||||
|
||||
error: aborting due to previous error
|
||||
|
Loading…
Reference in New Issue
Block a user