#![feature(rustc_private)]
#![cfg_attr(dylint_lib = "perfectionist", feature(register_tool))]
#![cfg_attr(dylint_lib = "perfectionist", register_tool(perfectionist))]
extern crate rustc_ast;
extern crate rustc_errors;
extern crate rustc_hir;
extern crate rustc_lexer;
extern crate rustc_lint;
extern crate rustc_middle;
extern crate rustc_parse;
extern crate rustc_session;
extern crate rustc_span;
use rustc_lint::LintStore;
use rustc_session::Session;
dylint_linting::dylint_library!();
mod ascii_letter;
mod comment_walk;
mod common;
mod enclosing_hir;
mod literal_scan;
mod macro_path;
mod macro_template;
mod markdown;
mod module_reparse;
mod rules;
mod url_scan;
#[unsafe(no_mangle)]
#[expect(
clippy::no_mangle_with_rust_abi,
reason = "dylint's plugin entry point requires the Rust ABI"
)]
pub fn register_lints(session: &Session, lint_store: &mut LintStore) {
dylint_linting::init_config(session);
common::init_global_config();
macro_rules! register {
($( $rule_name:ident )+) => {
$( rules::$rule_name::register_lint(lint_store); )+
$( rules::$rule_name::register_pass(lint_store); )+
};
}
register! {
bare_email
bare_identifier_reference
bare_issue_reference
bare_url
derive_ordering
flat_module_pattern
import_granularity
import_grouping
inline_test_footprint
lint_reason_from_comment
lint_silence_reason
macro_argument_binding
macro_trailing_comma
non_exhaustive_error
prefer_derive_more_over_thiserror
prefer_expect_over_allow
prefer_raw_string
print_macro_split
self_import
single_letter_closure_param
single_letter_const_generic
single_letter_const_item
single_letter_function_param
single_letter_generic
single_letter_let_binding
single_letter_static_item
unicode_ellipsis_in_comments
unicode_ellipsis_in_docs
unicode_ellipsis_in_panic_messages
unknown_perfectionist_lints
}
}