]> git.lizzy.rs Git - rust.git/commit
Make closures and generators a must use types
authorTomasz Miąsko <tomasz.miasko@gmail.com>
Tue, 28 Jul 2020 00:00:00 +0000 (00:00 +0000)
committerTomasz Miąsko <tomasz.miasko@gmail.com>
Tue, 28 Jul 2020 00:00:00 +0000 (00:00 +0000)
commit821d50aa0cc73c1ec2fb09bab8a69e1c3ca93f23
treefda37dfafa28fd856055a90a9a14f2751c078c44
parent1f5d69daccd1f04e42886d9aaf513f2691132d17
Make closures and generators a must use types

Warn about unused expressions with closure or generator type. This follows
existing precedence of must use annotations present on `FnOnce`, `FnMut`, `Fn`
traits, which already indirectly apply to closures in some cases, e.g.,:

```rust
fn f() -> impl FnOnce() {
    || {}
}

fn main() {
    // an existing warning: unused implementer of `std::ops::FnOnce` that must be used:
    f();

    // a new warning: unused closure that must be used:
    || {};
}
```
36 files changed:
src/librustc_lint/unused.rs
src/test/ui/generator/issue-52398.rs
src/test/ui/generator/issue-52398.stderr [new file with mode: 0644]
src/test/ui/generator/issue-57084.rs
src/test/ui/generator/issue-57084.stderr [new file with mode: 0644]
src/test/ui/generator/match-bindings.rs
src/test/ui/generator/match-bindings.stderr [new file with mode: 0644]
src/test/ui/generator/reborrow-mut-upvar.rs
src/test/ui/generator/reborrow-mut-upvar.stderr [new file with mode: 0644]
src/test/ui/generator/too-live-local-in-immovable-gen.rs
src/test/ui/generator/too-live-local-in-immovable-gen.stderr [new file with mode: 0644]
src/test/ui/generator/yield-in-args-rev.rs
src/test/ui/generator/yield-in-args-rev.stderr [new file with mode: 0644]
src/test/ui/generator/yield-in-box.rs
src/test/ui/generator/yield-in-box.stderr [new file with mode: 0644]
src/test/ui/generator/yield-in-initializer.rs
src/test/ui/generator/yield-in-initializer.stderr [new file with mode: 0644]
src/test/ui/generator/yield-subtype.rs
src/test/ui/generator/yield-subtype.stderr [new file with mode: 0644]
src/test/ui/issues/issue-1460.rs
src/test/ui/issues/issue-1460.stderr [new file with mode: 0644]
src/test/ui/issues/issue-16256.rs
src/test/ui/issues/issue-16256.stderr [new file with mode: 0644]
src/test/ui/liveness/liveness-upvars.rs
src/test/ui/nll/capture-mut-ref.fixed
src/test/ui/nll/capture-mut-ref.rs
src/test/ui/nll/issue-48623-generator.rs
src/test/ui/nll/issue-48623-generator.stderr [new file with mode: 0644]
src/test/ui/test-attrs/test-runner-hides-buried-main.rs
src/test/ui/unboxed-closures/unboxed-closures-move-mutable.rs
src/test/ui/unboxed-closures/unboxed-closures-move-mutable.stderr
src/test/ui/unused/unused-closure.rs [new file with mode: 0644]
src/test/ui/unused/unused-closure.stderr [new file with mode: 0644]
src/test/ui/unused/unused-mut-warning-captured-var.fixed
src/test/ui/unused/unused-mut-warning-captured-var.rs
src/test/ui/weird-exprs.rs