//! Clippy.
use crate::lints::{
- BadOptAccessDiag, DefaultHashTypesDiag, DiagOutOfImpl, LintPassByHand, NonExistantDocKeyword,
+ BadOptAccessDiag, DefaultHashTypesDiag, DiagOutOfImpl, LintPassByHand, NonExistentDocKeyword,
QueryInstability, TyQualified, TykindDiag, TykindKind, UntranslatableDiag,
};
use crate::{EarlyContext, EarlyLintPass, LateContext, LateLintPass, LintContext};
use rustc_span::Span;
declare_tool_lint! {
+ /// The `default_hash_type` lint detects use of [`std::collections::HashMap`]/[`std::collections::HashSet`],
+ /// suggesting the use of `FxHashMap`/`FxHashSet`.
+ ///
+ /// This can help as `FxHasher` can perform better than the default hasher. DOS protection is not
+ /// required as input is assumed to be trusted.
pub rustc::DEFAULT_HASH_TYPES,
Allow,
"forbid HashMap and HashSet and suggest the FxHash* variants",
}
declare_tool_lint! {
+ /// The `potential_query_instability` lint detects use of methods which can lead to
+ /// potential query instability, such as iterating over a `HashMap`.
+ ///
+ /// Due to the [incremental compilation](https://rustc-dev-guide.rust-lang.org/queries/incremental-compilation.html) model,
+ /// queries must return deterministic, stable results. `HashMap` iteration order can change between compilations,
+ /// and will introduce instability if query results expose the order.
pub rustc::POTENTIAL_QUERY_INSTABILITY,
Allow,
"require explicit opt-in when using potentially unstable methods or functions",
}
declare_tool_lint! {
+ /// The `usage_of_ty_tykind` lint detects usages of `ty::TyKind::<kind>`,
+ /// where `ty::<kind>` would suffice.
pub rustc::USAGE_OF_TY_TYKIND,
Allow,
"usage of `ty::TyKind` outside of the `ty::sty` module",
}
declare_tool_lint! {
+ /// The `usage_of_qualified_ty` lint detects usages of `ty::TyKind`,
+ /// where `Ty` should be used instead.
pub rustc::USAGE_OF_QUALIFIED_TY,
Allow,
"using `ty::{Ty,TyCtxt}` instead of importing it",
}
declare_tool_lint! {
+ /// The `lint_pass_impl_without_macro` detects manual implementations of a lint
+ /// pass, without using [`declare_lint_pass`] or [`impl_lint_pass`].
pub rustc::LINT_PASS_IMPL_WITHOUT_MACRO,
Allow,
"`impl LintPass` without the `declare_lint_pass!` or `impl_lint_pass!` macros"
}
declare_tool_lint! {
+ /// The `existing_doc_keyword` lint detects use `#[doc()]` keywords
+ /// that don't exist, e.g. `#[doc(keyword = "..")]`.
pub rustc::EXISTING_DOC_KEYWORD,
Allow,
"Check that documented keywords in std and core actually exist",
cx.emit_spanned_lint(
EXISTING_DOC_KEYWORD,
attr.span,
- NonExistantDocKeyword { keyword },
+ NonExistentDocKeyword { keyword },
);
}
}
}
declare_tool_lint! {
+ /// The `untranslatable_diagnostic` lint detects diagnostics created
+ /// without using translatable Fluent strings.
+ ///
+ /// More details on translatable diagnostics can be found [here](https://rustc-dev-guide.rust-lang.org/diagnostics/translation.html).
pub rustc::UNTRANSLATABLE_DIAGNOSTIC,
Allow,
"prevent creation of diagnostics which cannot be translated",
}
declare_tool_lint! {
+ /// The `diagnostic_outside_of_impl` lint detects diagnostics created manually,
+ /// and inside an `IntoDiagnostic`/`AddToDiagnostic` implementation,
+ /// or a `#[derive(Diagnostic)]`/`#[derive(Subdiagnostic)]` expansion.
+ ///
+ /// More details on diagnostics implementations can be found [here](https://rustc-dev-guide.rust-lang.org/diagnostics/diagnostic-structs.html).
pub rustc::DIAGNOSTIC_OUTSIDE_OF_IMPL,
Allow,
"prevent creation of diagnostics outside of `IntoDiagnostic`/`AddToDiagnostic` impls",
for (hir_id, parent) in cx.tcx.hir().parent_iter(expr.hir_id) {
if let Some(owner_did) = hir_id.as_owner() {
found_parent_with_attr = found_parent_with_attr
- || cx.tcx.has_attr(owner_did.to_def_id(), sym::rustc_lint_diagnostics);
+ || cx.tcx.has_attr(owner_did, sym::rustc_lint_diagnostics);
}
debug!(?parent);
}
declare_tool_lint! {
+ /// The `bad_opt_access` lint detects accessing options by field instead of
+ /// the wrapper function.
pub rustc::BAD_OPT_ACCESS,
Deny,
"prevent using options by field access when there is a wrapper function",