mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-24 05:33:27 +00:00
Auto merge of #10096 - feniljain:fix-seek-rewind, r=xFrednet
fix: not suggest seek_to_start_instead_of_rewind when expr is used changelog: [`seek_to_start_instead_of_rewind`]: No longer lints, if the return of `seek` is used. [#10096](https://github.com/rust-lang/rust-clippy/pull/10096) <!-- changelog_checked --> Fixes #10065
This commit is contained in:
commit
391b2a6fac
4 changed files with 18 additions and 2 deletions
|
@ -1,6 +1,6 @@
|
|||
use clippy_utils::diagnostics::span_lint_and_then;
|
||||
use clippy_utils::ty::implements_trait;
|
||||
use clippy_utils::{get_trait_def_id, match_def_path, paths};
|
||||
use clippy_utils::{get_trait_def_id, is_expr_used_or_unified, match_def_path, paths};
|
||||
use rustc_ast::ast::{LitIntType, LitKind};
|
||||
use rustc_errors::Applicability;
|
||||
use rustc_hir::{Expr, ExprKind};
|
||||
|
@ -19,6 +19,10 @@ pub(super) fn check<'tcx>(
|
|||
// Get receiver type
|
||||
let ty = cx.typeck_results().expr_ty(recv).peel_refs();
|
||||
|
||||
if is_expr_used_or_unified(cx.tcx, expr) {
|
||||
return;
|
||||
}
|
||||
|
||||
if let Some(seek_trait_id) = get_trait_def_id(cx, &paths::STD_IO_SEEK) &&
|
||||
implements_trait(cx, ty, seek_trait_id, &[]) &&
|
||||
let ExprKind::Call(func, args1) = arg.kind &&
|
||||
|
|
|
@ -70,6 +70,12 @@ fn seek_to_end<T: Seek>(t: &mut T) {
|
|||
t.seek(SeekFrom::End(0));
|
||||
}
|
||||
|
||||
// This should NOT trigger clippy warning because
|
||||
// expr is used here
|
||||
fn seek_to_start_in_let<T: Seek>(t: &mut T) {
|
||||
let a = t.seek(SeekFrom::Start(0)).unwrap();
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut f = OpenOptions::new()
|
||||
.write(true)
|
||||
|
|
|
@ -70,6 +70,12 @@ fn seek_to_end<T: Seek>(t: &mut T) {
|
|||
t.seek(SeekFrom::End(0));
|
||||
}
|
||||
|
||||
// This should NOT trigger clippy warning because
|
||||
// expr is used here
|
||||
fn seek_to_start_in_let<T: Seek>(t: &mut T) {
|
||||
let a = t.seek(SeekFrom::Start(0)).unwrap();
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut f = OpenOptions::new()
|
||||
.write(true)
|
||||
|
|
|
@ -13,7 +13,7 @@ LL | t.seek(SeekFrom::Start(0));
|
|||
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `rewind()`
|
||||
|
||||
error: used `seek` to go to the start of the stream
|
||||
--> $DIR/seek_to_start_instead_of_rewind.rs:128:7
|
||||
--> $DIR/seek_to_start_instead_of_rewind.rs:134:7
|
||||
|
|
||||
LL | f.seek(SeekFrom::Start(0));
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `rewind()`
|
||||
|
|
Loading…
Reference in a new issue