// This test ensures that `tail_expr_drop_order` does not activate in case Edition 2024 is not used // or the feature gate `shorter_tail_lifetimes` is disabled. //@ revisions: neither no_feature_gate edition_less_than_2024 //@ check-pass //@ [neither] edition: 2021 //@ [no_feature_gate] compile-flags: -Z unstable-options //@ [no_feature_gate] edition: 2024 //@ [edition_less_than_2024] edition: 2021 #![deny(tail_expr_drop_order)] #![cfg_attr(edition_less_than_2024, feature(shorter_tail_lifetimes))] struct LoudDropper; impl Drop for LoudDropper { fn drop(&mut self) { // This destructor should be considered significant because it is a custom destructor // and we will assume that the destructor can generate side effects arbitrarily so that // a change in drop order is visible. println!("loud drop"); } } impl LoudDropper { fn get(&self) -> i32 { 0 } } fn should_not_lint() -> i32 { let x = LoudDropper; x.get() + LoudDropper.get() // Lint should not action } fn main() {}