-
Couldn't load subscription status.
- Fork 13.9k
Closed
Labels
A-lintsArea: Lints (warnings about flaws in source code) such as unused_mut.Area: Lints (warnings about flaws in source code) such as unused_mut.C-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCCategory: An issue tracking the progress of sth. like the implementation of an RFCT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.T-langRelevant to the language teamRelevant to the language team
Description
cc @Manishearth @rust-lang/lang
As discussed in the Clippy 1.0 RFC, we would like to uplift some lints from clippy to rustc. Full rationale can be found in https://github.com/rust-lang/rfcs/blob/b9c8471887f308223c226642cad3a8290731b942/text/0000-clippy-uno.md#compiler-uplift
The list of correctness lints in clippy follows. I have checked the boxes of lints that I think should be uplifted
Renamings happening during uplift have been added via -> new_name annotations
- for_loop_over_option: Checks for
forloops overOptionvalues. - eq_op ->
same_operands: Checks for equal operands to comparison, logical and
bitwise, difference and division binary operators (==,>, etc.,&&,
||,&,|,^,-and/). - iter_next_loop ->
for_val_in_iter_next: Checks for loops onx.next(). - deprecated_semver ->
incorrect_semver_strings: Checks for#[deprecated]annotations with asince
field that is not a valid semantic version. - drop_copy ->
dropping_copy_types: Checks for calls tostd::mem::dropwith a value
that derives the Copy trait - not_unsafe_ptr_arg_deref ->
deref_ptr_arg_in_safe_fns: Checks for public functions that dereferences raw pointer
arguments but are not marked unsafe. - logic_bug ->
unused_boolean_operands: Checks for boolean expressions that contain terminals that
can be eliminated. - clone_double_ref ->
cloning_references: Checks for usage of.clone()on an&&T. - almost_swapped ->
incorrect_swaps: Checks forfoo = bar; bar = foosequences. - possible_missing_comma: Checks for possible missing comma in an array. It lints if
an array element is a binary operator expression and it lies on two lines. - wrong_transmute ->
undefined_transmutes: Checks for transmutes that can't ever be correct on any
architecture. - invalid_regex: Checks regex creation
(withRegex::new,RegexBuilder::neworRegexSet::new) for correct
regex syntax. - bad_bit_mask ->
unused_bitmasks: Checks for incompatible bit masks in comparisons. - drop_ref ->
dropping_references: Checks for calls tostd::mem::dropwith a reference
instead of an owned value. - derive_hash_xor_eq: Checks for deriving
Hashbut implementingPartialEq
explicitly or vice versa. - useless_attribute: Checks for
extern crateanduseitems annotated with
lint attributes -
temporary_cstring_as_ptr: Checks for getting the inner pointer of a temporary
CString. - min_max ->
incorrect_clamps: Checks for expressions wherestd::cmp::minandmaxare
used to clamp values, but switched so that the result is constant. - unit_cmp ->
unit_comparisons: Checks for comparisons to unit. - reverse_range_loop ->
incorrect_reversed_ranges: Checks for loops over rangesx..ywhere bothxandy
are constant andxis greater or equal toy, unless the range is
reversed or has a negative.step_by(_). - erasing_op: Checks for erasing operations, e.g.
x * 0. - suspicious_op_assign_impl: Lints for suspicious operations in impls of OpAssign, e.g.
subtracting elements in an AddAssign impl. - float_cmp: Checks for (in-)equality comparisons on floating-point
values (apart from zero), except in functions called*eq*(which probably
implement equality for a type involving floats). - zero_width_space ->
zero_width_spaces: Checks for the Unicode zero-width space in the code. - fn_to_numeric_cast_with_truncation ->
truncating_fn_ptr_to_int_casts: Checks for casts of a function pointer to a numeric type not large enough to store address. - suspicious_arithmetic_impl: Lints for suspicious operations in impls of arithmetic operators, e.g.
subtracting elements in an Add impl. - approx_constant: Checks for floating point literals that approximate
constants which are defined in
std::f32::consts
or
std::f64::consts,
respectively, suggesting to use the predefined constant. - while_immutable_condition ->
unused_while_loop_conditions: Checks whether variables used within while loop condition
can be (and are) mutated in the body. - never_loop: Checks for loops that will always
break,returnor
continuean outer loop. - nonsensical_open_options ->
unused_open_options: Checks for duplicate open options as well as combinations
that make no sense. - forget_copy ->
forgetting_copy_types: Checks for calls tostd::mem::forgetwith a value that
derives the Copy trait - if_same_then_else ->
unused_branching: Checks forif/elsewith the same body as the then part
and the else part. - cast_ptr_alignment: Checks for casts from a less-strictly-aligned pointer to a
more-strictly-aligned pointer - ifs_same_cond ->
unused_branching: Checks for consecutiveifs with the same condition. - out_of_bounds_indexing: Checks for out of bounds array indexing with a constant
index. - modulo_one: Checks for getting the remainder of a division by one.
- inline_fn_without_body ->
inline_fns_without_body: Checks for#[inline]on trait methods without bodies - cmp_nan ->
unused_comparisons: Checks for comparisons to NaN. - ineffective_bit_mask: Checks for bit masks in comparisons which can be removed
without changing the outcome. - infinite_iter ->
infinite_iterators: Checks for iteration that is guaranteed to be infinite. - mut_from_ref ->
returning_mut_ref_from_ref: This lint checks for functions that take immutable
references and return
mutable ones. - unused_io_amount ->
unused_io_amounts: Checks for unused written/read amount. - invalid_ref ->
undefined_references: Checks for creation of references to zeroed or uninitialized memory. - serde_api_misuse: Checks for mis-uses of the serde API.
- forget_ref ->
forgetting_references: Checks for calls tostd::mem::forgetwith a reference
instead of an owned value. - absurd_extreme_comparisons ->
unused_comparisons: Checks for comparisons where one side of the relation is
either the minimum or maximum value for its type and warns if it involves a
case that is always true or always false. Only integer and boolean types are
checked. - for_loop_over_result: Checks for
forloops overResultvalues. - iterator_step_by_zero ->
iter_step_by_zero: Checks for calling.step_by(0)on iterators,
which never terminates. - enum_clike_unportable_variant: Checks for C-like enumerations that are
repr(isize/usize)and have values that don't fit into ani32.
sanmai-NL, ljedrz, mati865, LifeIsStrange, PicoJr and 3 moresinkuu, estebank, sanmai-NL, nrc, phansch and 2 more
Metadata
Metadata
Assignees
Labels
A-lintsArea: Lints (warnings about flaws in source code) such as unused_mut.Area: Lints (warnings about flaws in source code) such as unused_mut.C-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCCategory: An issue tracking the progress of sth. like the implementation of an RFCT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.T-langRelevant to the language teamRelevant to the language team