Fix fn main() -> impl Trait for non-Termination trait
Fixes #50595. This bug currently affects stable. Why I think we can go for hard error: - It will in stable for at most one cycle and there is no legitimate reason to abuse it, nor any known uses in the wild. - It only affects `bin` crates (which have a `main`), so there is little practical difference between a hard error or a deny lint, both are a one line fix. The fix was to just unshadow a variable. Thanks @nikomatsakis for the mentoring! r? @nikomatsakis
This commit is contained in:
parent
e5f80f2a4f
commit
587566eda7
4 changed files with 41 additions and 4 deletions
|
|
@ -0,0 +1,13 @@
|
|||
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// Tests that an `impl Trait` that is not `impl Termination` will not work.
|
||||
fn main() -> impl Copy { }
|
||||
//~^ ERROR `main` has invalid return type `impl std::marker::Copy`
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
error[E0277]: `main` has invalid return type `impl std::marker::Copy`
|
||||
--> $DIR/termination-trait-impl-trait.rs:12:14
|
||||
|
|
||||
LL | fn main() -> impl Copy { }
|
||||
| ^^^^^^^^^ `main` can only return types that implement `std::process::Termination`
|
||||
|
|
||||
= help: consider using `()`, or a `Result`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue