Rename automatic_links to url_improvements
This commit is contained in:
parent
55b4d21e25
commit
60caf51b0d
@ -67,9 +67,9 @@ use rustc_hir::def_id::LocalDefId;
|
|||||||
use rustc_middle::ty::query::Providers;
|
use rustc_middle::ty::query::Providers;
|
||||||
use rustc_middle::ty::TyCtxt;
|
use rustc_middle::ty::TyCtxt;
|
||||||
use rustc_session::lint::builtin::{
|
use rustc_session::lint::builtin::{
|
||||||
AUTOMATIC_LINKS, BARE_TRAIT_OBJECTS, BROKEN_INTRA_DOC_LINKS, ELIDED_LIFETIMES_IN_PATHS,
|
BARE_TRAIT_OBJECTS, BROKEN_INTRA_DOC_LINKS, ELIDED_LIFETIMES_IN_PATHS,
|
||||||
EXPLICIT_OUTLIVES_REQUIREMENTS, INVALID_CODEBLOCK_ATTRIBUTES, INVALID_HTML_TAGS,
|
EXPLICIT_OUTLIVES_REQUIREMENTS, INVALID_CODEBLOCK_ATTRIBUTES, INVALID_HTML_TAGS,
|
||||||
MISSING_DOC_CODE_EXAMPLES, PRIVATE_DOC_TESTS,
|
MISSING_DOC_CODE_EXAMPLES, PRIVATE_DOC_TESTS, URL_IMPROVEMENTS,
|
||||||
};
|
};
|
||||||
use rustc_span::symbol::{Ident, Symbol};
|
use rustc_span::symbol::{Ident, Symbol};
|
||||||
use rustc_span::Span;
|
use rustc_span::Span;
|
||||||
@ -313,7 +313,7 @@ fn register_builtins(store: &mut LintStore, no_interleave_lints: bool) {
|
|||||||
|
|
||||||
add_lint_group!(
|
add_lint_group!(
|
||||||
"rustdoc",
|
"rustdoc",
|
||||||
AUTOMATIC_LINKS,
|
URL_IMPROVEMENTS,
|
||||||
BROKEN_INTRA_DOC_LINKS,
|
BROKEN_INTRA_DOC_LINKS,
|
||||||
PRIVATE_INTRA_DOC_LINKS,
|
PRIVATE_INTRA_DOC_LINKS,
|
||||||
INVALID_CODEBLOCK_ATTRIBUTES,
|
INVALID_CODEBLOCK_ATTRIBUTES,
|
||||||
|
@ -1891,12 +1891,12 @@ declare_lint! {
|
|||||||
}
|
}
|
||||||
|
|
||||||
declare_lint! {
|
declare_lint! {
|
||||||
/// The `automatic_links` lint detects when a URL could be written using
|
/// The `url_improvements` lint detects when a URL could be written using
|
||||||
/// only angle brackets. This is a `rustdoc` only lint, see the
|
/// only angle brackets. This is a `rustdoc` only lint, see the
|
||||||
/// documentation in the [rustdoc book].
|
/// documentation in the [rustdoc book].
|
||||||
///
|
///
|
||||||
/// [rustdoc book]: ../../../rustdoc/lints.html#automatic_links
|
/// [rustdoc book]: ../../../rustdoc/lints.html#url_improvements
|
||||||
pub AUTOMATIC_LINKS,
|
pub URL_IMPROVEMENTS,
|
||||||
Warn,
|
Warn,
|
||||||
"detects URLs that could be written using only angle brackets"
|
"detects URLs that could be written using only angle brackets"
|
||||||
}
|
}
|
||||||
@ -2806,7 +2806,7 @@ declare_lint_pass! {
|
|||||||
MISSING_DOC_CODE_EXAMPLES,
|
MISSING_DOC_CODE_EXAMPLES,
|
||||||
INVALID_HTML_TAGS,
|
INVALID_HTML_TAGS,
|
||||||
PRIVATE_DOC_TESTS,
|
PRIVATE_DOC_TESTS,
|
||||||
AUTOMATIC_LINKS,
|
URL_IMPROVEMENTS,
|
||||||
WHERE_CLAUSES_OBJECT_SAFETY,
|
WHERE_CLAUSES_OBJECT_SAFETY,
|
||||||
PROC_MACRO_DERIVE_RESOLUTION_FALLBACK,
|
PROC_MACRO_DERIVE_RESOLUTION_FALLBACK,
|
||||||
MACRO_USE_EXTERN_CRATE,
|
MACRO_USE_EXTERN_CRATE,
|
||||||
|
@ -287,7 +287,7 @@ pub mod primitive;
|
|||||||
unused_imports,
|
unused_imports,
|
||||||
unsafe_op_in_unsafe_fn
|
unsafe_op_in_unsafe_fn
|
||||||
)]
|
)]
|
||||||
#[cfg_attr(not(bootstrap), allow(automatic_links))]
|
#[cfg_attr(not(bootstrap), allow(url_improvements))]
|
||||||
// FIXME: This annotation should be moved into rust-lang/stdarch after clashing_extern_declarations is
|
// FIXME: This annotation should be moved into rust-lang/stdarch after clashing_extern_declarations is
|
||||||
// merged. It currently cannot because bootstrap fails as the lint hasn't been defined yet.
|
// merged. It currently cannot because bootstrap fails as the lint hasn't been defined yet.
|
||||||
#[allow(clashing_extern_declarations)]
|
#[allow(clashing_extern_declarations)]
|
||||||
|
@ -286,7 +286,7 @@ warning: unclosed HTML tag `h1`
|
|||||||
warning: 2 warnings emitted
|
warning: 2 warnings emitted
|
||||||
```
|
```
|
||||||
|
|
||||||
## automatic_links
|
## url_improvements
|
||||||
|
|
||||||
This lint is **nightly-only** and **warns by default**. It detects links which
|
This lint is **nightly-only** and **warns by default**. It detects links which
|
||||||
could use the "automatic" link syntax. For example:
|
could use the "automatic" link syntax. For example:
|
||||||
|
@ -330,13 +330,12 @@ pub fn run_core(
|
|||||||
let invalid_codeblock_attributes_name = rustc_lint::builtin::INVALID_CODEBLOCK_ATTRIBUTES.name;
|
let invalid_codeblock_attributes_name = rustc_lint::builtin::INVALID_CODEBLOCK_ATTRIBUTES.name;
|
||||||
let invalid_html_tags = rustc_lint::builtin::INVALID_HTML_TAGS.name;
|
let invalid_html_tags = rustc_lint::builtin::INVALID_HTML_TAGS.name;
|
||||||
let renamed_and_removed_lints = rustc_lint::builtin::RENAMED_AND_REMOVED_LINTS.name;
|
let renamed_and_removed_lints = rustc_lint::builtin::RENAMED_AND_REMOVED_LINTS.name;
|
||||||
let automatic_links = rustc_lint::builtin::AUTOMATIC_LINKS.name;
|
let url_improvements = rustc_lint::builtin::URL_IMPROVEMENTS.name;
|
||||||
let unknown_lints = rustc_lint::builtin::UNKNOWN_LINTS.name;
|
let unknown_lints = rustc_lint::builtin::UNKNOWN_LINTS.name;
|
||||||
|
|
||||||
// In addition to those specific lints, we also need to allow those given through
|
// In addition to those specific lints, we also need to allow those given through
|
||||||
// command line, otherwise they'll get ignored and we don't want that.
|
// command line, otherwise they'll get ignored and we don't want that.
|
||||||
let lints_to_show = vec![
|
let lints_to_show = vec![
|
||||||
automatic_links.to_owned(),
|
|
||||||
intra_link_resolution_failure_name.to_owned(),
|
intra_link_resolution_failure_name.to_owned(),
|
||||||
missing_docs.to_owned(),
|
missing_docs.to_owned(),
|
||||||
missing_doc_example.to_owned(),
|
missing_doc_example.to_owned(),
|
||||||
@ -346,6 +345,7 @@ pub fn run_core(
|
|||||||
invalid_html_tags.to_owned(),
|
invalid_html_tags.to_owned(),
|
||||||
renamed_and_removed_lints.to_owned(),
|
renamed_and_removed_lints.to_owned(),
|
||||||
unknown_lints.to_owned(),
|
unknown_lints.to_owned(),
|
||||||
|
url_improvements.to_owned(),
|
||||||
];
|
];
|
||||||
|
|
||||||
let (lint_opts, lint_caps) = init_lints(lints_to_show, lint_opts, |lint| {
|
let (lint_opts, lint_caps) = init_lints(lints_to_show, lint_opts, |lint| {
|
||||||
|
@ -11,8 +11,8 @@ use crate::core::DocContext;
|
|||||||
mod stripper;
|
mod stripper;
|
||||||
pub use stripper::*;
|
pub use stripper::*;
|
||||||
|
|
||||||
mod automatic_links;
|
mod url_improvements;
|
||||||
pub use self::automatic_links::CHECK_AUTOMATIC_LINKS;
|
pub use self::url_improvements::CHECK_URL_IMPROVEMENTS;
|
||||||
|
|
||||||
mod collapse_docs;
|
mod collapse_docs;
|
||||||
pub use self::collapse_docs::COLLAPSE_DOCS;
|
pub use self::collapse_docs::COLLAPSE_DOCS;
|
||||||
@ -93,7 +93,7 @@ pub const PASSES: &[Pass] = &[
|
|||||||
COLLECT_TRAIT_IMPLS,
|
COLLECT_TRAIT_IMPLS,
|
||||||
CALCULATE_DOC_COVERAGE,
|
CALCULATE_DOC_COVERAGE,
|
||||||
CHECK_INVALID_HTML_TAGS,
|
CHECK_INVALID_HTML_TAGS,
|
||||||
CHECK_AUTOMATIC_LINKS,
|
CHECK_URL_IMPROVEMENTS,
|
||||||
];
|
];
|
||||||
|
|
||||||
/// The list of passes run by default.
|
/// The list of passes run by default.
|
||||||
@ -109,7 +109,7 @@ pub const DEFAULT_PASSES: &[ConditionalPass] = &[
|
|||||||
ConditionalPass::always(CHECK_CODE_BLOCK_SYNTAX),
|
ConditionalPass::always(CHECK_CODE_BLOCK_SYNTAX),
|
||||||
ConditionalPass::always(CHECK_INVALID_HTML_TAGS),
|
ConditionalPass::always(CHECK_INVALID_HTML_TAGS),
|
||||||
ConditionalPass::always(PROPAGATE_DOC_CFG),
|
ConditionalPass::always(PROPAGATE_DOC_CFG),
|
||||||
ConditionalPass::always(CHECK_AUTOMATIC_LINKS),
|
ConditionalPass::always(CHECK_URL_IMPROVEMENTS),
|
||||||
];
|
];
|
||||||
|
|
||||||
/// The list of default passes run when `--doc-coverage` is passed to rustdoc.
|
/// The list of default passes run when `--doc-coverage` is passed to rustdoc.
|
||||||
|
@ -10,9 +10,9 @@ use rustc_errors::Applicability;
|
|||||||
use rustc_feature::UnstableFeatures;
|
use rustc_feature::UnstableFeatures;
|
||||||
use rustc_session::lint;
|
use rustc_session::lint;
|
||||||
|
|
||||||
pub const CHECK_AUTOMATIC_LINKS: Pass = Pass {
|
pub const CHECK_URL_IMPROVEMENTS: Pass = Pass {
|
||||||
name: "check-automatic-links",
|
name: "check-url-improvements",
|
||||||
run: check_automatic_links,
|
run: check_url_improvements,
|
||||||
description: "detects URLS that could be written using angle brackets",
|
description: "detects URLS that could be written using angle brackets",
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -23,14 +23,14 @@ const URL_REGEX: &str = concat!(
|
|||||||
r"\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)" // optional query or url fragments
|
r"\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)" // optional query or url fragments
|
||||||
);
|
);
|
||||||
|
|
||||||
struct AutomaticLinksLinter<'a, 'tcx> {
|
struct UrlImprovementsLinter<'a, 'tcx> {
|
||||||
cx: &'a DocContext<'tcx>,
|
cx: &'a DocContext<'tcx>,
|
||||||
regex: Regex,
|
regex: Regex,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, 'tcx> AutomaticLinksLinter<'a, 'tcx> {
|
impl<'a, 'tcx> UrlImprovementsLinter<'a, 'tcx> {
|
||||||
fn new(cx: &'a DocContext<'tcx>) -> Self {
|
fn new(cx: &'a DocContext<'tcx>) -> Self {
|
||||||
AutomaticLinksLinter { cx, regex: Regex::new(URL_REGEX).expect("failed to build regex") }
|
UrlImprovementsLinter { cx, regex: Regex::new(URL_REGEX).expect("failed to build regex") }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn find_raw_urls(
|
fn find_raw_urls(
|
||||||
@ -53,17 +53,17 @@ impl<'a, 'tcx> AutomaticLinksLinter<'a, 'tcx> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn check_automatic_links(krate: Crate, cx: &DocContext<'_>) -> Crate {
|
pub fn check_url_improvements(krate: Crate, cx: &DocContext<'_>) -> Crate {
|
||||||
if !UnstableFeatures::from_environment().is_nightly_build() {
|
if !UnstableFeatures::from_environment().is_nightly_build() {
|
||||||
krate
|
krate
|
||||||
} else {
|
} else {
|
||||||
let mut coll = AutomaticLinksLinter::new(cx);
|
let mut coll = UrlImprovementsLinter::new(cx);
|
||||||
|
|
||||||
coll.fold_crate(krate)
|
coll.fold_crate(krate)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, 'tcx> DocFolder for AutomaticLinksLinter<'a, 'tcx> {
|
impl<'a, 'tcx> DocFolder for UrlImprovementsLinter<'a, 'tcx> {
|
||||||
fn fold_item(&mut self, item: Item) -> Option<Item> {
|
fn fold_item(&mut self, item: Item) -> Option<Item> {
|
||||||
let hir_id = match self.cx.as_local_hir_id(item.def_id) {
|
let hir_id = match self.cx.as_local_hir_id(item.def_id) {
|
||||||
Some(hir_id) => hir_id,
|
Some(hir_id) => hir_id,
|
||||||
@ -78,7 +78,7 @@ impl<'a, 'tcx> DocFolder for AutomaticLinksLinter<'a, 'tcx> {
|
|||||||
let sp = super::source_span_for_markdown_range(cx, &dox, &range, &item.attrs)
|
let sp = super::source_span_for_markdown_range(cx, &dox, &range, &item.attrs)
|
||||||
.or_else(|| span_of_attrs(&item.attrs))
|
.or_else(|| span_of_attrs(&item.attrs))
|
||||||
.unwrap_or(item.source.span());
|
.unwrap_or(item.source.span());
|
||||||
cx.tcx.struct_span_lint_hir(lint::builtin::AUTOMATIC_LINKS, hir_id, sp, |lint| {
|
cx.tcx.struct_span_lint_hir(lint::builtin::URL_IMPROVEMENTS, hir_id, sp, |lint| {
|
||||||
lint.build(msg)
|
lint.build(msg)
|
||||||
.span_suggestion(
|
.span_suggestion(
|
||||||
sp,
|
sp,
|
@ -1,4 +1,4 @@
|
|||||||
#![deny(automatic_links)]
|
#![deny(url_improvements)]
|
||||||
|
|
||||||
/// [http://a.com](http://a.com)
|
/// [http://a.com](http://a.com)
|
||||||
//~^ ERROR unneeded long form for URL
|
//~^ ERROR unneeded long form for URL
|
||||||
@ -53,7 +53,7 @@ pub fn c() {}
|
|||||||
/// [b]: http://b.com
|
/// [b]: http://b.com
|
||||||
pub fn everything_is_fine_here() {}
|
pub fn everything_is_fine_here() {}
|
||||||
|
|
||||||
#[allow(automatic_links)]
|
#[allow(url_improvements)]
|
||||||
pub mod foo {
|
pub mod foo {
|
||||||
/// https://somewhere.com/a?hello=12&bye=11#xyz
|
/// https://somewhere.com/a?hello=12&bye=11#xyz
|
||||||
pub fn bar() {}
|
pub fn bar() {}
|
@ -7,8 +7,8 @@ LL | /// [http://a.com](http://a.com)
|
|||||||
note: the lint level is defined here
|
note: the lint level is defined here
|
||||||
--> $DIR/automatic-links.rs:1:9
|
--> $DIR/automatic-links.rs:1:9
|
||||||
|
|
|
|
||||||
LL | #![deny(automatic_links)]
|
LL | #![deny(url_improvements)]
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: unneeded long form for URL
|
error: unneeded long form for URL
|
||||||
--> $DIR/automatic-links.rs:5:5
|
--> $DIR/automatic-links.rs:5:5
|
Loading…
x
Reference in New Issue
Block a user