Revert "Rollup merge of #122661 - estebank:assert-macro-span, r=petrochenkov"
This reverts commit1eeb8e8b15, reversing changes made to324bf2b9fd. 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.
This commit is contained in:
parent
5782d9e802
commit
ba107fcffb
4 changed files with 9 additions and 16 deletions
|
|
@ -11,7 +11,7 @@ use rustc_ast::{BinOpKind, LitKind, RangeLimits};
|
|||
use rustc_data_structures::packed::Pu128;
|
||||
use rustc_data_structures::unhash::UnindexMap;
|
||||
use rustc_errors::{Applicability, Diag};
|
||||
use rustc_hir::{Body, Expr, ExprKind};
|
||||
use rustc_hir::{Block, Body, Expr, ExprKind, UnOp};
|
||||
use rustc_lint::{LateContext, LateLintPass};
|
||||
use rustc_session::declare_lint_pass;
|
||||
use rustc_span::source_map::Spanned;
|
||||
|
|
@ -135,12 +135,12 @@ fn assert_len_expr<'hir>(
|
|||
cx: &LateContext<'_>,
|
||||
expr: &'hir Expr<'hir>,
|
||||
) -> Option<(LengthComparison, usize, &'hir Expr<'hir>)> {
|
||||
let (cmp, asserted_len, slice_len) = if let Some(
|
||||
higher::IfLetOrMatch::Match(cond, [_, then], _)
|
||||
) = higher::IfLetOrMatch::parse(cx, expr)
|
||||
&& let ExprKind::Binary(bin_op, left, right) = &cond.kind
|
||||
let (cmp, asserted_len, slice_len) = if let Some(higher::If { cond, then, .. }) = higher::If::hir(expr)
|
||||
&& let ExprKind::Unary(UnOp::Not, condition) = &cond.kind
|
||||
&& let ExprKind::Binary(bin_op, left, right) = &condition.kind
|
||||
// check if `then` block has a never type expression
|
||||
&& cx.typeck_results().expr_ty(then.body).is_never()
|
||||
&& let ExprKind::Block(Block { expr: Some(then_expr), .. }, _) = then.kind
|
||||
&& cx.typeck_results().expr_ty(then_expr).is_never()
|
||||
{
|
||||
len_comparison(bin_op.node, left, right)?
|
||||
} else if let Some((macro_call, bin_op)) = first_node_macro_backtrace(cx, expr).find_map(|macro_call| {
|
||||
|
|
|
|||
|
|
@ -196,7 +196,6 @@ fn issue_13106() {
|
|||
|
||||
const {
|
||||
assert!(EMPTY_STR.is_empty());
|
||||
//~^ const_is_empty
|
||||
}
|
||||
|
||||
const {
|
||||
|
|
|
|||
|
|
@ -158,16 +158,10 @@ LL | let _ = val.is_empty();
|
|||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error: this expression always evaluates to true
|
||||
--> tests/ui/const_is_empty.rs:198:17
|
||||
|
|
||||
LL | assert!(EMPTY_STR.is_empty());
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: this expression always evaluates to true
|
||||
--> tests/ui/const_is_empty.rs:203:9
|
||||
--> tests/ui/const_is_empty.rs:202:9
|
||||
|
|
||||
LL | EMPTY_STR.is_empty();
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 28 previous errors
|
||||
error: aborting due to 27 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#![warn(clippy::incompatible_msrv)]
|
||||
#![feature(custom_inner_attributes)]
|
||||
#![allow(stable_features, clippy::diverging_sub_expression)]
|
||||
#![allow(stable_features)]
|
||||
#![feature(strict_provenance)] // For use in test
|
||||
#![clippy::msrv = "1.3.0"]
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue