Skip to content

Commit d8f0a96

Browse files
authored
Merge branch 'rust-lang:master' into clear-with-drain
2 parents 7852962 + 82d71b1 commit d8f0a96

File tree

131 files changed

+3454
-1595
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

131 files changed

+3454
-1595
lines changed

CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -4633,6 +4633,7 @@ Released 2018-09-13
46334633
[`large_const_arrays`]: https://rust-lang.github.io/rust-clippy/master/index.html#large_const_arrays
46344634
[`large_digit_groups`]: https://rust-lang.github.io/rust-clippy/master/index.html#large_digit_groups
46354635
[`large_enum_variant`]: https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant
4636+
[`large_futures`]: https://rust-lang.github.io/rust-clippy/master/index.html#large_futures
46364637
[`large_include_file`]: https://rust-lang.github.io/rust-clippy/master/index.html#large_include_file
46374638
[`large_stack_arrays`]: https://rust-lang.github.io/rust-clippy/master/index.html#large_stack_arrays
46384639
[`large_types_passed_by_value`]: https://rust-lang.github.io/rust-clippy/master/index.html#large_types_passed_by_value
@@ -4646,6 +4647,7 @@ Released 2018-09-13
46464647
[`let_underscore_untyped`]: https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
46474648
[`let_unit_value`]: https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value
46484649
[`let_with_type_underscore`]: https://rust-lang.github.io/rust-clippy/master/index.html#let_with_type_underscore
4650+
[`lines_filter_map_ok`]: https://rust-lang.github.io/rust-clippy/master/index.html#lines_filter_map_ok
46494651
[`linkedlist`]: https://rust-lang.github.io/rust-clippy/master/index.html#linkedlist
46504652
[`logic_bug`]: https://rust-lang.github.io/rust-clippy/master/index.html#logic_bug
46514653
[`lossy_float_literal`]: https://rust-lang.github.io/rust-clippy/master/index.html#lossy_float_literal
@@ -4672,6 +4674,7 @@ Released 2018-09-13
46724674
[`manual_rem_euclid`]: https://rust-lang.github.io/rust-clippy/master/index.html#manual_rem_euclid
46734675
[`manual_retain`]: https://rust-lang.github.io/rust-clippy/master/index.html#manual_retain
46744676
[`manual_saturating_arithmetic`]: https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic
4677+
[`manual_slice_size_calculation`]: https://rust-lang.github.io/rust-clippy/master/index.html#manual_slice_size_calculation
46754678
[`manual_split_once`]: https://rust-lang.github.io/rust-clippy/master/index.html#manual_split_once
46764679
[`manual_str_repeat`]: https://rust-lang.github.io/rust-clippy/master/index.html#manual_str_repeat
46774680
[`manual_string_new`]: https://rust-lang.github.io/rust-clippy/master/index.html#manual_string_new
@@ -4922,6 +4925,7 @@ Released 2018-09-13
49224925
[`suspicious_arithmetic_impl`]: https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl
49234926
[`suspicious_assignment_formatting`]: https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_assignment_formatting
49244927
[`suspicious_command_arg_space`]: https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_command_arg_space
4928+
[`suspicious_doc_comments`]: https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_doc_comments
49254929
[`suspicious_else_formatting`]: https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting
49264930
[`suspicious_map`]: https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_map
49274931
[`suspicious_op_assign_impl`]: https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_op_assign_impl
@@ -4934,6 +4938,7 @@ Released 2018-09-13
49344938
[`tabs_in_doc_comments`]: https://rust-lang.github.io/rust-clippy/master/index.html#tabs_in_doc_comments
49354939
[`temporary_assignment`]: https://rust-lang.github.io/rust-clippy/master/index.html#temporary_assignment
49364940
[`temporary_cstring_as_ptr`]: https://rust-lang.github.io/rust-clippy/master/index.html#temporary_cstring_as_ptr
4941+
[`tests_outside_test_module`]: https://rust-lang.github.io/rust-clippy/master/index.html#tests_outside_test_module
49374942
[`to_digit_is_some`]: https://rust-lang.github.io/rust-clippy/master/index.html#to_digit_is_some
49384943
[`to_string_in_display`]: https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_display
49394944
[`to_string_in_format_args`]: https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args
@@ -4975,6 +4980,7 @@ Released 2018-09-13
49754980
[`unit_hash`]: https://rust-lang.github.io/rust-clippy/master/index.html#unit_hash
49764981
[`unit_return_expecting_ord`]: https://rust-lang.github.io/rust-clippy/master/index.html#unit_return_expecting_ord
49774982
[`unknown_clippy_lints`]: https://rust-lang.github.io/rust-clippy/master/index.html#unknown_clippy_lints
4983+
[`unnecessary_box_returns`]: https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_box_returns
49784984
[`unnecessary_cast`]: https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast
49794985
[`unnecessary_filter_map`]: https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_filter_map
49804986
[`unnecessary_find_map`]: https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_find_map

README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Lints are divided into categories, each with a default [lint level](https://doc.
1111
You can choose how much Clippy is supposed to ~~annoy~~ help you by changing the lint level by category.
1212

1313
| Category | Description | Default level |
14-
| --------------------- | ----------------------------------------------------------------------------------- | ------------- |
14+
|-----------------------|-------------------------------------------------------------------------------------|---------------|
1515
| `clippy::all` | all lints that are on by default (correctness, suspicious, style, complexity, perf) | **warn/deny** |
1616
| `clippy::correctness` | code that is outright wrong or useless | **deny** |
1717
| `clippy::suspicious` | code that is most likely wrong or useless | **warn** |
@@ -130,7 +130,7 @@ for example.
130130

131131
You can add Clippy to Travis CI in the same way you use it locally:
132132

133-
```yml
133+
```yaml
134134
language: rust
135135
rust:
136136
- stable
@@ -253,7 +253,7 @@ rust-version = "1.30"
253253

254254
The MSRV can also be specified as an attribute, like below.
255255

256-
```rust
256+
```rust,ignore
257257
#![feature(custom_inner_attributes)]
258258
#![clippy::msrv = "1.30.0"]
259259

book/src/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ much Clippy is supposed to ~~annoy~~ help you by changing the lint level by
1414
category.
1515

1616
| Category | Description | Default level |
17-
| --------------------- | ----------------------------------------------------------------------------------- | ------------- |
17+
|-----------------------|-------------------------------------------------------------------------------------|---------------|
1818
| `clippy::all` | all lints that are on by default (correctness, suspicious, style, complexity, perf) | **warn/deny** |
1919
| `clippy::correctness` | code that is outright wrong or useless | **deny** |
2020
| `clippy::suspicious` | code that is most likely wrong or useless | **warn** |

book/src/SUMMARY.md

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
- [Development](development/README.md)
1414
- [Basics](development/basics.md)
1515
- [Adding Lints](development/adding_lints.md)
16+
- [Type Checking](development/type_checking.md)
1617
- [Common Tools](development/common_tools_writing_lints.md)
1718
- [Infrastructure](development/infrastructure/README.md)
1819
- [Syncing changes between Clippy and rust-lang/rust](development/infrastructure/sync.md)

book/src/configuration.md

+25-4
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
> **Note:** The configuration file is unstable and may be deprecated in the future.
44
55
Some lints can be configured in a TOML file named `clippy.toml` or `.clippy.toml`. It contains a
6-
basic `variable = value` mapping eg.
6+
basic `variable = value` mapping e.g.
77

88
```toml
99
avoid-breaking-exported-api = false
@@ -60,7 +60,7 @@ And to warn on `lint_name`, run
6060
cargo clippy -- -W clippy::lint_name
6161
```
6262

63-
This also works with lint groups. For example you can run Clippy with warnings for all lints enabled:
63+
This also works with lint groups. For example, you can run Clippy with warnings for all lints enabled:
6464

6565
```terminal
6666
cargo clippy -- -W clippy::pedantic
@@ -84,7 +84,7 @@ msrv = "1.30.0"
8484

8585
The MSRV can also be specified as an attribute, like below.
8686

87-
```rust
87+
```rust,ignore
8888
#![feature(custom_inner_attributes)]
8989
#![clippy::msrv = "1.30.0"]
9090
@@ -96,7 +96,28 @@ fn main() {
9696
You can also omit the patch version when specifying the MSRV, so `msrv = 1.30`
9797
is equivalent to `msrv = 1.30.0`.
9898

99-
Note: `custom_inner_attributes` is an unstable feature so it has to be enabled explicitly.
99+
Note: `custom_inner_attributes` is an unstable feature, so it has to be enabled explicitly.
100100

101101
Lints that recognize this configuration option can be
102102
found [here](https://rust-lang.github.io/rust-clippy/master/index.html#msrv)
103+
104+
### Disabling evaluation of certain code
105+
106+
> **Note:** This should only be used in cases where other solutions, like `#[allow(clippy::all)]`, are not sufficient.
107+
108+
Very rarely, you may wish to prevent Clippy from evaluating certain sections of code entirely. You can do this with
109+
[conditional compilation](https://doc.rust-lang.org/reference/conditional-compilation.html) by checking that the
110+
`cargo-clippy` feature is not set. You may need to provide a stub so that the code compiles:
111+
112+
```rust
113+
#[cfg(not(feature = "cargo-clippy"))]
114+
include!(concat!(env!("OUT_DIR"), "/my_big_function-generated.rs"));
115+
116+
#[cfg(feature = "cargo-clippy")]
117+
fn my_big_function(_input: &str) -> Option<MyStruct> {
118+
None
119+
}
120+
```
121+
122+
This feature is not actually part of your crate, so specifying `--all-features` to other tools, e.g. `cargo test
123+
--all-features`, will not disable it.

book/src/development/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ making Clippy better by contributing to it. In that case, welcome to the
55
project!
66

77
> _Note:_ If you're just interested in using Clippy, there's nothing to see from
8-
> this point onward and you should return to one of the earlier chapters.
8+
> this point onward, and you should return to one of the earlier chapters.
99
1010
## Getting started
1111

book/src/development/adding_lints.md

+11-11
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ When declaring a new lint by hand and `cargo dev update_lints` is used, the lint
275275
pass may have to be registered manually in the `register_plugins` function in
276276
`clippy_lints/src/lib.rs`:
277277

278-
```rust
278+
```rust,ignore
279279
store.register_early_pass(|| Box::new(foo_functions::FooFunctions));
280280
```
281281

@@ -301,7 +301,7 @@ either [`EarlyLintPass`][early_lint_pass] or [`LateLintPass`][late_lint_pass].
301301

302302
In short, the `LateLintPass` has access to type information while the
303303
`EarlyLintPass` doesn't. If you don't need access to type information, use the
304-
`EarlyLintPass`. The `EarlyLintPass` is also faster. However linting speed
304+
`EarlyLintPass`. The `EarlyLintPass` is also faster. However, linting speed
305305
hasn't really been a concern with Clippy so far.
306306

307307
Since we don't need type information for checking the function name, we used
@@ -318,7 +318,7 @@ implementation of the lint logic.
318318

319319
Let's start by implementing the `EarlyLintPass` for our `FooFunctions`:
320320

321-
```rust
321+
```rust,ignore
322322
impl EarlyLintPass for FooFunctions {
323323
fn check_fn(&mut self, cx: &EarlyContext<'_>, fn_kind: FnKind<'_>, span: Span, _: NodeId) {
324324
// TODO: Emit lint here
@@ -337,10 +337,10 @@ variety of lint emission functions. They can all be found in
337337
[`clippy_utils/src/diagnostics.rs`][diagnostics].
338338

339339
`span_lint_and_help` seems most appropriate in this case. It allows us to
340-
provide an extra help message and we can't really suggest a better name
340+
provide an extra help message, and we can't really suggest a better name
341341
automatically. This is how it looks:
342342

343-
```rust
343+
```rust,ignore
344344
impl EarlyLintPass for FooFunctions {
345345
fn check_fn(&mut self, cx: &EarlyContext<'_>, fn_kind: FnKind<'_>, span: Span, _: NodeId) {
346346
span_lint_and_help(
@@ -479,7 +479,7 @@ the value from `clippy.toml`. This can be accounted for using the
479479
`extract_msrv_attr!(LintContext)` macro and passing
480480
`LateContext`/`EarlyContext`.
481481

482-
```rust
482+
```rust,ignore
483483
impl<'tcx> LateLintPass<'tcx> for ManualStrip {
484484
fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &'tcx Expr<'_>) {
485485
...
@@ -493,7 +493,7 @@ the lint's test file, `tests/ui/manual_strip.rs` in this example. It should
493493
have a case for the version below the MSRV and one with the same contents but
494494
for the MSRV version itself.
495495

496-
```rust
496+
```rust,ignore
497497
...
498498
499499
#[clippy::msrv = "1.44"]
@@ -524,7 +524,7 @@ define_Conf! {
524524

525525
If you have trouble implementing your lint, there is also the internal `author`
526526
lint to generate Clippy code that detects the offending pattern. It does not
527-
work for all of the Rust syntax, but can give a good starting point.
527+
work for all the Rust syntax, but can give a good starting point.
528528

529529
The quickest way to use it, is the [Rust playground:
530530
play.rust-lang.org][author_example]. Put the code you want to lint into the
@@ -617,7 +617,7 @@ output in the `stdout` part.
617617

618618
## PR Checklist
619619

620-
Before submitting your PR make sure you followed all of the basic requirements:
620+
Before submitting your PR make sure you followed all the basic requirements:
621621

622622
<!-- Sync this with `.github/PULL_REQUEST_TEMPLATE` -->
623623

@@ -637,7 +637,7 @@ for some users. Adding a configuration is done in the following steps:
637637

638638
1. Adding a new configuration entry to [`clippy_lints::utils::conf`] like this:
639639

640-
```rust
640+
```rust,ignore
641641
/// Lint: LINT_NAME.
642642
///
643643
/// <The configuration field doc comment>
@@ -690,7 +690,7 @@ for some users. Adding a configuration is done in the following steps:
690690
configuration value is now cloned or copied into a local value that is then
691691
passed to the impl struct like this:
692692

693-
```rust
693+
```rust,ignore
694694
// Default generated registration:
695695
store.register_*_pass(|| box module::StructName);
696696

book/src/development/basics.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ We follow a rustc no merge-commit policy. See
125125
## Common Abbreviations
126126

127127
| Abbreviation | Meaning |
128-
| ------------ | -------------------------------------- |
128+
|--------------|----------------------------------------|
129129
| UB | Undefined Behavior |
130130
| FP | False Positive |
131131
| FN | False Negative |

book/src/development/common_tools_writing_lints.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
You may need following tooltips to catch up with common operations.
44

55
- [Common tools for writing lints](#common-tools-for-writing-lints)
6-
- [Retrieving the type of an expression](#retrieving-the-type-of-an-expression)
6+
- [Retrieving the type of expression](#retrieving-the-type-of-expression)
77
- [Checking if an expr is calling a specific method](#checking-if-an-expr-is-calling-a-specific-method)
88
- [Checking for a specific type](#checking-for-a-specific-type)
99
- [Checking if a type implements a specific trait](#checking-if-a-type-implements-a-specific-trait)
@@ -16,7 +16,7 @@ Useful Rustc dev guide links:
1616
- [Type checking](https://rustc-dev-guide.rust-lang.org/type-checking.html)
1717
- [Ty module](https://rustc-dev-guide.rust-lang.org/ty.html)
1818

19-
## Retrieving the type of an expression
19+
## Retrieving the type of expression
2020

2121
Sometimes you may want to retrieve the type `Ty` of an expression `Expr`, for
2222
example to answer following questions:
@@ -45,7 +45,7 @@ impl LateLintPass<'_> for MyStructLint {
4545
}
4646
```
4747

48-
Similarly in [`TypeckResults`][TypeckResults] methods, you have the
48+
Similarly, in [`TypeckResults`][TypeckResults] methods, you have the
4949
[`pat_ty()`][pat_ty] method to retrieve a type from a pattern.
5050

5151
Two noticeable items here:
@@ -192,7 +192,7 @@ functions to deal with macros:
192192
- `span.from_expansion()`: detects if a span is from macro expansion or
193193
desugaring. Checking this is a common first step in a lint.
194194

195-
```rust
195+
```rust,ignore
196196
if expr.span.from_expansion() {
197197
// just forget it
198198
return;
@@ -203,11 +203,11 @@ functions to deal with macros:
203203
if so, which macro call expanded it. It is sometimes useful to check if the
204204
context of two spans are equal.
205205

206-
```rust
206+
```rust,ignore
207207
// expands to `1 + 0`, but don't lint
208208
1 + mac!()
209209
```
210-
```rust
210+
```rust,ignore
211211
if left.span.ctxt() != right.span.ctxt() {
212212
// the coder most likely cannot modify this expression
213213
return;
@@ -246,7 +246,7 @@ functions to deal with macros:
246246
`macro_rules!` with `a == $b`, `$b` is expanded to some expression with a
247247
different context from `a`.
248248

249-
```rust
249+
```rust,ignore
250250
macro_rules! m {
251251
($a:expr, $b:expr) => {
252252
if $a.is_some() {

book/src/development/infrastructure/book.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ guide to Clippy that you're reading right now. The Clippy book is formatted with
1313
While not strictly necessary since the book source is simply Markdown text
1414
files, having mdBook locally will allow you to build, test and serve the book
1515
locally to view changes before you commit them to the repository. You likely
16-
already have `cargo` installed, so the easiest option is to simply:
16+
already have `cargo` installed, so the easiest option is to:
1717

1818
```shell
1919
cargo install mdbook
@@ -26,7 +26,7 @@ instructions for other options.
2626

2727
The book's
2828
[src](https://github.com/rust-lang/rust-clippy/tree/master/book/src)
29-
directory contains all of the markdown files used to generate the book. If you
29+
directory contains all the markdown files used to generate the book. If you
3030
want to see your changes in real time, you can use the mdBook `serve` command to
3131
run a web server locally that will automatically update changes as they are
3232
made. From the top level of your `rust-clippy` directory:

book/src/development/infrastructure/changelog_update.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ Look for the [`beta-accepted`] label and make sure to also include the PRs with
101101
that label in the changelog. If you can, remove the `beta-accepted` labels
102102
**after** the changelog PR was merged.
103103

104-
> _Note:_ Some of those PRs might even got backported to the previous `beta`.
104+
> _Note:_ Some of those PRs might even get backported to the previous `beta`.
105105
> Those have to be included in the changelog of the _previous_ release.
106106
107107
### 4. Update `clippy::version` attributes

book/src/development/infrastructure/release.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ $ git push origin backport_remerge # This can be pushed to your fork
4444
```
4545

4646
After this, open a PR to the master branch. In this PR, the commit hash of the
47-
`HEAD` of the `beta` branch must exists. In addition to that, no files should be
47+
`HEAD` of the `beta` branch must exist. In addition to that, no files should be
4848
changed by this PR.
4949

5050
## Update the `beta` branch

0 commit comments

Comments
 (0)