Commit Graph

49 Commits

Author SHA1 Message Date
Philipp Hansch
bb4af196be
Move empty_line_after_outer_attribute to nursery
From the clippy side it's difficult to detect empty lines between
an attributes and the following item because empty lines and comments
are not part of the AST. The parsing currently works for basic cases
but is not perfect and can cause false positives.

Maybe libsyntax 2.0 will fix some of the problems around attributes but
comments will probably be never part of the AST so we would still have
to do some manual parsing.
2018-03-30 12:36:50 +02:00
Philipp Hansch
b7929cafe1
Fix false positive in empty_line_after_outer_attr
Before, when you had a block comment between an attribute and the
following item like this:

```rust
\#[crate_type = "lib"]
/*

*/
pub struct Rust;
```

It would cause a false positive on the lint, because there is an empty
line inside the block comment.

This makes sure that basic block comments are detected and removed from
the snippet that was created before.
2018-03-30 12:36:50 +02:00
Oliver Schneider
d6344c47e3
Categorize all the lints! 2018-03-28 15:24:26 +02:00
Philipp Hansch
034c81b761
Fix false positive in empty_line_after_outer_attribute
`empty_line_after_outer_attribute` produced a false positive warning when
deriving `Copy` and/or `Clone` for an item.

It looks like the second point in [this comment][that_comment] is related,
as the attribute that causes the false positive has a path of
`rustc_copy_clone_marker`.

Fixes #2475

[that_comment]: https://github.com/rust-lang/rust/issues/35900#issuecomment-245978831
2018-03-26 21:57:42 +02:00
Philipp Hansch
d3d3d7d7be
Lint multiline attributes properly
This makes it so that the `empty_line_after_outer_attribute` lint only
checks for newlines between the end of the attribute and the beginning
of the following item.

We need to check for the empty line count being bigger than 2 because
now the snippet of valid code contains only `\n` and splitting it
produces `["", ""]`
Invalid code will contain more than 2 empty strings.
2018-02-21 21:29:05 +01:00
Philipp Hansch
81f5969704
Partly fix incorrect useless_attribute suggestion
This fixes an incorrect suggestion from the `useless_attribute` lint
when using `cfg_attr`.

Additionally, it will not show a suggestion anymore, if the attribute
begins on a previous line, because it is much harder to construct the
span of multi-line `cfg_attr` attributes as they don't appear in the AST.

To fix it completely, one would have to parse upwards into the file,
and find the beginning of the `cfg_attr` attribute.
2018-02-06 22:35:11 +01:00
Oliver Schneider
02ee62533d
Merge pull request #2428 from phansch/fix_lint_list_issues
Allow empty lines in lint doc examples
2018-02-05 08:18:20 +01:00
Philipp Hansch
5c28cd259a
Allow empty lines in lint doc examples
This makes sure that empty lines in lint examples are preserved.

It also fixes the documentation for the invalid_ref lint, which was not
shown because of an extra newline before the lint declaration.
2018-02-01 23:21:36 +01:00
Philipp Hansch
a64724fac4
Fix false positive in empty_line_after_outer_attr
Doc comments are syntactic sugar for #[doc] attributes, so this lint was
catching them, too.

This commit makes it so that doc comments are ignored in this lint.

I think, for normal attributes it makes sense to warn about following empty
lines, for doc comments, less. This way the user has some freedom over
the formatting.
2018-02-01 07:43:03 +01:00
Philipp Hansch
3d54e56ed4
Add workaround for hidden outer attribute
If the snippet is empty, it's an attribute that was inserted during macro
expansion and we want to ignore those, because they could come from external
sources that the user has no control over.
For some reason these attributes don't have any expansion info on them, so
we have to check it this way until there is a better way.
2018-01-29 10:03:53 +01:00
Philipp Hansch
aade0d563e
Make lint work on all members of ast::Item_ 2018-01-29 10:03:52 +01:00
Philipp Hansch
80827c1f74
Warn on empty lines after outer attributes 2018-01-29 10:03:52 +01:00
topecongiro
7a06d312fd Cargo fmt 2017-11-05 04:55:56 +09:00
Alex Burka
41840ae3c4 mechanically swap if_let_chain -> if_chain 2017-10-23 15:18:02 -04:00
Oliver Schneider
b127ad251f
Rustup 2017-09-12 14:38:59 +02:00
Oliver Schneider
e4524ac4de
Run nightly rustfmt 2017-09-05 12:39:27 +02:00
Oliver Schneider
f3ae929b2d Rustup 2017-08-15 11:10:49 +02:00
Oliver Schneider
b25b6b3355
Rustfmt 2017-08-14 09:43:26 +02:00
Cameron Steffen
8b00f826d7 Merge branch 'master' into never_loop 2017-06-11 18:25:26 -05:00
Eduard-Mihai Burtescu
e073dfe9a2 Abide by the common rustc::ty conventions. 2017-06-11 05:57:25 +03:00
Cameron Steffen
4f374824b1 fix never_loop 2017-06-01 21:31:42 -05:00
Enrico Schmitz
7a4f7c335b Remove unused cs parameter for is_macro and friends 2017-04-01 00:14:04 +02:00
Oliver Schneider
0ae1a77a2e Do some additional cleanup around InternedString and Symbol 2017-03-30 10:21:13 +02:00
Enrico Schmitz
f8df4aed0f Fix for rustc 1.17.0-nightly (6eb9960d3 2017-03-19) 2017-03-21 00:22:19 +01:00
Mrmaxmeier
d68f0797bf Rustup to nightly from 2017-01-31 2017-02-03 14:16:14 +01:00
Mrmaxmeier
2216a890a6 TyCtxt::map is now called TyCtxt::hir 2017-02-03 14:16:07 +01:00
Oliver Schneider
d944d7df9a
rustup to 2017-01-12 2017-01-13 17:04:56 +01:00
Josh Holmer
64f5dbc9f8 Rustup to rustc 1.16.0-nightly (468227129 2017-01-03): Body fixes for rustup 2017-01-04 15:50:30 -08:00
Manish Goregaokar
f552f170db Rustup to rustc 1.16.0-nightly (468227129 2017-01-03): Fix various type errors for rustup 2017-01-04 15:50:18 -08:00
Oliver Schneider
7a1d85f1de Merge branch 'master' into allow_deprecated 2016-12-21 15:47:12 +01:00
Oliver Schneider
ed9d71f2c9
remove nondeterminism by adjusting thresholds 2016-12-21 10:25:14 +01:00
Oliver Schneider
4a4e1ea2c5
also run rustfmt on clippy-lints 2016-12-20 18:21:30 +01:00
Oliver Schneider
778ce4dfd3
update to the rust-PR that unblocks clippy 2016-12-07 13:13:40 +01:00
Oliver Schneider
c6e2967b9c
rustup to rustc 1.15.0-dev (3b248a184 2016-12-05) 2016-12-06 11:32:21 +01:00
Wim Looman
919feaaec5 Allow allow(deprecated) attribute on use items
fixes #1372
2016-12-01 22:36:35 +01:00
Oliver Schneider
59b0077565 WIP compiles and doesn't crash (much) but tests are failing 2016-12-01 22:31:56 +01:00
Oliver Schneider
31e482403c rustup to rustc 1.15.0-nightly (d5814b03e 2016-11-23) 2016-11-25 19:24:55 +01:00
mcarton
c35f82b823
Rustup to *rustc 1.15.0-nightly (7b3eeea22 2016-11-21)* 2016-11-23 21:31:55 +01:00
mcarton
19c5f5394b
Rustup to rustc 1.15.0-nightly (0ed951993 2016-11-14) 2016-11-16 23:05:26 +01:00
mcarton
1c3fce41b6
Rustup to *rustc 1.14.0-nightly (f09420685 2016-10-20)* 2016-10-22 15:57:19 +02:00
mcarton
3f43996aa5
Rustup to *1.13.0-nightly (eac41469d 2016-08-30)* 2016-08-31 18:22:35 +02:00
Oliver Schneider
14d2cd0b0a
unused_import is a valid lint to be changed on use statements 2016-08-19 17:27:24 +02:00
Oliver Schneider
2d57902a27
don't lint if snippet is shortert than 1 character
This happens with various combinations of cfg attributes and macros expansion.
Not linting here is the safe route, as everything else might produce false positives.
2016-08-19 17:27:24 +02:00
Oliver Schneider
3ab6ad59c4
disallow lint attributes on use and extern crate items 2016-08-17 11:36:04 +02:00
Georg Brandl
b91c1a509e Make lint descriptions short and to the point; always fitting the column "triggers on". 2016-08-07 08:09:26 +02:00
Georg Brandl
3b5ff0f813 Make the lint docstrings more consistent. 2016-08-07 08:06:19 +02:00
Oliver Schneider
81c5757f44
lint on by ref patterns for references 2016-08-01 16:59:14 +02:00
mcarton
caa76e119b
Improve docs 2016-07-16 00:26:54 +02:00
Oliver Schneider
bf227f4729
split clippy into lints, plugin and cargo-clippy 2016-05-27 13:03:58 +02:00