[Clippy] Swap open_options to use diagnostic items instead of paths

This commit is contained in:
GnomedDev 2024-09-19 12:19:48 +01:00
parent 364e552940
commit b2eebeeea9
No known key found for this signature in database
GPG Key ID: 9BF10F8372B254D1
4 changed files with 16 additions and 13 deletions

View File

@ -895,6 +895,7 @@
field, field,
field_init_shorthand, field_init_shorthand,
file, file,
file_options,
float, float,
float_to_int_unchecked, float_to_int_unchecked,
floorf128, floorf128,
@ -1370,6 +1371,7 @@
on, on,
on_unimplemented, on_unimplemented,
opaque, opaque,
open_options_new,
ops, ops,
opt_out_copy, opt_out_copy,
optimize, optimize,

View File

@ -466,6 +466,7 @@ pub fn create_new<P: AsRef<Path>>(path: P) -> io::Result<File> {
/// ``` /// ```
#[must_use] #[must_use]
#[stable(feature = "with_options", since = "1.58.0")] #[stable(feature = "with_options", since = "1.58.0")]
#[cfg_attr(not(test), rustc_diagnostic_item = "file_options")]
pub fn options() -> OpenOptions { pub fn options() -> OpenOptions {
OpenOptions::new() OpenOptions::new()
} }
@ -1009,6 +1010,7 @@ impl OpenOptions {
/// let mut options = OpenOptions::new(); /// let mut options = OpenOptions::new();
/// let file = options.read(true).open("foo.txt"); /// let file = options.read(true).open("foo.txt");
/// ``` /// ```
#[cfg_attr(not(test), rustc_diagnostic_item = "open_options_new")]
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
#[must_use] #[must_use]
pub fn new() -> Self { pub fn new() -> Self {

View File

@ -126,17 +126,18 @@ fn get_open_options(
&& let ExprKind::Path(path) = callee.kind && let ExprKind::Path(path) = callee.kind
&& let Some(did) = cx.qpath_res(&path, callee.hir_id).opt_def_id() && let Some(did) = cx.qpath_res(&path, callee.hir_id).opt_def_id()
{ {
match_any_def_paths( let std_file_options = [
cx, sym::file_options,
did, sym::open_options_new,
&[ ];
let tokio_file_options: &[&[&str]] = &[
&paths::TOKIO_IO_OPEN_OPTIONS_NEW, &paths::TOKIO_IO_OPEN_OPTIONS_NEW,
&paths::OPEN_OPTIONS_NEW,
&paths::FILE_OPTIONS,
&paths::TOKIO_FILE_OPTIONS, &paths::TOKIO_FILE_OPTIONS,
], ];
)
.is_some() let is_std_options = std_file_options.into_iter().any(|sym| cx.tcx.is_diagnostic_item(sym, did));
is_std_options || match_any_def_paths(cx, did, tokio_file_options).is_some()
} else { } else {
false false
} }

View File

@ -14,7 +14,6 @@
pub const DIAG: [&str; 2] = ["rustc_errors", "Diag"]; pub const DIAG: [&str; 2] = ["rustc_errors", "Diag"];
pub const EARLY_CONTEXT: [&str; 2] = ["rustc_lint", "EarlyContext"]; pub const EARLY_CONTEXT: [&str; 2] = ["rustc_lint", "EarlyContext"];
pub const EARLY_LINT_PASS: [&str; 3] = ["rustc_lint", "passes", "EarlyLintPass"]; pub const EARLY_LINT_PASS: [&str; 3] = ["rustc_lint", "passes", "EarlyLintPass"];
pub const FILE_OPTIONS: [&str; 4] = ["std", "fs", "File", "options"];
#[expect(clippy::invalid_paths)] // internal lints do not know about all external crates #[expect(clippy::invalid_paths)] // internal lints do not know about all external crates
pub const FUTURES_IO_ASYNCREADEXT: [&str; 3] = ["futures_util", "io", "AsyncReadExt"]; pub const FUTURES_IO_ASYNCREADEXT: [&str; 3] = ["futures_util", "io", "AsyncReadExt"];
#[expect(clippy::invalid_paths)] // internal lints do not know about all external crates #[expect(clippy::invalid_paths)] // internal lints do not know about all external crates
@ -27,7 +26,6 @@
pub const LATE_LINT_PASS: [&str; 3] = ["rustc_lint", "passes", "LateLintPass"]; pub const LATE_LINT_PASS: [&str; 3] = ["rustc_lint", "passes", "LateLintPass"];
pub const LINT: [&str; 2] = ["rustc_lint_defs", "Lint"]; pub const LINT: [&str; 2] = ["rustc_lint_defs", "Lint"];
pub const MSRV: [&str; 3] = ["clippy_config", "msrvs", "Msrv"]; pub const MSRV: [&str; 3] = ["clippy_config", "msrvs", "Msrv"];
pub const OPEN_OPTIONS_NEW: [&str; 4] = ["std", "fs", "OpenOptions", "new"];
pub const PARKING_LOT_MUTEX_GUARD: [&str; 3] = ["lock_api", "mutex", "MutexGuard"]; pub const PARKING_LOT_MUTEX_GUARD: [&str; 3] = ["lock_api", "mutex", "MutexGuard"];
pub const PARKING_LOT_RWLOCK_READ_GUARD: [&str; 3] = ["lock_api", "rwlock", "RwLockReadGuard"]; pub const PARKING_LOT_RWLOCK_READ_GUARD: [&str; 3] = ["lock_api", "rwlock", "RwLockReadGuard"];
pub const PARKING_LOT_RWLOCK_WRITE_GUARD: [&str; 3] = ["lock_api", "rwlock", "RwLockWriteGuard"]; pub const PARKING_LOT_RWLOCK_WRITE_GUARD: [&str; 3] = ["lock_api", "rwlock", "RwLockWriteGuard"];