mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-06 04:08:40 +00:00
Fix rustdoc run failures by shutting down definitely some lints
This commit is contained in:
parent
94eb176055
commit
1ff7f04120
@ -118,6 +118,11 @@ impl LintLevelSets {
|
|||||||
// Ensure that we never exceed the `--cap-lints` argument.
|
// Ensure that we never exceed the `--cap-lints` argument.
|
||||||
level = cmp::min(level, self.lint_cap);
|
level = cmp::min(level, self.lint_cap);
|
||||||
|
|
||||||
|
if let Some(driver_level) = sess.driver_lint_caps.get(&LintId::of(lint)) {
|
||||||
|
// Ensure that we never exceed driver level.
|
||||||
|
level = cmp::min(*driver_level, level);
|
||||||
|
}
|
||||||
|
|
||||||
return (level, src)
|
return (level, src)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ use middle::dependency_format;
|
|||||||
use session::search_paths::PathKind;
|
use session::search_paths::PathKind;
|
||||||
use session::config::{OutputType};
|
use session::config::{OutputType};
|
||||||
use ty::tls;
|
use ty::tls;
|
||||||
use util::nodemap::{FxHashSet};
|
use util::nodemap::{FxHashMap, FxHashSet};
|
||||||
use util::common::{duration_to_secs_str, ErrorReported};
|
use util::common::{duration_to_secs_str, ErrorReported};
|
||||||
use util::common::ProfileQueriesMsg;
|
use util::common::ProfileQueriesMsg;
|
||||||
|
|
||||||
@ -160,6 +160,9 @@ pub struct Session {
|
|||||||
|
|
||||||
/// Metadata about the allocators for the current crate being compiled
|
/// Metadata about the allocators for the current crate being compiled
|
||||||
pub has_global_allocator: Once<bool>,
|
pub has_global_allocator: Once<bool>,
|
||||||
|
|
||||||
|
/// Cap lint level specified by a driver specifically.
|
||||||
|
pub driver_lint_caps: FxHashMap<lint::LintId, lint::Level>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct PerfStats {
|
pub struct PerfStats {
|
||||||
@ -1164,6 +1167,7 @@ pub fn build_session_(
|
|||||||
(*GLOBAL_JOBSERVER).clone()
|
(*GLOBAL_JOBSERVER).clone()
|
||||||
},
|
},
|
||||||
has_global_allocator: Once::new(),
|
has_global_allocator: Once::new(),
|
||||||
|
driver_lint_caps: FxHashMap(),
|
||||||
};
|
};
|
||||||
|
|
||||||
sess
|
sess
|
||||||
|
@ -235,6 +235,14 @@ pub fn run_core(search_paths: SearchPaths,
|
|||||||
let mut sess = session::build_session_(
|
let mut sess = session::build_session_(
|
||||||
sessopts, cpath, diagnostic_handler, codemap,
|
sessopts, cpath, diagnostic_handler, codemap,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let shutdown_lints = [lint::builtin::UNUSED_IMPORTS,
|
||||||
|
lint::builtin::UNUSED_EXTERN_CRATES];
|
||||||
|
|
||||||
|
for l in &shutdown_lints {
|
||||||
|
sess.driver_lint_caps.insert(lint::LintId::of(l), lint::Allow);
|
||||||
|
}
|
||||||
|
|
||||||
let codegen_backend = rustc_driver::get_codegen_backend(&sess);
|
let codegen_backend = rustc_driver::get_codegen_backend(&sess);
|
||||||
let cstore = Rc::new(CStore::new(codegen_backend.metadata_loader()));
|
let cstore = Rc::new(CStore::new(codegen_backend.metadata_loader()));
|
||||||
rustc_lint::register_builtins(&mut sess.lint_store.borrow_mut(), Some(&sess));
|
rustc_lint::register_builtins(&mut sess.lint_store.borrow_mut(), Some(&sess));
|
||||||
@ -299,7 +307,6 @@ pub fn run_core(search_paths: SearchPaths,
|
|||||||
&sess);
|
&sess);
|
||||||
|
|
||||||
let resolver = RefCell::new(resolver);
|
let resolver = RefCell::new(resolver);
|
||||||
|
|
||||||
abort_on_err(driver::phase_3_run_analysis_passes(&*codegen_backend,
|
abort_on_err(driver::phase_3_run_analysis_passes(&*codegen_backend,
|
||||||
control,
|
control,
|
||||||
&sess,
|
&sess,
|
||||||
|
24
src/test/rustdoc-ui/unused.rs
Normal file
24
src/test/rustdoc-ui/unused.rs
Normal file
@ -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.
|
||||||
|
|
||||||
|
// compile-pass
|
||||||
|
|
||||||
|
// This test purpose is to check that unused_imports lint isn't fired
|
||||||
|
// by rustdoc. Why would it? Because when rustdoc is running, it uses
|
||||||
|
// "everybody-loops" which replaces parts of code with "loop {}" to get
|
||||||
|
// huge performance improvements.
|
||||||
|
|
||||||
|
#![deny(unused_imports)]
|
||||||
|
|
||||||
|
use std::fs::File;
|
||||||
|
|
||||||
|
pub fn f() {
|
||||||
|
let _: File;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user