mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-23 23:34:48 +00:00
misnamed_getters: Trigger on unsafe with _unchecked
This commit is contained in:
parent
a867c17ab3
commit
3f1a186bd1
@ -1,7 +1,7 @@
|
|||||||
use clippy_utils::diagnostics::span_lint_and_then;
|
use clippy_utils::diagnostics::span_lint_and_then;
|
||||||
use clippy_utils::source::snippet;
|
use clippy_utils::source::snippet;
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
use rustc_hir::{intravisit::FnKind, Body, ExprKind, FnDecl, HirId, ImplicitSelfKind};
|
use rustc_hir::{intravisit::FnKind, Body, ExprKind, FnDecl, HirId, ImplicitSelfKind, Unsafety};
|
||||||
use rustc_lint::LateContext;
|
use rustc_lint::LateContext;
|
||||||
use rustc_middle::ty;
|
use rustc_middle::ty;
|
||||||
use rustc_span::Span;
|
use rustc_span::Span;
|
||||||
@ -16,7 +16,7 @@ pub fn check_fn(
|
|||||||
span: Span,
|
span: Span,
|
||||||
_hir_id: HirId,
|
_hir_id: HirId,
|
||||||
) {
|
) {
|
||||||
let FnKind::Method(ref ident, _) = kind else {
|
let FnKind::Method(ref ident, sig) = kind else {
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -38,6 +38,12 @@ pub fn check_fn(
|
|||||||
ImplicitSelfKind::None => return,
|
ImplicitSelfKind::None => return,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let name = if sig.header.unsafety == Unsafety::Unsafe {
|
||||||
|
name.strip_suffix("_unchecked").unwrap_or(name)
|
||||||
|
} else {
|
||||||
|
name
|
||||||
|
};
|
||||||
|
|
||||||
// Body must be &(mut) <self_data>.name
|
// Body must be &(mut) <self_data>.name
|
||||||
// self_data is not neccessarilly self, to also lint sub-getters, etc…
|
// self_data is not neccessarilly self, to also lint sub-getters, etc…
|
||||||
|
|
||||||
|
@ -90,5 +90,41 @@ LL | | &mut self.a
|
|||||||
LL | | }
|
LL | | }
|
||||||
| |_____^
|
| |_____^
|
||||||
|
|
||||||
error: aborting due to 10 previous errors
|
error: getter function appears to return the wrong field
|
||||||
|
--> $DIR/misnamed_getters.rs:64:5
|
||||||
|
|
|
||||||
|
LL | / unsafe fn a_unchecked(&self) -> &u8 {
|
||||||
|
LL | | &self.b
|
||||||
|
| | ------- help: consider using: `&self.a`
|
||||||
|
LL | | }
|
||||||
|
| |_____^
|
||||||
|
|
||||||
|
error: getter function appears to return the wrong field
|
||||||
|
--> $DIR/misnamed_getters.rs:67:5
|
||||||
|
|
|
||||||
|
LL | / unsafe fn a_unchecked_mut(&mut self) -> &mut u8 {
|
||||||
|
LL | | &mut self.b
|
||||||
|
| | ----------- help: consider using: `&mut self.a`
|
||||||
|
LL | | }
|
||||||
|
| |_____^
|
||||||
|
|
||||||
|
error: getter function appears to return the wrong field
|
||||||
|
--> $DIR/misnamed_getters.rs:71:5
|
||||||
|
|
|
||||||
|
LL | / unsafe fn b_unchecked(self) -> u8 {
|
||||||
|
LL | | self.a
|
||||||
|
| | ------ help: consider using: `self.b`
|
||||||
|
LL | | }
|
||||||
|
| |_____^
|
||||||
|
|
||||||
|
error: getter function appears to return the wrong field
|
||||||
|
--> $DIR/misnamed_getters.rs:75:5
|
||||||
|
|
|
||||||
|
LL | / unsafe fn b_unchecked_mut(&mut self) -> &mut u8 {
|
||||||
|
LL | | &mut self.a
|
||||||
|
| | ----------- help: consider using: `&mut self.b`
|
||||||
|
LL | | }
|
||||||
|
| |_____^
|
||||||
|
|
||||||
|
error: aborting due to 14 previous errors
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user