Skip to content

Commit 75f863a

Browse files
committed
Add lint for 2229 migrations
1 parent 492b83c commit 75f863a

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

compiler/rustc_lint_defs/src/builtin.rs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2918,6 +2918,7 @@ declare_lint_pass! {
29182918
USELESS_DEPRECATED,
29192919
UNSUPPORTED_NAKED_FUNCTIONS,
29202920
MISSING_ABI,
2921+
DISJOINT_CAPTURE_DROP_REORDER,
29212922
]
29222923
}
29232924

@@ -2944,6 +2945,51 @@ declare_lint! {
29442945
"detects doc comments that aren't used by rustdoc"
29452946
}
29462947

2948+
declare_lint! {
2949+
/// The `disjoint_capture_drop_reorder` lint detects variables that aren't completely
2950+
/// captured when the feature `capture_disjoint_fields` is enabled and it affects the Drop
2951+
/// order of at least one path starting at this variable.
2952+
///
2953+
/// ### Example
2954+
///
2955+
/// ```rust
2956+
/// # #![deny(disjoint_capture_drop_reorder)]
2957+
/// # #![allow(unused)]
2958+
/// struct FancyInteger(i32);
2959+
///
2960+
/// impl Drop for FancyInteger {
2961+
/// fn drop(&mut self) {
2962+
/// println!("Just dropped {}", self.0);
2963+
/// }
2964+
/// }
2965+
///
2966+
/// struct Point { x: FancyInteger, y: FancyInteger }
2967+
///
2968+
/// fn main() {
2969+
/// let p = Point { x: FancyInteger(10), y: FancyInteger(20) };
2970+
///
2971+
/// let c = || {
2972+
/// let x = p.x;
2973+
/// };
2974+
///
2975+
/// c();
2976+
///
2977+
/// // ... More code ...
2978+
/// }
2979+
/// ```
2980+
///
2981+
/// {{produces}}
2982+
///
2983+
/// ### Explanation
2984+
///
2985+
/// In the above example `p.y` will be dropped at the end of `f` instead of with `c` if
2986+
/// the feature `capture_disjoint_fields` is enabled.
2987+
pub DISJOINT_CAPTURE_DROP_REORDER,
2988+
Allow,
2989+
"Drop reorder because of `capture_disjoint_fields`"
2990+
2991+
}
2992+
29472993
declare_lint_pass!(UnusedDocComment => [UNUSED_DOC_COMMENTS]);
29482994

29492995
declare_lint! {

0 commit comments

Comments
 (0)