Skip to content

Commit ba107fc

Browse files
committed
Revert "Rollup merge of rust-lang#122661 - estebank:assert-macro-span, r=petrochenkov"
This reverts commit 1eeb8e8, reversing changes made to 324bf2b. Unfortunately the assert desugaring change is not backwards compatible, see RUST-145770. Code such as ```rust #[derive(Debug)] struct F { data: bool } impl std::ops::Not for F { type Output = bool; fn not(self) -> Self::Output { !self.data } } fn main() { let f = F { data: true }; assert!(f); } ``` would be broken by the assert desugaring change. We may need to land the change over an edition boundary, or limit the editions that the desugaring change impacts.
1 parent 5782d9e commit ba107fc

File tree

4 files changed

+9
-16
lines changed

4 files changed

+9
-16
lines changed

clippy_lints/src/missing_asserts_for_indexing.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use rustc_ast::{BinOpKind, LitKind, RangeLimits};
1111
use rustc_data_structures::packed::Pu128;
1212
use rustc_data_structures::unhash::UnindexMap;
1313
use rustc_errors::{Applicability, Diag};
14-
use rustc_hir::{Body, Expr, ExprKind};
14+
use rustc_hir::{Block, Body, Expr, ExprKind, UnOp};
1515
use rustc_lint::{LateContext, LateLintPass};
1616
use rustc_session::declare_lint_pass;
1717
use rustc_span::source_map::Spanned;
@@ -135,12 +135,12 @@ fn assert_len_expr<'hir>(
135135
cx: &LateContext<'_>,
136136
expr: &'hir Expr<'hir>,
137137
) -> Option<(LengthComparison, usize, &'hir Expr<'hir>)> {
138-
let (cmp, asserted_len, slice_len) = if let Some(
139-
higher::IfLetOrMatch::Match(cond, [_, then], _)
140-
) = higher::IfLetOrMatch::parse(cx, expr)
141-
&& let ExprKind::Binary(bin_op, left, right) = &cond.kind
138+
let (cmp, asserted_len, slice_len) = if let Some(higher::If { cond, then, .. }) = higher::If::hir(expr)
139+
&& let ExprKind::Unary(UnOp::Not, condition) = &cond.kind
140+
&& let ExprKind::Binary(bin_op, left, right) = &condition.kind
142141
// check if `then` block has a never type expression
143-
&& cx.typeck_results().expr_ty(then.body).is_never()
142+
&& let ExprKind::Block(Block { expr: Some(then_expr), .. }, _) = then.kind
143+
&& cx.typeck_results().expr_ty(then_expr).is_never()
144144
{
145145
len_comparison(bin_op.node, left, right)?
146146
} else if let Some((macro_call, bin_op)) = first_node_macro_backtrace(cx, expr).find_map(|macro_call| {

tests/ui/const_is_empty.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,6 @@ fn issue_13106() {
196196

197197
const {
198198
assert!(EMPTY_STR.is_empty());
199-
//~^ const_is_empty
200199
}
201200

202201
const {

tests/ui/const_is_empty.stderr

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -158,16 +158,10 @@ LL | let _ = val.is_empty();
158158
| ^^^^^^^^^^^^^^
159159

160160
error: this expression always evaluates to true
161-
--> tests/ui/const_is_empty.rs:198:17
162-
|
163-
LL | assert!(EMPTY_STR.is_empty());
164-
| ^^^^^^^^^^^^^^^^^^^^
165-
166-
error: this expression always evaluates to true
167-
--> tests/ui/const_is_empty.rs:203:9
161+
--> tests/ui/const_is_empty.rs:202:9
168162
|
169163
LL | EMPTY_STR.is_empty();
170164
| ^^^^^^^^^^^^^^^^^^^^
171165

172-
error: aborting due to 28 previous errors
166+
error: aborting due to 27 previous errors
173167

tests/ui/incompatible_msrv.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#![warn(clippy::incompatible_msrv)]
22
#![feature(custom_inner_attributes)]
3-
#![allow(stable_features, clippy::diverging_sub_expression)]
3+
#![allow(stable_features)]
44
#![feature(strict_provenance)] // For use in test
55
#![clippy::msrv = "1.3.0"]
66

0 commit comments

Comments
 (0)