Lint on function pointers used in patterns
This commit is contained in:
parent
3795886f7e
commit
aba5ea1430
6 changed files with 97 additions and 3 deletions
|
@ -2197,6 +2197,32 @@ declare_lint! {
|
|||
report_in_external_macro
|
||||
}
|
||||
|
||||
declare_lint! {
|
||||
/// The `pointer_structural_match` lint detects pointers used in patterns that do not
|
||||
/// behave deterministically across optimizations.
|
||||
///
|
||||
/// ### Example
|
||||
///
|
||||
/// ```rust,compile_fail
|
||||
/// #![deny(pointer_structural_match)]
|
||||
/// fn foo(a: usize, b: usize) -> usize { a + b }
|
||||
/// const FOO: fn(usize, usize) -> usize = foo;
|
||||
/// fn main() {
|
||||
/// match FOO {
|
||||
/// FOO => {},
|
||||
/// _ => {},
|
||||
/// }
|
||||
/// }
|
||||
/// ```
|
||||
pub POINTER_STRUCTURAL_MATCH,
|
||||
Allow,
|
||||
"pointers are not structural-match",
|
||||
@future_incompatible = FutureIncompatibleInfo {
|
||||
reference: "issue #62411 <https://github.com/rust-lang/rust/issues/70861>",
|
||||
edition: None,
|
||||
};
|
||||
}
|
||||
|
||||
declare_lint! {
|
||||
/// The `ambiguous_associated_items` lint detects ambiguity between
|
||||
/// [associated items] and [enum variants].
|
||||
|
@ -2630,6 +2656,7 @@ declare_lint_pass! {
|
|||
AMBIGUOUS_ASSOCIATED_ITEMS,
|
||||
MUTABLE_BORROW_RESERVATION_CONFLICT,
|
||||
INDIRECT_STRUCTURAL_MATCH,
|
||||
POINTER_STRUCTURAL_MATCH,
|
||||
SOFT_UNSTABLE,
|
||||
INLINE_NO_SANITIZE,
|
||||
ASM_SUB_REGISTER,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue