Fix sync fallout
This commit is contained in:
parent
018440c11e
commit
51592f8587
7 changed files with 27 additions and 54 deletions
|
|
@ -6,7 +6,7 @@ use rustc_middle::ty::{self, Ty};
|
|||
use rustc_session::{declare_tool_lint, impl_lint_pass};
|
||||
use rustc_span::source_map::Span;
|
||||
use rustc_target::abi::LayoutOf;
|
||||
use rustc_typeck::expr_use_visitor::{ConsumeMode, Delegate, ExprUseVisitor, PlaceWithHirId, PlaceBase};
|
||||
use rustc_typeck::expr_use_visitor::{ConsumeMode, Delegate, ExprUseVisitor, PlaceBase, PlaceWithHirId};
|
||||
|
||||
use crate::utils::span_lint;
|
||||
|
||||
|
|
|
|||
|
|
@ -211,7 +211,8 @@ fn check_impl_items(cx: &LateContext<'_, '_>, item: &Item<'_>, impl_items: &[Imp
|
|||
}
|
||||
|
||||
fn check_cmp(cx: &LateContext<'_, '_>, span: Span, method: &Expr<'_>, lit: &Expr<'_>, op: &str, compare_to: u32) {
|
||||
if let (&ExprKind::MethodCall(ref method_path, _, ref args, _), &ExprKind::Lit(ref lit)) = (&method.kind, &lit.kind) {
|
||||
if let (&ExprKind::MethodCall(ref method_path, _, ref args, _), &ExprKind::Lit(ref lit)) = (&method.kind, &lit.kind)
|
||||
{
|
||||
// check if we are in an is_empty() method
|
||||
if let Some(name) = get_item_name(cx, method) {
|
||||
if name.as_str() == "is_empty" {
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ use rustc_middle::ty::{self, Ty, TyS};
|
|||
use rustc_session::{declare_lint_pass, declare_tool_lint};
|
||||
use rustc_span::source_map::Span;
|
||||
use rustc_span::symbol::Symbol;
|
||||
use rustc_typeck::expr_use_visitor::{ConsumeMode, Delegate, ExprUseVisitor, PlaceWithHirId, PlaceBase};
|
||||
use rustc_typeck::expr_use_visitor::{ConsumeMode, Delegate, ExprUseVisitor, PlaceBase, PlaceWithHirId};
|
||||
use std::iter::{once, Iterator};
|
||||
use std::mem;
|
||||
|
||||
|
|
@ -1580,13 +1580,13 @@ fn check_for_mutability(cx: &LateContext<'_, '_>, bound: &Expr<'_>) -> Option<Hi
|
|||
None
|
||||
}
|
||||
|
||||
fn check_for_mutation<'a, 'tcx> (
|
||||
fn check_for_mutation<'a, 'tcx>(
|
||||
cx: &LateContext<'a, 'tcx>,
|
||||
body: &Expr<'_>,
|
||||
bound_ids: &[Option<HirId>],
|
||||
) -> (Option<Span>, Option<Span>) {
|
||||
let mut delegate = MutatePairDelegate {
|
||||
cx: cx,
|
||||
cx,
|
||||
hir_id_low: bound_ids[0],
|
||||
hir_id_high: bound_ids[1],
|
||||
span_low: None,
|
||||
|
|
|
|||
|
|
@ -1945,16 +1945,12 @@ fn detect_extreme_expr<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, expr: &'tcx Expr<'_
|
|||
|
||||
let which = match (&ty.kind, cv) {
|
||||
(&ty::Bool, Constant::Bool(false)) | (&ty::Uint(_), Constant::Int(0)) => Minimum,
|
||||
(&ty::Int(ity), Constant::Int(i))
|
||||
if i == unsext(cx.tcx, i128::MIN >> (128 - int_bits(cx.tcx, ity)), ity) =>
|
||||
{
|
||||
(&ty::Int(ity), Constant::Int(i)) if i == unsext(cx.tcx, i128::MIN >> (128 - int_bits(cx.tcx, ity)), ity) => {
|
||||
Minimum
|
||||
},
|
||||
|
||||
(&ty::Bool, Constant::Bool(true)) => Maximum,
|
||||
(&ty::Int(ity), Constant::Int(i))
|
||||
if i == unsext(cx.tcx, i128::MAX >> (128 - int_bits(cx.tcx, ity)), ity) =>
|
||||
{
|
||||
(&ty::Int(ity), Constant::Int(i)) if i == unsext(cx.tcx, i128::MAX >> (128 - int_bits(cx.tcx, ity)), ity) => {
|
||||
Maximum
|
||||
},
|
||||
(&ty::Uint(uty), Constant::Int(i)) if clip(cx.tcx, u128::MAX, uty) == i => Maximum,
|
||||
|
|
@ -2083,50 +2079,20 @@ fn numeric_cast_precast_bounds<'a>(cx: &LateContext<'_, '_>, expr: &'a Expr<'_>)
|
|||
}
|
||||
match pre_cast_ty.kind {
|
||||
ty::Int(int_ty) => Some(match int_ty {
|
||||
IntTy::I8 => (
|
||||
FullInt::S(i128::from(i8::MIN)),
|
||||
FullInt::S(i128::from(i8::MAX)),
|
||||
),
|
||||
IntTy::I16 => (
|
||||
FullInt::S(i128::from(i16::MIN)),
|
||||
FullInt::S(i128::from(i16::MAX)),
|
||||
),
|
||||
IntTy::I32 => (
|
||||
FullInt::S(i128::from(i32::MIN)),
|
||||
FullInt::S(i128::from(i32::MAX)),
|
||||
),
|
||||
IntTy::I64 => (
|
||||
FullInt::S(i128::from(i64::MIN)),
|
||||
FullInt::S(i128::from(i64::MAX)),
|
||||
),
|
||||
IntTy::I8 => (FullInt::S(i128::from(i8::MIN)), FullInt::S(i128::from(i8::MAX))),
|
||||
IntTy::I16 => (FullInt::S(i128::from(i16::MIN)), FullInt::S(i128::from(i16::MAX))),
|
||||
IntTy::I32 => (FullInt::S(i128::from(i32::MIN)), FullInt::S(i128::from(i32::MAX))),
|
||||
IntTy::I64 => (FullInt::S(i128::from(i64::MIN)), FullInt::S(i128::from(i64::MAX))),
|
||||
IntTy::I128 => (FullInt::S(i128::MIN), FullInt::S(i128::MAX)),
|
||||
IntTy::Isize => (
|
||||
FullInt::S(isize::MIN as i128),
|
||||
FullInt::S(isize::MAX as i128),
|
||||
),
|
||||
IntTy::Isize => (FullInt::S(isize::MIN as i128), FullInt::S(isize::MAX as i128)),
|
||||
}),
|
||||
ty::Uint(uint_ty) => Some(match uint_ty {
|
||||
UintTy::U8 => (
|
||||
FullInt::U(u128::from(u8::MIN)),
|
||||
FullInt::U(u128::from(u8::MAX)),
|
||||
),
|
||||
UintTy::U16 => (
|
||||
FullInt::U(u128::from(u16::MIN)),
|
||||
FullInt::U(u128::from(u16::MAX)),
|
||||
),
|
||||
UintTy::U32 => (
|
||||
FullInt::U(u128::from(u32::MIN)),
|
||||
FullInt::U(u128::from(u32::MAX)),
|
||||
),
|
||||
UintTy::U64 => (
|
||||
FullInt::U(u128::from(u64::MIN)),
|
||||
FullInt::U(u128::from(u64::MAX)),
|
||||
),
|
||||
UintTy::U8 => (FullInt::U(u128::from(u8::MIN)), FullInt::U(u128::from(u8::MAX))),
|
||||
UintTy::U16 => (FullInt::U(u128::from(u16::MIN)), FullInt::U(u128::from(u16::MAX))),
|
||||
UintTy::U32 => (FullInt::U(u128::from(u32::MIN)), FullInt::U(u128::from(u32::MAX))),
|
||||
UintTy::U64 => (FullInt::U(u128::from(u64::MIN)), FullInt::U(u128::from(u64::MAX))),
|
||||
UintTy::U128 => (FullInt::U(u128::MIN), FullInt::U(u128::MAX)),
|
||||
UintTy::Usize => (
|
||||
FullInt::U(usize::MIN as u128),
|
||||
FullInt::U(usize::MAX as u128),
|
||||
),
|
||||
UintTy::Usize => (FullInt::U(usize::MIN as u128), FullInt::U(usize::MAX as u128)),
|
||||
}),
|
||||
_ => None,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -95,7 +95,10 @@ fn mirrored_exprs(
|
|||
// The two exprs are method calls.
|
||||
// Check to see that the function is the same and the arguments are mirrored
|
||||
// This is enough because the receiver of the method is listed in the arguments
|
||||
(ExprKind::MethodCall(left_segment, _, left_args, _), ExprKind::MethodCall(right_segment, _, right_args, _)) => {
|
||||
(
|
||||
ExprKind::MethodCall(left_segment, _, left_args, _),
|
||||
ExprKind::MethodCall(right_segment, _, right_args, _),
|
||||
) => {
|
||||
left_segment.ident == right_segment.ident
|
||||
&& left_args
|
||||
.iter()
|
||||
|
|
|
|||
|
|
@ -251,7 +251,10 @@ impl<'tcx> Visitor<'tcx> for PrintVisitor {
|
|||
}
|
||||
},
|
||||
ExprKind::MethodCall(ref _method_name, ref _generics, ref _args, ref _fn_span) => {
|
||||
println!("MethodCall(ref method_name, ref generics, ref args, ref fn_span) = {};", current);
|
||||
println!(
|
||||
"MethodCall(ref method_name, ref generics, ref args, ref fn_span) = {};",
|
||||
current
|
||||
);
|
||||
println!(" // unimplemented: `ExprKind::MethodCall` is not further destructured at the moment");
|
||||
},
|
||||
ExprKind::Tup(ref elements) => {
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ use rustc_lint::LateContext;
|
|||
use rustc_middle::hir::map::Map;
|
||||
use rustc_middle::ty;
|
||||
use rustc_span::symbol::{Ident, Symbol};
|
||||
use rustc_typeck::expr_use_visitor::{ConsumeMode, Delegate, ExprUseVisitor, PlaceWithHirId, PlaceBase};
|
||||
use rustc_typeck::expr_use_visitor::{ConsumeMode, Delegate, ExprUseVisitor, PlaceBase, PlaceWithHirId};
|
||||
|
||||
/// Returns a set of mutated local variable IDs, or `None` if mutations could not be determined.
|
||||
pub fn mutated_variables<'a, 'tcx>(expr: &'tcx Expr<'_>, cx: &'a LateContext<'a, 'tcx>) -> Option<FxHashSet<HirId>> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue