mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-05 19:58:32 +00:00
Deny internal lints on librustc_lint
This commit is contained in:
parent
818d300451
commit
d2bc99135f
@ -1036,7 +1036,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MutableTransmutes {
|
|||||||
|
|
||||||
let msg = "mutating transmuted &mut T from &T may cause undefined behavior, \
|
let msg = "mutating transmuted &mut T from &T may cause undefined behavior, \
|
||||||
consider instead using an UnsafeCell";
|
consider instead using an UnsafeCell";
|
||||||
match get_transmute_from_to(cx, expr) {
|
match get_transmute_from_to(cx, expr).map(|(ty1, ty2)| (&ty1.sty, &ty2.sty)) {
|
||||||
Some((&ty::Ref(_, _, from_mt), &ty::Ref(_, _, to_mt))) => {
|
Some((&ty::Ref(_, _, from_mt), &ty::Ref(_, _, to_mt))) => {
|
||||||
if to_mt == hir::Mutability::MutMutable &&
|
if to_mt == hir::Mutability::MutMutable &&
|
||||||
from_mt == hir::Mutability::MutImmutable {
|
from_mt == hir::Mutability::MutImmutable {
|
||||||
@ -1049,7 +1049,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MutableTransmutes {
|
|||||||
fn get_transmute_from_to<'a, 'tcx>
|
fn get_transmute_from_to<'a, 'tcx>
|
||||||
(cx: &LateContext<'a, 'tcx>,
|
(cx: &LateContext<'a, 'tcx>,
|
||||||
expr: &hir::Expr)
|
expr: &hir::Expr)
|
||||||
-> Option<(&'tcx ty::TyKind<'tcx>, &'tcx ty::TyKind<'tcx>)> {
|
-> Option<(Ty<'tcx>, Ty<'tcx>)> {
|
||||||
let def = if let hir::ExprKind::Path(ref qpath) = expr.node {
|
let def = if let hir::ExprKind::Path(ref qpath) = expr.node {
|
||||||
cx.tables.qpath_def(qpath, expr.hir_id)
|
cx.tables.qpath_def(qpath, expr.hir_id)
|
||||||
} else {
|
} else {
|
||||||
@ -1062,7 +1062,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MutableTransmutes {
|
|||||||
let sig = cx.tables.node_type(expr.hir_id).fn_sig(cx.tcx);
|
let sig = cx.tables.node_type(expr.hir_id).fn_sig(cx.tcx);
|
||||||
let from = sig.inputs().skip_binder()[0];
|
let from = sig.inputs().skip_binder()[0];
|
||||||
let to = *sig.output().skip_binder();
|
let to = *sig.output().skip_binder();
|
||||||
return Some((&from.sty, &to.sty));
|
return Some((from, to));
|
||||||
}
|
}
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#![recursion_limit="256"]
|
#![recursion_limit="256"]
|
||||||
|
|
||||||
#![deny(rust_2018_idioms)]
|
#![deny(rust_2018_idioms)]
|
||||||
|
#![cfg_attr(not(stage0), deny(internal))]
|
||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate rustc;
|
extern crate rustc;
|
||||||
|
@ -321,7 +321,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for TypeLimits {
|
|||||||
//
|
//
|
||||||
// No suggestion for: `isize`, `usize`.
|
// No suggestion for: `isize`, `usize`.
|
||||||
fn get_type_suggestion<'a>(
|
fn get_type_suggestion<'a>(
|
||||||
t: &ty::TyKind<'_>,
|
t: Ty<'_>,
|
||||||
val: u128,
|
val: u128,
|
||||||
negative: bool,
|
negative: bool,
|
||||||
) -> Option<String> {
|
) -> Option<String> {
|
||||||
@ -347,14 +347,14 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for TypeLimits {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
match t {
|
match t.sty {
|
||||||
&ty::Int(i) => find_fit!(i, val, negative,
|
ty::Int(i) => find_fit!(i, val, negative,
|
||||||
I8 => [U8] => [I16, I32, I64, I128],
|
I8 => [U8] => [I16, I32, I64, I128],
|
||||||
I16 => [U16] => [I32, I64, I128],
|
I16 => [U16] => [I32, I64, I128],
|
||||||
I32 => [U32] => [I64, I128],
|
I32 => [U32] => [I64, I128],
|
||||||
I64 => [U64] => [I128],
|
I64 => [U64] => [I128],
|
||||||
I128 => [U128] => []),
|
I128 => [U128] => []),
|
||||||
&ty::Uint(u) => find_fit!(u, val, negative,
|
ty::Uint(u) => find_fit!(u, val, negative,
|
||||||
U8 => [U8, U16, U32, U64, U128] => [],
|
U8 => [U8, U16, U32, U64, U128] => [],
|
||||||
U16 => [U16, U32, U64, U128] => [],
|
U16 => [U16, U32, U64, U128] => [],
|
||||||
U32 => [U32, U64, U128] => [],
|
U32 => [U32, U64, U128] => [],
|
||||||
@ -364,6 +364,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for TypeLimits {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg_attr(not(stage0), allow(usage_of_ty_tykind))]
|
||||||
fn report_bin_hex_error(
|
fn report_bin_hex_error(
|
||||||
cx: &LateContext<'_, '_>,
|
cx: &LateContext<'_, '_>,
|
||||||
expr: &hir::Expr,
|
expr: &hir::Expr,
|
||||||
@ -398,7 +399,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for TypeLimits {
|
|||||||
repr_str, val, t, actually, t
|
repr_str, val, t, actually, t
|
||||||
));
|
));
|
||||||
if let Some(sugg_ty) =
|
if let Some(sugg_ty) =
|
||||||
get_type_suggestion(&cx.tables.node_type(expr.hir_id).sty, val, negative)
|
get_type_suggestion(&cx.tables.node_type(expr.hir_id), val, negative)
|
||||||
{
|
{
|
||||||
if let Some(pos) = repr_str.chars().position(|c| c == 'i' || c == 'u') {
|
if let Some(pos) = repr_str.chars().position(|c| c == 'i' || c == 'u') {
|
||||||
let (sans_suffix, _) = repr_str.split_at(pos);
|
let (sans_suffix, _) = repr_str.split_at(pos);
|
||||||
|
Loading…
Reference in New Issue
Block a user