Commit graph

1737 commits

Author SHA1 Message Date
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
Michael Wright
6256ad05ba fix-3078: verify test case
Check the crash test case by commenting out the fix
2018-08-25 22:35:06 +02:00
Michael Wright
45ceecc79c Fix #3078 2018-08-25 14:49:56 +02:00
Philipp Krones
b1620f5d3a
Merge pull request #3080 from matthiaskrgr/manual_swap_example
add how-to example for std::mem::transmute() usage instead of manual swap
2018-08-24 19:47:17 +02:00
Matthias Krüger
f7be2a0416 add how-to example for std::mem::transmute() usage instead of manual swap 2018-08-24 18:41:49 +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
Philipp Krones
562c576ed3
Merge pull request #3059 from elpiel/writeln_empty_string_harcoded-suggestion
#3016 writeln_empty_string Hardcoded suggestion
2018-08-24 18:28:50 +02:00
Niklas Fiekas
afdf350060 Add copy_iterator lint (#1534) 2018-08-24 11:57:48 +02:00
Matthias Krüger
c98987f390 fix clippy breakage due to https://github.com/rust-lang/rust/pull/52602 2018-08-23 21:41:30 +02:00
Matt Brubeck
6a0703664b
Remove incorrect note from string_add_assign docs
The docs claim that `String::push_str` is better than `String::add` because `String::add` allocates a new string and drops the old one, but this is not true.  In fact, `add` reuses the existing string and grows it only if its capacity is exceeded, exactly like `push_str`.  Their performance is identical since `add` is just a wrapper for `push_str`:

```
    fn add(mut self, other: &str) -> String {
        self.push_str(other);
        self
    }
```

35bf1ae257/src/liballoc/string.rs (L1922-L1925)
2018-08-23 08:38:41 -07: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
Matthias Krüger
712d2d4fa1 rustup, fix breakage introduced by https://github.com/rust-lang/rust/pull/53581 2018-08-22 23:34:52 +02:00
Lachezar Lechev
76f7bfcefd #3016 Add backticks for the msg 2018-08-20 15:50:15 +02:00
Lachezar Lechev
c292b80783 #3016 Add feedback and implement test for fixed hardcoded suggestion 2018-08-20 15:33:43 +02:00
Lachezar Lechev
3015987f27 #3016 [WIP] Implement feedback and suggestions 2018-08-20 14:03:13 +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
Manish Goregaokar
76321d3300 codemap -> source_map
https://github.com/rust-lang/rust/pull/52953
2018-08-19 19:06:54 -07:00
Lachezar Lechev
6cb94630fb WIP of #3016 for hardocded suggestion for writeln on empty string 2018-08-16 18:20:06 +02: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
Manish Goregaokar
bac76afb5a Rustup to rustc 1.30.0-nightly (23f09bbed 2018-08-14) 2018-08-14 11:26:28 -07: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
Philipp Krones
b2a4013c14
Merge pull request #3014 from estk/allow-write-multi-newline
Allow print/write with multiple newlines
2018-08-14 12:54:05 +02:00
Philipp Krones
826d998cd2
Merge pull request #3036 from matthiaskrgr/clippy_self
fix 2 clippy warnings
2018-08-14 12:53:01 +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
1812707d39
Use utils::span_lint_and_sugg in default_hash_types 2018-08-13 11:49:57 +01:00
Dale Wijnand
8fc425b676
Add an internal lint for FxHashMap/FxHashSet 2018-08-12 16:15:36 +01:00
Matthias Krüger
88d693918f docs: add more suggestions on how to fix clippy findings to the online lint list. 2018-08-12 11:29:44 +02:00
Matthias Krüger
66ca3954ec fix 2 clippy warnings 2018-08-11 23:16:47 +02:00
Oliver Schneider
99a087bea5 Update to rustc master 2018-08-08 13:19:07 +02: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
Nick Cameron
b109e10334 Fix build 2018-08-08 18:01:06 +12:00
Evan Simmons
550ff84ecd Allow print/write with multiple newlines 2018-08-07 12:01:10 -08:00
Oliver Schneider
328fea3e0d Rustup 2018-08-07 16:34:17 +02:00
Oliver Schneider
77025557f9
Merge pull request #3009 from dwijnand/option-map_or
Use Option::map_or
2018-08-07 13:11:30 +02:00
Oliver Schneider
1af90085a1
Merge pull request #3008 from dwijnand/remove-workaround
Remove #[allow(rust_2018_idioms)] workaround
2018-08-07 13:10:54 +02:00
Oliver Schneider
dc5ee5aa19
Merge pull request #3010 from mikerite/issue2971
Fix #2971
2018-08-07 13:10:26 +02:00
Scott McMurray
73e097e9f1 Fix the build after https://github.com/rust-lang/rust/pull/53016
In-band lifetimes are no longer in the edition, so update the one place that was using them.
2018-08-07 00:05:09 -07:00
Michael Wright
a3d7698fd9 Fix #2971 2018-08-07 05:37:11 +02:00
Dale Wijnand
7a5ede677b
Use Option::map_or 2018-08-06 17:52:09 +01:00
Dale Wijnand
1a310bfdf7
Remove #[allow(rust_2018_idioms)] workaround 2018-08-06 17:51:04 +01:00
Oliver Schneider
b18a3c5b60
Merge pull request #3007 from mikerite/issue3000
Fix #3000
2018-08-06 09:16:42 +02:00
Michael Wright
ffce3c77e4 Fix #3000 2018-08-06 08:20:50 +02:00
Philipp Hansch
f6c4e303c9
Merge pull request #2999 from flip1995/single_char_pattern
Fix single_char_pattern lint for escaped chars
2018-08-06 07:05:04 +01:00
Philipp Hansch
32e4897854
Merge pull request #2975 from aaudiber/lint-identity-into-iter
Lint using identity into_iter conversion
2018-08-05 20:38:28 +01:00
Philipp Hansch
a016d4efe0
Merge pull request #2991 from mikerite/issue2979
Fix #2979
2018-08-05 20:35:55 +01:00
Nick Cameron
99dcc70dcd Fix error in CrateType in latest Rust 2018-08-05 09:35:08 +12:00
Manish Goregaokar
0ff762f7cd Rustup to 59fa6bd6c 2018-08-03 10:14:25 -07:00
flip1995
55672e7e49
Fix single_char_pattern lint for escaped chars 2018-08-03 10:19:29 +02:00
Alex Crichton
8ef759e027 Fix fallout from rust-lang/rust#52841 2018-08-02 18:08:22 -07:00
flip1995
12f2d61fa9
Replace cfg_attr(rustfmt... thingies 2018-08-02 23:04:20 +02:00
Philipp Krones
5d9ca00d94
Merge pull request #2992 from etaoins/allow-pass-by-ref-on-adt-return
Allow pass by ref when returning ADT with ref
2018-08-02 22:39:04 +02:00
Alex Crichton
40349b23ea Fix breakage from rust-lang/rust#52949 2018-08-02 13:00:14 -07:00
Manish Goregaokar
f43d0e53b2 Make indexing_slicing a restriction lint (fixes #2933) 2018-08-02 10:06:03 -07:00
reujab
1afb7e895b removed colon 2018-08-02 11:52:46 -04:00
Ryan Cumming
08d6b3d2f6 Allow pass by ref when returning ADT with ref
This is a follow-up to #2951 that extends the logic to allow for
returning references inside structs/enums/unions. This was a simple
oversight in the first version and it's surprisingly easy to handle.
2018-08-02 17:57:49 +10:00
Michael Wright
534d546c81 Fix #2979 2018-08-02 08:56:53 +02:00
Andrew Audibert
3851c0e22b Address build warning 2018-07-31 23:53:45 -07:00
Philipp Hansch
d7ffaab0fb
Merge pull request #2968 from phansch/first_an_ICE_and_then_some_ice_cream
Fix ICE with 'while let Some(..) = x.iter()'
2018-08-01 06:18:34 +01:00
Philipp Hansch
4dbc62baf8
Merge pull request #2983 from mikerite/fix_warnings_20180730
Fix compiler warnings
2018-08-01 06:18:18 +01:00
Michael Wright
98dbce4fe4 Fix E0502 warnings
Fixes #2982
2018-08-01 06:33:08 +02:00
flip1995
74fcf7de4a
single_char_pattern: lint only on the argument span 2018-07-31 12:20:32 +02:00
Michael Wright
9c53b1560c Fix unused_mut warning 2018-07-31 07:45:05 +02:00
Andrew Audibert
0ea1afab3a Lint using identity into_iter conversion 2018-07-29 21:37:31 -07:00
Philipp Krones
4010788b3a
Merge pull request #2917 from mikerite/issue2894
Fix #2894
2018-07-29 23:54:03 +02:00
Philipp Hansch
0aeb82cb67
Merge pull request #2959 from chrisduerr/master
Add known problem to `needless_borrow` lint
2018-07-29 12:15:17 +02:00
Philipp Hansch
946340acfe
Fix ICE with 'while let (..) = x.iter()' 2018-07-29 11:00:26 +02:00
Michael Wright
d7ddb2abba Add use_self comment 2018-07-28 10:42:21 +02:00
Michael Wright
8eeb3feadf Merge branch 'master' into issue2894 2018-07-28 08:41:10 +02:00
Oliver Schneider
b0dabce478
Merge pull request #2963 from commandline/master
Fix regression in print_literal
2018-07-26 10:11:34 +02:00
Thomas Gideon
bf3f976a43 Fix regression in print_literal 2018-07-25 17:31:17 -04:00
Philipp Hansch
e1096391dc
Merge pull request #2960 from matthiaskrgr/typos
fix a bunch of typos found by codespell
2018-07-25 22:57:10 +02:00
Philipp Hansch
3bd062e1d9
Merge pull request #2948 from Nemo157/patch-1
Add known problem for redundant_closure lint
2018-07-25 22:55:36 +02:00
Matthias Krüger
2665f10662 fix a bunch of typos found by codespell 2018-07-25 20:02:52 +02:00
Matthias Krüger
cfc9b33f17 Merge branch 'master' into typos 2018-07-25 19:54:45 +02:00
Christian Duerr
13353111da
Add known problem to needless_borrow lint
The `needless_borrow` lint is temporarily disabled because of some false
positives it causes in combination with the `derive` macro.

However the documentation does not explain these issues, but instead
lists `Known problems: None`. To make it clear why this lint is
currently not enabled, a description of the false positives caused by
this lint has been added to the `Known problems` section.
2018-07-25 14:54:09 +02:00
Michael Wright
137f944315 Fix warnings 2018-07-25 06:34:29 +02:00
Michael Wright
5e23fcec0b Merge branch 'master' into issue2894 2018-07-25 06:27:36 +02:00
Dale Wijnand
a1cce2d06a
Inline utils::in_external_macro 2018-07-24 10:38:58 +01:00
Dale Wijnand
b1fa7b91ba
Delegate utils::in_external_macro to rustc::lint::in_external_macro 2018-07-24 10:34:18 +01:00
Philipp Krones
b02e53de34
Merge pull request #2951 from etaoins/allow-pass-by-ref-on-ref-return
Allow pass by reference if we return a reference
2018-07-24 11:23:01 +02:00
Philipp Krones
3f9b837ec8
Merge pull request #2953 from dwijnand/misrefactored_assign_op-known-problem-doc
Expand on misrefactored_assign_op known problems
2018-07-24 11:19:58 +02:00
Ryan Cumming
0afa5e1e21 Merge branch 'master' into allow-pass-by-ref-on-ref-return 2018-07-24 19:03:43 +10:00
Dale Wijnand
70f5bb1ff6
Tweak
misrefactored_assign_op's known problems wording
2018-07-24 09:26:28 +01:00
Dale Wijnand
6ad7a92ff8
Expand on misrefactored_assign_op known problems 2018-07-24 08:39:18 +01:00
Oliver Schneider
afd91248ed Rustup 2018-07-23 13:01:12 +02:00
Ryan Cumming
7c74c3e508 Wrap comment at 80 columns 2018-07-23 19:37:41 +10:00
Ryan Cumming
89a4558056 Add Known Problem for multiple lifetimes 2018-07-23 19:33:52 +10:00
Ryan Cumming
58459abd0c Allow pass by reference if we return a reference
Currently this code will trigger `trivally_copy_pass_by_ref`:

```
struct OuterStruct {
    field: [u8; 8],
}

fn return_inner(outer: &OuterStruct) -> &[u8] {
    &outer.field
}
```

If we change the `outer` to be pass-by-value it will not live long
enough for us to return the reference. The above example is trivial but
I've hit this in real code that either returns a reference to either the
argument or in to `self`.

This suppresses the `trivally_copy_pass_by_ref` lint if we return a
reference and it has the same lifetime as the argument. This will likely
miss complex cases with multiple lifetimes bounded by each other but it
should cover the majority of cases with little effort.
2018-07-23 18:44:40 +10:00
Oliver Schneider
ff0e5f967f Rewrite the print/write macro checks as a PreExpansionPass 2018-07-23 00:19:07 +02:00
Wim
26eea10ec1
Add known problem for redundant_closure lint
Documenting https://github.com/rust-lang-nursery/rust-clippy/issues/1439 until it gets fixed.
2018-07-21 18:05:02 +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
1f65617372 Merge branch 'macro-use' into HEAD 2018-07-20 00:52:01 -07:00
Manish Goregaokar
77b0300a55 Merge branch 'pr-2939' into HEAD 2018-07-20 00:51:57 -07: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
Alexander Regueiro
4d2c838a32 Update to nightly 2018-07-20 03:59:07 +01:00
flip1995
ac77a26b8a
Skip useless_attribute lint on allow(unused_imports) on extern crate items with macro_use 2018-07-19 13:59:25 +02: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
Michael Wright
a05c9b63ce use_self: Simplify spanning 2018-07-18 07:57:50 +02:00
Michael Wright
5bb52c4869 Fix use_self regressions 2018-07-17 08:20:49 +02:00
Michael Wright
847e4dcc0d Merge branch 'master' into issue2894 2018-07-17 06:32:39 +02:00
Oliver Schneider
6992937002 Update for hir renamings in rustc 2018-07-16 15:07:39 +02:00
csmoe
8e929946fd DeclKind 2018-07-16 11:48:33 +02:00
csmoe
8cf463fe93 StmtKind 2018-07-16 11:48:33 +02:00
csmoe
12ded030b6 TyKind 2018-07-16 11:48:33 +02:00
csmoe
5d4102ee78 BinOpKind 2018-07-16 11:46:37 +02:00
csmoe
1bd17e4fa2 ExprKind 2018-07-16 11:46:37 +02:00
Michael Wright
b90fc5edfa Fix #2894 2018-07-15 10:38:40 +02:00
Oliver Schneider
5e085e4310 Remove use of ty_to_def_id 2018-07-15 02:04:23 +02:00
Oliver Schneider
1e9f076254 Ignore spans when comparing expressions 2018-07-15 00:00:27 +02:00
Michael Wright
60af4a8e13 Remove duplication in missing_inline 2018-07-08 08:06:24 +02:00
Manish Goregaokar
184b99de39 Merge branch 'pr-2889' 2018-07-06 23:20:01 -07:00
Oliver Schneider
28daee4c91 Rustup 2018-07-05 13:41:51 +02:00
gnzlbg
3fec3b47b6 refactor function 2018-07-05 01:53:40 +02:00
gnzlbg
14cbdf2607 do not apply lint to executable crate type 2018-07-04 16:39:52 +02: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
Oliver Schneider
547d9ca120 Rustup 2018-07-03 10:52:59 +02:00
Oliver Schneider
141f79f844 Rustup 2018-07-02 19:07:12 +02:00
Oliver Schneider
63041d070b Rustup 2018-07-01 13:36:14 +02:00
Michael Wright
dfd9e10a2a Use slightly neater check for static lifetimes 2018-07-01 11:58:29 +02:00
Georg Brandl
949f0d9c72 Fix badly mangled lint message for neg-cmp-op-on-partial-ord 2018-06-29 16:55:31 +02:00
Mateusz Mikuła
a24f77f65a Bump the version 2018-06-29 09:55:20 +02:00
Mateusz Mikuła
48cb6e273e Rustup 2018-06-29 09:49:05 +02:00
Mateusz Mikuła
b7d95f486b Fix warnings 2018-06-28 13:33:11 +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
Alex Vermillion
536e7c8f38
Removed placeholder doc-comments
There were comments instructing someone to insert an example, but an example was already present
2018-06-26 20:22:36 -05:00
Manish Goregaokar
73a80c5950
Merge pull request #2872 from rust-lang-nursery/pedantic-default
Move default_trait_access to pedantic
2018-06-26 13:03:31 -07:00
Oliver Schneider
052427e87a
Merge pull request #2873 from mati865/edition2018_next_step
Next step towards Rust 2018...
2018-06-26 11:11:53 +02:00
Oliver Schneider
0de3f36a02
Merge pull request #2849 from mikerite/issue_2741
Fix #2741
2018-06-26 11:08:19 +02:00
Michael Wright
4827bdcc1c Merge branch 'master' into issue_2741 2018-06-26 07:46:56 +02:00
flip1995
b2fb01f23b
Use utils::opt_def_id() instead of def_id() to prevent ICE 2018-06-25 22:25:15 +02:00
Mateusz Mikuła
df3b9cc350 Format the code 2018-06-25 21:41:24 +02:00
Mateusz Mikuła
1036df5699 Fix clippy_lints doc-tests 2018-06-25 21:22:53 +02:00
Mateusz Mikuła
a6601f2d02 Enable rust_2018_idioms warning 2018-06-25 20:56:25 +02:00
Manish Goregaokar
9f24b9d4b3 Move default_trait_access to pedantic 2018-06-25 11:39:48 -07:00
Oliver Schneider
9f8624e5bf Version bump 2018-06-25 18:18:50 +02:00
flip1995
203ad28021
resolve merge of NameAndSpan and ExpnInfo rust-lang/rust#51726 2018-06-25 12:25:20 +02:00
flip1995
535c168791
Fix the tests that got broken by the fixes 2018-06-25 12:25:20 +02:00
flip1995
c83fd39e0e
Resolve conflicts produced by GenericArgs
Addresses the move/zip of Lifetimes and Types vectors from hir::PathParameters into the args vector of GenericArgs
2018-06-25 12:31:39 +02:00
flip1995
d9a80d2f84
Resolve field, struct and function renaming
Addresses the errors produced by (re)moving, merging or renaming
structs, fields and methods by rust-lang/rust#48149 and rust-lang/rust#51580
2018-06-25 12:25:20 +02:00
kennytm
88b7603b16
Lint against const items which are interior mutable. Fix #1560. 2018-06-23 03:35:36 +08:00
flip1995
6224e19b80
Check for arguments before accessing the first arg 2018-06-21 15:46:24 +02:00
Oliver Schneider
25510cfb13
Merge pull request #2790 from shnewto/vectors-to-indexing-slicing-lint
Extend `indexing_slicing` lint
2018-06-21 10:30:40 +02:00
Bruno Kirschner
fedd3ef711 Allows neg_cmp_op_on_partial_ord for external macros (fixes #2856).
The macro always negates the result of the given comparison in its
internal check which automatically triggered the lint. As its an
external macro there was no chance to do anything about it which lead
to a white listing of all external macros to prevent further issues.
2018-06-20 11:58:15 +02:00
Shea Newton
c479b3bc28
Removing lint for constant usize array indexing
This commit removes the logic in this PR that linted out-of-bounds constant `usize` indexing on arrays. That case is already handled by rustc's `const_err` lint. Beyond removing the linting logic, the test file and its associated stderr were updated to verify that const `usize` indexing operations on arrays are no longer handled by this `indexing_slicing` lint.
2018-06-19 21:30:43 +00:00
Shea Newton
4ec439bef0
Revisiting indexing_slicing test cases
This commit contains a few changes. In an attempt to clarify which test cases should and should not produce stderr it became clear that some cases were being handled incorrectly. In order to address these test cases, a minor re-factor was made to the linting logic itself.

The re-factor was driven by edge case handling including a need for additional match conditions for `ExprCall` (`&x[0..=4]`) and `ExprBinary` (`x[1 << 3]`). Rather than attempt to account for each potential `Expr*` the code was re-factored into simply "if ranged index" and an "otherwise" conditions.
2018-06-19 16:28:10 +00:00
Shea Newton
8b59542acc
Second pass at addressing changes requested
The changes reflected in this commit (requested in PR #2790) are as follows:

- Extended `INDEXING_SLICING` documentation to include the array type so that it is clearer when indexing operations are allowed.
- Variable `ty` defined identically in multiple scopes was moved to an outer scope so it's only defined once.
- Added a missing return statement to ensure only one lint is triggered by a scenario.
- Prettified match statement with a `let` clause. (I learned something new!)
- Added `&x[5..].iter().map(|x| 2 * x).collect::<Vec<i32>>()` and `&x[2..].iter().map(|x| 2 * x).collect::<Vec<i32>>()` to the test cases. The first _should trigger the lint/stderr_ and the second _should not_.
2018-06-19 16:28:10 +00: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
uHOOCCOOHu
ce1800d599
Check lifetimes in Fn traits in generic bounds.
Add tests.
2018-06-19 21:25:38 +08: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
Oliver Schneider
7d672888fe Version bump 2018-06-19 09:56:37 +02:00
Michael Wright
7df5601f5c Merge branch 'master' into issue_2741 2018-06-19 07:41:52 +02:00
Michael Wright
0f83c68698 Replace Constant::partial_cmp 2018-06-19 07:37:09 +02:00
Daniel Wagner-Hall
b24d75313e Exclude generated code 2018-06-18 10:29:25 +01:00
Mateusz Mikuła
8625cfb988 Version bump 2018-06-18 09:56:58 +02:00
Michael Wright
7a32c28931 Fix #2741 2018-06-16 18:33:11 +02:00
Wim Looman
621fdcc3bc Dogfood new trivially_copy_pass_by_ref lint 2018-06-15 16:53:34 +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
Manish Goregaokar
0c23112846 More doc fixes 2018-06-15 00:20:46 -07:00
Manish Goregaokar
00a0efc566 Doc fix syntax 2018-06-15 00:19:19 -07: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
817da4c00a Fix documentation 2018-06-12 15:06:46 +02:00
Fabian Zaiser
35d1b19a03 Fix markdown. 2018-06-12 15:06:46 +02:00
Fabian Zaiser
8682858e2c Categorize the unwrap lints correctly. 2018-06-12 15:06:46 +02:00
Fabian Zaiser
0c6730d851 Update known problems. 2018-06-12 15:04:44 +02:00
Fabian Zaiser
23404287fc Implement lint checking for unwraps that will always panic. 2018-06-12 15:04:44 +02:00
Michael Wright
725e9621d0 duration_subsec: Add check for subsec_micros 2018-06-12 08:25:10 +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
Donald Robertson
c6fb47331a Updating docs to reflect more recent changes to expect_fun_call lint 2018-06-11 14:17:40 +01: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
Oliver Schneider
91986fa933
Merge pull request #2836 from mati865/upcoming_breakage
Upcoming breakage
2018-06-09 06:56:39 +02:00
Fabian Zaiser
54826cf72e Address review comments. 2018-06-08 06:02:25 +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
Mateusz Mikuła
3693a4ea53 Formatting 2018-06-07 22:01:46 +02:00
Oliver Schneider
2a2e602f2a
Merge pull request #2833 from phansch/cannot_relate_bound_region_without_ICE_cream
Fix cargo late bound region mismatch ICE
2018-06-07 11:52:32 +02:00
Philipp Hansch
17aff1d774
Fix cargo late bound region mismatch ICE 2018-06-07 07:42:45 +02:00
Donald Robertson
e70632215e Combining if statements per lint warnings on build 2018-06-06 20:38:13 +01:00
Donald Robertson
9c73f7ff18 Amending use of Some with discarded value to use is_some 2018-06-06 17:13:31 +01:00
Donald Robertson
e67d2b2663 Added check to ensure format macro only being handled, refactored extraction and checks to smaller functions. 2018-06-06 16:53:11 +01:00
Oliver Schneider
7563d8155b
Merge pull request #2804 from utaal/expr-call-author
Add support for ExprCall in clippy::author
2018-06-06 15:17:47 +02:00
Donald Robertson
451fd5feb9 Extracting arguments to format to pass directly to panic when appropriate 2018-06-05 21:15:08 +01: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
32404741c6 Replacing match block with if block as conditional was boolean 2018-06-04 19:43:03 +01:00
Donald Robertson
1ead12c500 Adding handling and tests for custom type with implemented expect method 2018-06-04 19:43:03 +01:00
Donald Robertson
fe8c9d5965 Ensuring correct lint message is output for Option and Result type 2018-06-04 19:43:03 +01:00
Donald Robertson
2b36017bad Removing unnecessary allow 2018-06-04 19:43:03 +01: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
28f735bb26 Cleaned implements_ord helper function in boolean lint file. 2018-06-03 22:56:17 +02:00
Bruno Kirschner
80728a2201 Reduced scope of nonminimal_bool so that it doesn't evaluate only partially orded types. 2018-06-03 21:46:09 +02:00
Bruno Kirschner
09ea75bee9 Fixed spelling and indentation issues in neg_cmp_op_on_partial_ord related files. 2018-06-03 21:46:09 +02:00
Bruno Kirschner
86304d8dde Use declare_clippy_lint instead of declare_lint. 2018-06-03 21:46:09 +02:00
Bruno Kirschner
6d51559f62 Added lint to avoid negated comparisions on partially ordered types. 2018-06-03 21:46:09 +02:00
Oliver Schneider
c6d53ad2c0
Merge pull request #2813 from terry90/master
unreadable_literal: Fills hexadecimal values with 0 to allow better grouping
2018-06-03 12:53:45 +02:00
Terry Raimondo
2c1451817c Compute digits vec only once 2018-06-03 12:26:50 +02:00
Oliver Schneider
1c6c79f92c Version bump 2018-06-03 08:59:10 +02:00
Victor Korkin
24ab207671 Divide FN_TO_NUMERIC lint into two.
FN_TO_NUMERIC_CAST_WITH_TRUNCATION is correctness check
FN_TO_NUMERIC_CAST is only style check
2018-06-01 23:08:11 +07: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
41f23f5b4d
Merge pull request #2819 from zayenz/no-op-ref-in-macro
avoid op-ref in macros
2018-05-31 12:02:09 +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
Victor Korkin
e6811b9c26 Fix 'help' message 2018-05-30 16:55:03 +07:00
Mateusz Mikuła
424a33720d Run rustfix 2018-05-30 10:15:50 +02:00
Mateusz Mikuła
26f3feb980 Add rust_2018_preview feature and fix rustfmt annotation 2018-05-30 10:10:01 +02:00
Victor Korkin
b69520f5fd Fixes for suggestion message, tests and lint explanation. 2018-05-30 11:48:46 +07:00
Victor Korkin
e4b2a97401 weird thing 2018-05-30 07:55:48 +07: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
Devon Hollowood
9118cd633e Simplify lifetime-differences-only detection
Now instead of reinventing the wheel with differ_only_in_lifetimes(), we
use TyCtxt's erase_regions()
2018-05-29 09:18:49 -07:00
Devon Hollowood
8134863c13 Fix behavior with generic lifetime parameters 2018-05-29 09:18:49 -07:00
Devon Hollowood
2a606b5220 Don't lint lifetime-only transmutes 2018-05-29 09:18:49 -07:00
Victor Korkin
f6e0388e08 Change lint type to unique and add the suggestion. 2018-05-29 22:56:38 +07:00
Oliver Schneider
400aab9232
Merge pull request #2820 from flip1995/unused_def_conf
Remove unused define_conf-macro definitions
2018-05-29 15:30:32 +02:00
flip1995
3a41e0172c
Remove unused define_conf-macro definitions 2018-05-29 14:51:16 +02:00
Oliver Schneider
a338fa9b95 Fix dogfood 2018-05-29 14:45:10 +02:00
Mikael Zayenz Lagerkvist
f97c38de94 avoid op-ref in macros
Avoid running op-ref inspection in macros since the macro
may be invoked in many different types of contexts.

Solves #2818 and incidentally avoids #2689.
2018-05-29 13:17:37 +02: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
Victor Korkin
cf8f379657 Add lint on cast Fn to numerical. 2018-05-28 23:31:55 +07:00
Andrea Lattuada
e86268e67f Add support for ExprCall in clippy::author 2018-05-28 14:48:34 +02:00
Terry Raimondo
b81fd202a0
Add tests
Fix tests
2018-05-28 14:23:06 +02:00
Terry Raimondo
2033a1eb0e
unreadable_literal: Fills hexadecimal values with 0 to allow grouping (c.f #2300) 2018-05-28 13:55:27 +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
Oliver Schneider
9d12b04c32
Merge pull request #2806 from mockersf/loop-mut-cond
better parsing of condition in while loop for mutability
2018-05-28 12:55:44 +02:00
Oliver Schneider
f30db144dc
Merge pull request #2805 from reiner-dolp/update_lints
running update lints script
2018-05-28 12:51:44 +02:00
Aaron Power
1931f53396 Removed stable feature flags 2018-05-28 10:03:27 +02:00
Aaron Power
ceea20153c Refactored nested if lets to if_chain! macro 2018-05-28 09:50:25 +02:00
François Mockers
5379fc1b28 better parsing of condition in while loop for mutability
allow condition to be a block: by calling visit_expr of the visitor directly on the condition instead of walk_expr on the whole expression, we bypass the match to ExprWhile that calls visit_expr on the condition and visit_block on the body. This allow to re-enable visit_block in the visitor, as it won't be called on the while body
allow condition to use static variables: maintain a list of static variables used, and if they are mutable
2018-05-27 23:59:07 +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