Commit graph

465 commits

Author SHA1 Message Date
Philipp Hansch
f42272102a
Reimplement the fn_to_numeric_cast lint 2018-10-03 12:02:06 +02:00
Oliver Schneider
b36bb0a68d Reimplement the map_clone lint from scratch 2018-10-02 15:13:43 +02:00
Manish Goregaokar
057243f16b relicensing: Remove map_clone
This removes the code added in https://github.com/rust-lang-nursery/rust-clippy/pull/427
2018-10-02 12:51:38 +02:00
Manish Goregaokar
fffcd093b2 relicensing: Remove fn_to_numeric_cast, fn_to_numeric_cast_with_truncation
This removes the code added in https://github.com/rust-lang-nursery/rust-clippy/pull/2814
2018-10-02 12:49:27 +02:00
Michael Wright
f5ffac4fce Implement unnecesary_filter_map lint 2018-09-26 06:52:36 +02:00
Jane Lusby
14feb3670f Lint for chaining flatten after map
This change adds a lint to check for instances of `map(..).flatten()`
that can be trivially shortened to `flat_map(..)`

Closes #3196
2018-09-24 14:29:16 -07:00
Jay Kickliter
12c7bc1e58 mem_replace: apply update_lints tool. 2018-09-19 14:41:22 -07:00
Jay Kickliter
598df08d88 Add lint for mem::replace(.., None).
Suggest `Option::take()` as an alternative.
2018-09-19 14:38:34 -07:00
flip1995
aaeeaa5330
Add internal lint compiler_lint_functions 2018-09-15 11:01:16 +02:00
Eduard-Mihai Burtescu
9219fc6c5c Reintroduce extern crate for non-Cargo dependencies. 2018-09-15 11:10:51 +03:00
Matthias Krüger
28424ecbfa fix warnings about trivial casts, mostly {i,u}128 -> {i,u}128, such as "i128::min_value() as i128" 2018-09-13 07:59:12 +02:00
Philipp Hansch
e8400061bd
Merge pull request #3085 from mikerite/revert-98dbce
Revert "Fix E0502 warnings"
2018-09-13 06:33:26 +01:00
Matthias Krüger
f6935be71e clippy_lints: enable crate_visibility_modifier since it is used but no longer part of 2018 edition.
Fixes build with https://github.com/rust-lang/rust/pull/53999
2018-09-08 01:32:40 +02:00
Oliver S̶c̶h̶n̶e̶i̶d̶e̶r Scherer
63a46b1e1a
Merge pull request #3129 from mipli/3091-numeric-typo
Add lint for misstyped literal casting
2018-09-07 09:54:43 +02:00
Michael A. Plikk
38d287fecd Add lint for misstyped literal casting 2018-09-05 19:46:49 +02:00
Josh Holmer
fbc93c0166 Lint against needless uses of collect()
Handles cases of `.collect().len()`, `.collect().is_empty()`, and
`.collect().contains()`. This lint is intended to be generic enough to
be added to at a later time with other similar patterns that could be
optimized.

Closes #3034
2018-09-03 23:29:44 -04:00
Josh Triplett
779988303a iter conservation efforts: save the endangered .iter() and .into_iter()
Make explicit_iter_loop and explicit_into_iter_loop allow-by-default, so
that people can turn them on if they want to enforce that style; avoid
presenting them as *the* idiomatic Rust style, rather than just *a* style.
2018-09-03 01:24:46 -07:00
Nick Cameron
d6f01f3a6c Make Conf::default available
Fixes RLS
2018-09-03 13:57:50 +12:00
Manish Goregaokar
c81d70e6bd
Merge pull request #2977 from flip1995/tool_lints
Implement tool_lints
2018-09-01 11:22:23 +05:30
Manish Goregaokar
e0ad732226
Merge pull request #3105 from frewsxcv/frewsxcv-private
Make clippy_lints::{utils,consts} modules private, remove unused items.
2018-08-29 11:24:00 -07:00
flip1995
daa4f0ad34 Implement backwards compatibility changes introduced by rust-lang/rust#53762 2018-08-29 11:08:29 -07:00
flip1995
f3bb161f0e Adapt codebase to the tool_lints 2018-08-29 11:08:29 -07:00
flip1995
8c07772dbb Switch to declare_tool_lint macro 2018-08-29 11:08:29 -07:00
flip1995
392235d6e1 Switch to tool_lints 2018-08-29 11:08:29 -07:00
Corey Farwell
feb3e9fd5f switch lint from 'style' to 'complexity' 2018-08-29 07:02:26 -05:00
Corey Farwell
5ebae01c1e New lint: Suggest ptr.add([usize]) over ptr.offset([usize] as isize).
First part of #3047.
2018-08-28 23:21:29 -05:00
Corey Farwell
05f637cf88 Make clippy_lints::{utils,consts} modules private, remove unused items. 2018-08-28 21:32:20 -05:00
Philipp Krones
9ce826ade1
Merge pull request #3082 from mikerite/move-range-lints
Move some range lints to complexity
2018-08-26 15:08:21 +02:00
Michael Wright
95fedd2273 Revert "Fix E0502 warnings"
This reverts commit 98dbce4fe4.

The compiler no longer emits the warnings in #2982 with the original
code.
2018-08-26 11:21:22 +02:00
Michael Wright
eef3ffab35 Remove iterator_find_map feature attribute
Closes #3083
2018-08-26 11:11:47 +02:00
Michael Wright
cc87dc7539 Move some range lints to complexity
Recategorize `range_plus_one` and `range_minus_one` to `complexity`.
This moves `range_plus_one` out of the nursery as the inclusive range
syntax is now stable. Both are moved to `complexity` as it is more
consistent with other lints such as `int_plus_one`.
2018-08-26 10:57:04 +02:00
Philipp Krones
e91147832c
Merge pull request #3048 from goodmanjonathan/assign_op
deprecate assign_ops lint
2018-08-24 18:29:31 +02:00
Niklas Fiekas
afdf350060 Add copy_iterator lint (#1534) 2018-08-24 11:57:48 +02:00
Matthias Krüger
8ab16b678c
remove macro_vis_matcher feature gate since it is stable now.
Warning was:
warning: the feature `macro_vis_matcher` has been stable since 1.29.0 and no longer requires an attribute to enable
 --> src/lib.rs:4:12
  |
4 | #![feature(macro_vis_matcher)]
  |            ^^^^^^^^^^^^^^^^^
  |
  = note: #[warn(stable_features)] on by default
2018-08-23 15:40:51 +02:00
flip1995
37099ae034
Remove now stable tool_attributes feature 2018-08-23 15:36:07 +02:00
Manish Goregaokar
a7bea134d3 Remove implied rust_2018 feature
We are already on the edition and this feature is implied.
2018-08-19 19:14:47 -07:00
Michael Wright
1c681b6ab6 fix-2927: Update formatting 2018-08-16 07:13:52 +02:00
Michael Wright
bbd67c9b78 Fix #2927 2018-08-15 08:11:07 +02:00
Philipp Krones
84aa49935d
Merge pull request #3026 from dwijnand/fxhash
Add an internal lint for FxHashMap/FxHashSet
2018-08-14 13:04:48 +02:00
Dale Wijnand
7933d445d1
Move shadow_unrelated to pedantic 2018-08-14 09:52:27 +01:00
Dale Wijnand
22ff5a3ef1
Avoid new_without_default_derive in DefaultHashTypes 2018-08-14 09:25:09 +01:00
Jonathan Goodman
160b41dae3 deprecate assign_ops lint 2018-08-13 16:12:41 -05:00
Dale Wijnand
8fc425b676
Add an internal lint for FxHashMap/FxHashSet 2018-08-12 16:15:36 +01:00
Oliver Schneider
d722489e71
Merge pull request #2823 from flip1995/thingies_things
Replace cfg_attr(rustfmt... with rustfmt::skip
2018-08-08 13:14:20 +02:00
Michael Wright
ffce3c77e4 Fix #3000 2018-08-06 08:20:50 +02:00
flip1995
12f2d61fa9
Replace cfg_attr(rustfmt... thingies 2018-08-02 23:04:20 +02:00
Manish Goregaokar
f43d0e53b2 Make indexing_slicing a restriction lint (fixes #2933) 2018-08-02 10:06:03 -07:00
Michael Wright
98dbce4fe4 Fix E0502 warnings
Fixes #2982
2018-08-01 06:33:08 +02:00
Oliver Schneider
afd91248ed Rustup 2018-07-23 13:01:12 +02:00
Oliver Schneider
ff0e5f967f Rewrite the print/write macro checks as a PreExpansionPass 2018-07-23 00:19:07 +02:00
Oliver Schneider
8085ed733f Don't invent new magic keywords 2018-07-21 12:36:01 +02:00
Oliver Schneider
2fa85d86e0 Rustup 2018-07-20 22:50:04 +02:00
Manish Goregaokar
3c2b54870e Remove warning 2018-07-20 00:50:02 -07:00
Manish Goregaokar
5918a3fc1e Remove import of if_chain 2018-07-20 00:50:02 -07:00
Manish Goregaokar
c7676356b8 Remove import of matches 2018-07-19 01:06:02 -07:00
Manish Goregaokar
5d74e2096b Remove import of rustc 2018-07-19 00:53:23 -07:00
Manish Goregaokar
00ba67a12b Remove import of lazy_static 2018-07-19 00:11:15 -07:00
Manish Goregaokar
c1745cde82 Remove import of serde 2018-07-19 00:02:08 -07:00
Manish Goregaokar
c05adc545c Temporarily allow macro_use_extern_crate 2018-07-18 20:24:37 -07:00
gnzlbg
999a00bf5e address reviews 2018-07-04 15:32:55 +02:00
gnzlbg
7c4ec40346 add missing_inline lint
When turned on, the lint warns on all exported functions, methods,
trait methods (default impls, impls), that are not `#[inline]`.

Closes #1503.
2018-07-04 13:50:39 +02:00
Mateusz Mikuła
a24f77f65a Bump the version 2018-06-29 09:55:20 +02:00
Oliver Schneider
656b26ea4f
Merge pull request #2832 from kennytm/non-copy-const
Lint against const items which are interior mutable.
2018-06-28 08:39:54 +02:00
Mateusz Mikuła
a6601f2d02 Enable rust_2018_idioms warning 2018-06-25 20:56:25 +02:00
Oliver Schneider
9f8624e5bf Version bump 2018-06-25 18:18:50 +02:00
kennytm
88b7603b16
Lint against const items which are interior mutable. Fix #1560. 2018-06-23 03:35:36 +08:00
Shea Newton
a7c0ff3fa6
This commit represents an attempt to address changes requested in the process of reviewing PR #2790.
The changes reflected in this commit are as follows:

- Revised `IndexingSlicingPass` struct name to IndexingSlicing for consistency with the rest of the code base.
- Revised match arm condition to use `(..)` shorthand in favor of `(_, _, _)`.
- Restored a couple telling variable names.
- Calls to `cx.span_lint` were revised to use `utils::span_help_and_lint`.
- Took a stab at refactoring some generalizable calls to `utils::span_help_and_lint` to minimize duplicate code.
- Revised INDEXING_SLICING declaration to pedantic rather than restriction.
- Added `&x[0..].get(..3)` to the test cases.
2018-06-19 16:28:10 +00:00
Shea Newton
5b759efa4c
Rename instances of array_indexing
This commit renames instances of `array_indexing` to `indexing_slicing` and moves the `indexing_slicing` lint to the `clippy_pedantic` group. The justification for this commit's changes are detailed in the previous commit's message.
2018-06-19 16:27:39 +00:00
Shea Newton
7af0c67855
Extend indexing_slicing lint
Hey there clippy team! I've made some assumptions in this PR and I'm not at all certain they'll look like the right approach to you. I'm looking forward to any feedback or revision requests you have, thanks!

    Prior to this commit the `indexing_slicing` lint was limited to indexing/slicing operations on arrays. This meant that the scope of a really useful lint didn't include vectors. In order to include vectors in the `indexing_slicing` lint a few steps were taken.

    The `array_indexing.rs` source file in `clippy_lints` was renamed to `indexing_slicing.rs` to more accurately reflect the lint's new scope. The `OUT_OF_BOUNDS_INDEXING` lint persists through these changes so if we can know that a constant index or slice on an array is in bounds no lint is triggered.

    The `array_indexing` tests in the `tests/ui` directory were also extended and moved to `indexing_slicing.rs` and `indexing_slicing.stderr`.

    The `indexing_slicing` lint was moved to the `clippy_pedantic` lint group.

    A specific "Consider using" string was added to each of the `indexing_slicing` lint reports.

    At least one of the test scenarios might look peculiar and I'll leave it up to y'all to decide if it's palatable. It's the result of indexing the array `x` after `let x = [1, 2, 3, 4];`

    ```
    error: slicing may panic. Consider using `.get(..n)`or `.get_mut(..n)`instead
      --> $DIR/indexing_slicing.rs:23:6
       |
    23 |     &x[0..][..3];
       |      ^^^^^^^^^^^
    ```

    The error string reports only on the second half's range-to, because the range-from is in bounds!

    Again, thanks for taking a look.

    Closes #2536
2018-06-19 16:27:08 +00:00
Oliver Schneider
d761ba78d8
Merge pull request #2837 from fanzier/panicking_unwrap
Implement lint checking for `unwrap`s that will always panic.
2018-06-19 13:30:38 +02:00
Oliver Schneider
4839c790ae
Merge pull request #2844 from illicitonion/default_trait_access
Add default_trait_access lint
2018-06-19 10:10:20 +02:00
Mateusz Mikuła
8625cfb988 Version bump 2018-06-18 09:56:58 +02:00
Wim Looman
700ece5648 Allow configuring the trivial copy size limit 2018-06-15 16:53:34 +02:00
Wim Looman
7547a4ddef New Lint: Pass small trivially copyable objects by value
Fixes #1680

Hardcoded for 64-bit "trivial" size for now
2018-06-15 16:53:34 +02:00
Daniel Wagner-Hall
4866309f9d Add default_trait_access lint 2018-06-14 09:11:46 +01:00
Oliver Schneider
26bc88d48c
Merge pull request #2839 from mikerite/duration_subsec_pr_2
Add duration_subsec lint
2018-06-12 06:30:20 -07:00
Fabian Zaiser
8682858e2c Categorize the unwrap lints correctly. 2018-06-12 15:06:46 +02:00
Oliver Schneider
8f0edba6e9
Merge pull request #2815 from darArch/master
Warn if non-trivial work is done inside .expect
2018-06-11 06:33:26 -07:00
Michael Wright
2d427ea7ee Merge branch 'master' into duration_subsec_pr_2 2018-06-11 07:48:10 +02:00
Oliver Schneider
8fe90e41d0 Publish preparation 2018-06-10 06:22:07 +02:00
Michael Wright
b0d364cb3e duration_subsec: fix declaration; correctly classify 2018-06-09 11:04:21 +02:00
Michael Wright
7b2fa2077f Add duration_subsec lint
Closes #2543
2018-06-09 10:21:26 +02:00
Fabian Zaiser
81821acd59 Implement lint that checks for unidiomatic unwrap() (fixes #1770)
This checks for things like

    if x.is_some() {
        x.unwrap()
    }

which should be written using `if let` or `match` instead.

In the process I moved some logic to determine which variables are
mutated in an expression to utils/usage.rs.
2018-06-08 05:29:25 +02:00
Oliver Schneider
1e1b4e26ea
Merge pull request #2814 from VKlayd/fn_to_int
WIP: Add lint on cast Fn to all numerical except usize.
2018-06-05 17:08:33 +02:00
Donald Robertson
05c1ccebaf Warn if non-trivial work is done inside .expect
- added tests for common usages of format and as_str arguments to expect
- added tests for usages of Option and Result types
- given performance impact of passing non literal expressions to expect, added to perf group
2018-06-04 19:43:03 +01:00
Bruno Kirschner
6d51559f62 Added lint to avoid negated comparisions on partially ordered types. 2018-06-03 21:46:09 +02:00
Oliver Schneider
1ba658772a
Merge pull request #2816 from mockersf/multiple-impl
adding to restriction a lint that check for multiple inherent implementations
2018-05-31 13:33:35 +02:00
Oliver Schneider
bb2f6a5011
Merge pull request #2821 from mati865/rust-2018-migration
Rust 2018 migration
2018-05-30 15:55:11 +02:00
Mateusz Mikuła
26f3feb980 Add rust_2018_preview feature and fix rustfmt annotation 2018-05-30 10:10:01 +02:00
François Mockers
d372f1674d move lint to restriction group 2018-05-29 21:28:52 +02:00
François Mockers
44f4ea6dbf adding to pedantic a lint that check for multiple inherent implementations 2018-05-29 21:28:52 +02:00
Victor Korkin
f6e0388e08 Change lint type to unique and add the suggestion. 2018-05-29 22:56:38 +07:00
Oliver Schneider
ce229b2025 Version bump 2018-05-29 11:58:58 +02:00
Mateusz Mikuła
8ed8ee895a Update to nightly 2018-05-28 2018-05-29 10:56:58 +02:00
Oliver Schneider
0d1e06d638
Merge pull request #2808 from Aaronepower/master
Added lint for unnecessary references.
2018-05-28 13:50:31 +02:00
Aaron Power
8b679176fa Added lint for unnecessary references 2018-05-28 13:07:19 +02:00
Oliver Schneider
b979f62aab
Merge pull request #2810 from Aaronepower/stable_feature_flags
Removed stable feature flags
2018-05-28 12:59:25 +02:00
Aaron Power
1931f53396 Removed stable feature flags 2018-05-28 10:03:27 +02:00
Reiner Dolp
78b8d5cf1a running update lints script 2018-05-27 16:16:41 +02:00
Oliver Schneider
fc008aa14c Rustup 2018-05-26 10:23:34 +02:00
Michael A. Plikk
1f10dd2606 Fix note on macro outside current crate. Changed group to restricted 2018-05-24 19:38:40 +02:00
Michael A. Plikk
88c3c2f1c2 Rename panic files to panic_unimplemented 2018-05-24 10:04:18 +02:00
Michael A. Plikk
77794e91e2 Create lint for unimplemented!() 2018-05-24 10:04:18 +02:00
Oliver Schneider
e0df4ccfc5 Use the new scoped tool attributes 2018-05-19 14:04:57 +02:00
Oliver Schneider
c1b39c4551
Merge pull request #2713 from alexreg/nightly-fix
Fixed build for latest rust master
2018-05-04 15:06:59 +02:00
Oliver Schneider
8f1a98ff08
remove unused crate import 2018-05-03 10:56:02 +02:00
Yusuf Simonson
7de706b34b Lint for multiple versions of dependencies 2018-04-30 06:20:39 +07:00
Mateusz Mikuła
cc7d66aa9c rustup 2018-04-27 14:00:43 +02:00
Oliver Schneider
3b6440212d
Merge pull request #2673 from estk/excessive_precision
Excessive precision
2018-04-25 18:37:42 +02:00
Evan Simmons
9b14ad493b New excessive precision lint for floats 2018-04-24 15:18:23 -07:00
Oliver Schneider
faefb4f225
Merge pull request #2684 from 17cupsofcoffee/infallible-destructuring-match
Lint for destructuring tuple structs/variants with an infallible single-armed match
2018-04-24 19:08:27 +02:00
Joe Clay
3c38a36d5a Implement lint for destructuring tuple structs with a let and a match (closes #2671) 2018-04-24 17:56:13 +01:00
Oliver Schneider
c5b39a5917
Version bump 2018-04-19 08:36:22 +02:00
Oliver Schneider
ae3213747d
Merge pull request #1467 from philipturnbull/option_map_nil_fn
Lint `Option.map(f)` where f returns unit
2018-04-15 16:14:25 +02:00
Oliver Schneider
9dc9487567
Version bump 2018-04-15 15:01:48 +02:00
Philipp Hansch
4f4e20c561
Also lint Result.map for unit returns 2018-04-15 13:59:57 +02:00
Philipp Hansch
8307a899e9
Rename option_map_unit_fn to map_unit_fn 2018-04-15 13:01:10 +02:00
Philipp Hansch
a3ff21f4d6
Rename lint to option_map_unit_fn
Rust does not have nil.
2018-04-15 13:01:09 +02:00
Phil Turnbull
e5ecbb55ee
Lint Option.map(f) where f returns nil 2018-04-15 13:01:09 +02:00
Oliver Schneider
8ec61a613a
Merge pull request #2661 from devonhollowood/ptr-ptr-casts
Replace `misaligned_transmute` lint
2018-04-11 13:23:15 +02:00
Devon Hollowood
b77d74030b Deprecate misaligned_transmute 2018-04-11 02:50:04 -07:00
Devon Hollowood
c6bc682325 Fix misaligned_transmute lint
This is done by adding two new lints: cast_ptr_alignment and
transmute_ptr_to_ptr. These will replace misaligned_transmute.
2018-04-11 02:17:59 -07:00
Oliver Schneider
0692b2bb92
Temporarily disable the needless_borrow lint 2018-04-08 11:13:46 +02:00
Evan Simmons
d712991917 New lints for write! / writeln! macros. 2018-04-07 22:45:26 -07:00
Manish Goregaokar
2046694029 Bump version to 0.0.192 2018-04-04 18:00:21 -07:00
Oliver Schneider
c1bbc173da
Address review comments 2018-03-29 13:41:53 +02:00
Oliver Schneider
eafb9fe8df
Update test suite 2018-03-28 23:49:32 +02:00
Oliver Schneider
d6344c47e3
Categorize all the lints! 2018-03-28 15:24:26 +02:00
Oliver Schneider
ef9fdbb8a9
Implementation + move one lint 2018-03-27 17:13:55 +02:00
Oliver Schneider
9fb63d5fc4
Merge pull request #2574 from mark-i-m/i128
i128 is stabilizing
2018-03-26 07:04:42 +02:00
Mark Mansi
f25d4fd253 make it pass for now 2018-03-25 21:04:05 -05:00
Mark Mansi
a4d869ca76 i128 is stable 2018-03-25 20:35:23 -05:00
Mateusz Mikuła
c7770bf907 Remove attributes for stable features
Signed-off-by: Mateusz Mikuła <mati865@gmail.com>
2018-03-16 11:09:05 +01:00
Oliver Schneider
8749927973
Rustup 2018-03-16 09:44:20 +01:00
Oliver Schneider
f7b2578aea
Update to rustc master 2018-03-13 11:38:21 +01:00
Oliver Schneider
4cf02c7e1a
Merge pull request #2483 from kimsnj/infinite_loop
immutable while condition
2018-03-07 08:09:48 +01:00
Manish Goregaokar
539b4b61ec Bump to 0.0.187 2018-02-26 12:32:18 -08:00
Manish Goregaokar
a512fb265b oops 2018-02-26 12:31:29 -08:00
Manish Goregaokar
167d978372 Rustup to rustc 1.26.0-nightly (322d7f7b9 2018-02-25) 2018-02-26 11:57:14 -08:00
Karim Snj
5c1be4a4ba lint: immutable only vars in while condition 2018-02-25 18:25:31 +01:00
Philipp Krones
c43e053f3f
Merge branch 'master' into suspicious_impl 2018-02-19 13:04:14 +01:00
flip1995
aa20277a17 Lint for suspicious implementations of arithmetic std::ops traits 2018-02-13 15:40:17 +01:00
TomasKralCZ
85642ddd23 Implement redundant field names lint #2244 2018-02-10 22:52:31 +01:00
flip1995
63a7daf78c Make decimal_literal_representation a restriction lint 2018-02-06 13:05:20 +01:00
Manish Goregaokar
8e8cf2feb1 Bump to 0.0.185 2018-02-02 13:23:32 +05:30
Guillem Nieto
74ae9b15b5 Add question mark operator 2018-01-31 00:10:35 +01:00
Oliver Schneider
8123495e0f
Version bump 2018-01-30 15:02:47 +01:00
Oliver Schneider
39d1d6081f
Merge pull request #2340 from phansch/newline_after_attributes
Warn on empty lines after outer attributes
2018-01-30 13:09:23 +01:00
Seiichi Uchida
a3c2323767 Add double comparions lint 2018-01-30 10:35:35 +09:00
Philipp Hansch
80827c1f74
Warn on empty lines after outer attributes 2018-01-29 10:03:52 +01:00