mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-14 00:47:16 +00:00
add documentation to the span_lint_hir
functions
This commit is contained in:
parent
0b4b684b46
commit
fa4e3aac19
2 changed files with 40 additions and 2 deletions
|
@ -1,7 +1,7 @@
|
||||||
avoid-breaking-exported-api = false
|
avoid-breaking-exported-api = false
|
||||||
|
|
||||||
# use the various `span_lint_*` methods instead, which also add a link to the docs
|
# use the various `clippy_utils::diagnostics::span_lint_*` functions instead, which also add a link to the docs
|
||||||
disallowed-methods = [
|
disallowed-methods = [
|
||||||
"rustc_lint::context::LintContext::span_lint",
|
"rustc_lint::context::LintContext::span_lint",
|
||||||
"rustc_middle::ty::context::TyCtxt::node_span_lint"
|
"rustc_middle::ty::context::TyCtxt::node_span_lint",
|
||||||
]
|
]
|
||||||
|
|
|
@ -152,6 +152,25 @@ where
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Like [`span_lint`], but allows providing the `HirId` of the node that caused us to emit this
|
||||||
|
/// lint.
|
||||||
|
///
|
||||||
|
/// The `HirId` is used for checking lint level attributes.
|
||||||
|
///
|
||||||
|
/// For example:
|
||||||
|
/// ```ignore
|
||||||
|
/// fn f() { /* '1 */
|
||||||
|
///
|
||||||
|
/// #[allow(clippy::some_lint)]
|
||||||
|
/// let _x = /* '2 */;
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
|
/// If `some_lint` does its analysis in `LintPass::check_fn` (at `'1`) and emits a lint at `'2`
|
||||||
|
/// using [`span_lint`], then allowing the lint at `'2` as attempted in the snippet will not work!
|
||||||
|
/// Even though that is where the warning points at, which would be confusing to users.
|
||||||
|
///
|
||||||
|
/// Instead, use this function and also pass the `HirId` of the node at `'2`, which will let the
|
||||||
|
/// compiler check lint level attributes at `'2` as one would expect, and the `#[allow]` will work.
|
||||||
pub fn span_lint_hir(cx: &LateContext<'_>, lint: &'static Lint, hir_id: HirId, sp: Span, msg: &str) {
|
pub fn span_lint_hir(cx: &LateContext<'_>, lint: &'static Lint, hir_id: HirId, sp: Span, msg: &str) {
|
||||||
#[expect(clippy::disallowed_methods)]
|
#[expect(clippy::disallowed_methods)]
|
||||||
cx.tcx.node_span_lint(lint, hir_id, sp, msg.to_string(), |diag| {
|
cx.tcx.node_span_lint(lint, hir_id, sp, msg.to_string(), |diag| {
|
||||||
|
@ -159,6 +178,25 @@ pub fn span_lint_hir(cx: &LateContext<'_>, lint: &'static Lint, hir_id: HirId, s
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Like [`span_lint_and_then`], but allows providing the `HirId` of the node that caused us to emit
|
||||||
|
/// this lint.
|
||||||
|
///
|
||||||
|
/// The `HirId` is used for checking lint level attributes.
|
||||||
|
///
|
||||||
|
/// For example:
|
||||||
|
/// ```ignore
|
||||||
|
/// fn f() { /* '1 */
|
||||||
|
///
|
||||||
|
/// #[allow(clippy::some_lint)]
|
||||||
|
/// let _x = /* '2 */;
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
|
/// If `some_lint` does its analysis in `LintPass::check_fn` (at `'1`) and emits a lint at `'2`
|
||||||
|
/// using [`span_lint_and_then`], then allowing the lint at `'2` as attempted in the snippet will
|
||||||
|
/// not work! Even though that is where the warning points at, which would be confusing to users.
|
||||||
|
///
|
||||||
|
/// Instead, use this function and also pass the `HirId` of the node at `'2`, which will let the
|
||||||
|
/// compiler check lint level attributes at `'2` as one would expect, and the `#[allow]` will work.
|
||||||
pub fn span_lint_hir_and_then(
|
pub fn span_lint_hir_and_then(
|
||||||
cx: &LateContext<'_>,
|
cx: &LateContext<'_>,
|
||||||
lint: &'static Lint,
|
lint: &'static Lint,
|
||||||
|
|
Loading…
Reference in a new issue