Add listing of lints (eg via -W help) to rustdoc
This commit is contained in:
parent
d322385321
commit
4d23c8e9a1
5 changed files with 43 additions and 4 deletions
|
@ -845,7 +845,8 @@ the command line flag directly.
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn describe_lints(sess: &Session, lint_store: &LintStore, loaded_plugins: bool) {
|
/// Write to stdout lint command options, together with a list of all available lints
|
||||||
|
pub fn describe_lints(sess: &Session, lint_store: &LintStore, loaded_plugins: bool) {
|
||||||
println!(
|
println!(
|
||||||
"
|
"
|
||||||
Available lint options:
|
Available lint options:
|
||||||
|
|
|
@ -97,8 +97,7 @@ crate struct Options {
|
||||||
crate maybe_sysroot: Option<PathBuf>,
|
crate maybe_sysroot: Option<PathBuf>,
|
||||||
/// Lint information passed over the command-line.
|
/// Lint information passed over the command-line.
|
||||||
crate lint_opts: Vec<(String, Level)>,
|
crate lint_opts: Vec<(String, Level)>,
|
||||||
/// Whether to ask rustc to describe the lints it knows. Practically speaking, this will not be
|
/// Whether to ask rustc to describe the lints it knows.
|
||||||
/// used, since we abort if we have no input file, but it's included for completeness.
|
|
||||||
crate describe_lints: bool,
|
crate describe_lints: bool,
|
||||||
/// What level to cap lints at.
|
/// What level to cap lints at.
|
||||||
crate lint_cap: Option<Level>,
|
crate lint_cap: Option<Level>,
|
||||||
|
|
|
@ -74,7 +74,7 @@ use std::default::Default;
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::process;
|
use std::process;
|
||||||
|
|
||||||
use rustc_driver::abort_on_err;
|
use rustc_driver::{abort_on_err, describe_lints};
|
||||||
use rustc_errors::ErrorReported;
|
use rustc_errors::ErrorReported;
|
||||||
use rustc_interface::interface;
|
use rustc_interface::interface;
|
||||||
use rustc_middle::ty::TyCtxt;
|
use rustc_middle::ty::TyCtxt;
|
||||||
|
@ -705,6 +705,12 @@ fn main_options(options: config::Options) -> MainResult {
|
||||||
compiler.enter(|queries| {
|
compiler.enter(|queries| {
|
||||||
let sess = compiler.session();
|
let sess = compiler.session();
|
||||||
|
|
||||||
|
if sess.opts.describe_lints {
|
||||||
|
let (_, lint_store) = &*queries.register_plugins()?.peek();
|
||||||
|
describe_lints(sess, lint_store, true);
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
|
||||||
// We need to hold on to the complete resolver, so we cause everything to be
|
// We need to hold on to the complete resolver, so we cause everything to be
|
||||||
// cloned for the analysis passes to use. Suboptimal, but necessary in the
|
// cloned for the analysis passes to use. Suboptimal, but necessary in the
|
||||||
// current architecture.
|
// current architecture.
|
||||||
|
|
8
src/test/rustdoc-ui/issue-83883-describe-lints.rs
Normal file
8
src/test/rustdoc-ui/issue-83883-describe-lints.rs
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
// compile-flags: -W help
|
||||||
|
// check-pass
|
||||||
|
//
|
||||||
|
// ignore-tidy-linelength
|
||||||
|
//
|
||||||
|
// normalize-stdout-test: "( +name default meaning\n +---- ------- -------\n)?( *[[:word:]:-]+ (allow |warn |deny |forbid ) [^\n]+\n)+" -> " $$NAMES $$LEVELS $$MEANINGS"
|
||||||
|
// normalize-stdout-test: " +name sub-lints\n +---- ---------\n( *[[:word:]:-]+ [^\n]+\n)+" -> " $$NAMES $$SUB_LINTS"
|
||||||
|
// normalize-stdout-test: " +rustdoc::all( (rustdoc::[[:word:]-]+, )*rustdoc::[[:word:]-]+)?" -> " rustdoc::all $$GROUPS$4"
|
25
src/test/rustdoc-ui/issue-83883-describe-lints.stdout
Normal file
25
src/test/rustdoc-ui/issue-83883-describe-lints.stdout
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
Available lint options:
|
||||||
|
-W <foo> Warn about <foo>
|
||||||
|
-A <foo> Allow <foo>
|
||||||
|
-D <foo> Deny <foo>
|
||||||
|
-F <foo> Forbid <foo> (deny <foo> and all attempts to override)
|
||||||
|
|
||||||
|
|
||||||
|
Lint checks provided by rustc:
|
||||||
|
|
||||||
|
$NAMES $LEVELS $MEANINGS
|
||||||
|
|
||||||
|
Lint groups provided by rustc:
|
||||||
|
|
||||||
|
$NAMES $SUB_LINTS
|
||||||
|
|
||||||
|
Lint checks provided by plugins loaded by this crate:
|
||||||
|
|
||||||
|
$NAMES $LEVELS $MEANINGS
|
||||||
|
|
||||||
|
Lint groups provided by plugins loaded by this crate:
|
||||||
|
|
||||||
|
rustdoc::all $GROUPS
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue