Auto merge of #88100 - HTG-YT:edition2021-compopt-stabilization, r=m-ou-se
Make Edition 2021 Stable An item of #87959. This is an "on-demand" pull request, which means it will be merged when it is the right time to.
This commit is contained in:
commit
56ea5e0ee9
9 changed files with 28 additions and 28 deletions
|
@ -32,7 +32,7 @@ pub const EDITION_NAME_LIST: &str = "2015|2018|2021";
|
||||||
|
|
||||||
pub const DEFAULT_EDITION: Edition = Edition::Edition2015;
|
pub const DEFAULT_EDITION: Edition = Edition::Edition2015;
|
||||||
|
|
||||||
pub const LATEST_STABLE_EDITION: Edition = Edition::Edition2018;
|
pub const LATEST_STABLE_EDITION: Edition = Edition::Edition2021;
|
||||||
|
|
||||||
impl fmt::Display for Edition {
|
impl fmt::Display for Edition {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
@ -66,7 +66,7 @@ impl Edition {
|
||||||
match *self {
|
match *self {
|
||||||
Edition::Edition2015 => true,
|
Edition::Edition2015 => true,
|
||||||
Edition::Edition2018 => true,
|
Edition::Edition2018 => true,
|
||||||
Edition::Edition2021 => false,
|
Edition::Edition2021 => true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,7 +93,7 @@ This informs `rustc` of the name of your crate.
|
||||||
<a id="option-edition"></a>
|
<a id="option-edition"></a>
|
||||||
## `--edition`: specify the edition to use
|
## `--edition`: specify the edition to use
|
||||||
|
|
||||||
This flag takes a value of `2015` or `2018`. The default is `2015`. More
|
This flag takes a value of `2015`, `2018` or `2021`. The default is `2015`. More
|
||||||
information about editions may be found in the [edition guide].
|
information about editions may be found in the [edition guide].
|
||||||
|
|
||||||
[edition guide]: ../edition-guide/introduction.html
|
[edition guide]: ../edition-guide/introduction.html
|
||||||
|
|
|
@ -4,7 +4,7 @@ error[E0670]: `async fn` is not permitted in Rust 2015
|
||||||
LL | async fn foo() {}
|
LL | async fn foo() {}
|
||||||
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
||||||
|
|
|
|
||||||
= help: set `edition = "2018"` in `Cargo.toml`
|
= help: set `edition = "2021"` in `Cargo.toml`
|
||||||
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
|
|
||||||
error[E0670]: `async fn` is not permitted in Rust 2015
|
error[E0670]: `async fn` is not permitted in Rust 2015
|
||||||
|
@ -13,7 +13,7 @@ error[E0670]: `async fn` is not permitted in Rust 2015
|
||||||
LL | fn baz() { async fn foo() {} }
|
LL | fn baz() { async fn foo() {} }
|
||||||
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
||||||
|
|
|
|
||||||
= help: set `edition = "2018"` in `Cargo.toml`
|
= help: set `edition = "2021"` in `Cargo.toml`
|
||||||
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
|
|
||||||
error[E0670]: `async fn` is not permitted in Rust 2015
|
error[E0670]: `async fn` is not permitted in Rust 2015
|
||||||
|
@ -22,7 +22,7 @@ error[E0670]: `async fn` is not permitted in Rust 2015
|
||||||
LL | async fn async_baz() {
|
LL | async fn async_baz() {
|
||||||
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
||||||
|
|
|
|
||||||
= help: set `edition = "2018"` in `Cargo.toml`
|
= help: set `edition = "2021"` in `Cargo.toml`
|
||||||
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
|
|
||||||
error[E0670]: `async fn` is not permitted in Rust 2015
|
error[E0670]: `async fn` is not permitted in Rust 2015
|
||||||
|
@ -31,7 +31,7 @@ error[E0670]: `async fn` is not permitted in Rust 2015
|
||||||
LL | async fn bar() {}
|
LL | async fn bar() {}
|
||||||
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
||||||
|
|
|
|
||||||
= help: set `edition = "2018"` in `Cargo.toml`
|
= help: set `edition = "2021"` in `Cargo.toml`
|
||||||
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
|
|
||||||
error[E0670]: `async fn` is not permitted in Rust 2015
|
error[E0670]: `async fn` is not permitted in Rust 2015
|
||||||
|
@ -40,7 +40,7 @@ error[E0670]: `async fn` is not permitted in Rust 2015
|
||||||
LL | async fn foo() {}
|
LL | async fn foo() {}
|
||||||
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
||||||
|
|
|
|
||||||
= help: set `edition = "2018"` in `Cargo.toml`
|
= help: set `edition = "2021"` in `Cargo.toml`
|
||||||
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
|
|
||||||
error[E0670]: `async fn` is not permitted in Rust 2015
|
error[E0670]: `async fn` is not permitted in Rust 2015
|
||||||
|
@ -49,7 +49,7 @@ error[E0670]: `async fn` is not permitted in Rust 2015
|
||||||
LL | async fn foo() {}
|
LL | async fn foo() {}
|
||||||
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
||||||
|
|
|
|
||||||
= help: set `edition = "2018"` in `Cargo.toml`
|
= help: set `edition = "2021"` in `Cargo.toml`
|
||||||
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
|
|
||||||
error[E0670]: `async fn` is not permitted in Rust 2015
|
error[E0670]: `async fn` is not permitted in Rust 2015
|
||||||
|
@ -58,7 +58,7 @@ error[E0670]: `async fn` is not permitted in Rust 2015
|
||||||
LL | async fn bar() {}
|
LL | async fn bar() {}
|
||||||
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
||||||
|
|
|
|
||||||
= help: set `edition = "2018"` in `Cargo.toml`
|
= help: set `edition = "2021"` in `Cargo.toml`
|
||||||
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
|
|
||||||
error[E0670]: `async fn` is not permitted in Rust 2015
|
error[E0670]: `async fn` is not permitted in Rust 2015
|
||||||
|
@ -67,7 +67,7 @@ error[E0670]: `async fn` is not permitted in Rust 2015
|
||||||
LL | async fn foo() {}
|
LL | async fn foo() {}
|
||||||
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
||||||
|
|
|
|
||||||
= help: set `edition = "2018"` in `Cargo.toml`
|
= help: set `edition = "2021"` in `Cargo.toml`
|
||||||
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
|
|
||||||
error[E0670]: `async fn` is not permitted in Rust 2015
|
error[E0670]: `async fn` is not permitted in Rust 2015
|
||||||
|
@ -76,7 +76,7 @@ error[E0670]: `async fn` is not permitted in Rust 2015
|
||||||
LL | async fn bar() {}
|
LL | async fn bar() {}
|
||||||
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
||||||
|
|
|
|
||||||
= help: set `edition = "2018"` in `Cargo.toml`
|
= help: set `edition = "2021"` in `Cargo.toml`
|
||||||
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
|
|
||||||
error[E0706]: functions in traits cannot be declared `async`
|
error[E0706]: functions in traits cannot be declared `async`
|
||||||
|
|
|
@ -10,7 +10,7 @@ fn await_on_struct_missing() {
|
||||||
//~^ ERROR no field `await` on type
|
//~^ ERROR no field `await` on type
|
||||||
//~| NOTE unknown field
|
//~| NOTE unknown field
|
||||||
//~| NOTE to `.await` a `Future`, switch to Rust 2018
|
//~| NOTE to `.await` a `Future`, switch to Rust 2018
|
||||||
//~| HELP set `edition = "2018"` in `Cargo.toml`
|
//~| HELP set `edition = "2021"` in `Cargo.toml`
|
||||||
//~| NOTE for more on editions, read https://doc.rust-lang.org/edition-guide
|
//~| NOTE for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ fn await_on_struct_similar() {
|
||||||
//~^ ERROR no field `await` on type
|
//~^ ERROR no field `await` on type
|
||||||
//~| HELP a field with a similar name exists
|
//~| HELP a field with a similar name exists
|
||||||
//~| NOTE to `.await` a `Future`, switch to Rust 2018
|
//~| NOTE to `.await` a `Future`, switch to Rust 2018
|
||||||
//~| HELP set `edition = "2018"` in `Cargo.toml`
|
//~| HELP set `edition = "2021"` in `Cargo.toml`
|
||||||
//~| NOTE for more on editions, read https://doc.rust-lang.org/edition-guide
|
//~| NOTE for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ fn await_on_63533(x: Pin<&mut dyn Future<Output = ()>>) {
|
||||||
//~^ ERROR no field `await` on type
|
//~^ ERROR no field `await` on type
|
||||||
//~| NOTE unknown field
|
//~| NOTE unknown field
|
||||||
//~| NOTE to `.await` a `Future`, switch to Rust 2018
|
//~| NOTE to `.await` a `Future`, switch to Rust 2018
|
||||||
//~| HELP set `edition = "2018"` in `Cargo.toml`
|
//~| HELP set `edition = "2021"` in `Cargo.toml`
|
||||||
//~| NOTE for more on editions, read https://doc.rust-lang.org/edition-guide
|
//~| NOTE for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,6 +40,6 @@ fn await_on_apit(x: impl Future<Output = ()>) {
|
||||||
x.await;
|
x.await;
|
||||||
//~^ ERROR no field `await` on type
|
//~^ ERROR no field `await` on type
|
||||||
//~| NOTE to `.await` a `Future`, switch to Rust 2018
|
//~| NOTE to `.await` a `Future`, switch to Rust 2018
|
||||||
//~| HELP set `edition = "2018"` in `Cargo.toml`
|
//~| HELP set `edition = "2021"` in `Cargo.toml`
|
||||||
//~| NOTE for more on editions, read https://doc.rust-lang.org/edition-guide
|
//~| NOTE for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ LL | x.await;
|
||||||
| ^^^^^ unknown field
|
| ^^^^^ unknown field
|
||||||
|
|
|
|
||||||
= note: to `.await` a `Future`, switch to Rust 2018 or later
|
= note: to `.await` a `Future`, switch to Rust 2018 or later
|
||||||
= help: set `edition = "2018"` in `Cargo.toml`
|
= help: set `edition = "2021"` in `Cargo.toml`
|
||||||
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
|
|
||||||
error[E0609]: no field `await` on type `await_on_struct_similar::S`
|
error[E0609]: no field `await` on type `await_on_struct_similar::S`
|
||||||
|
@ -15,7 +15,7 @@ LL | x.await;
|
||||||
| ^^^^^ help: a field with a similar name exists: `awai`
|
| ^^^^^ help: a field with a similar name exists: `awai`
|
||||||
|
|
|
|
||||||
= note: to `.await` a `Future`, switch to Rust 2018 or later
|
= note: to `.await` a `Future`, switch to Rust 2018 or later
|
||||||
= help: set `edition = "2018"` in `Cargo.toml`
|
= help: set `edition = "2021"` in `Cargo.toml`
|
||||||
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
|
|
||||||
error[E0609]: no field `await` on type `Pin<&mut dyn Future<Output = ()>>`
|
error[E0609]: no field `await` on type `Pin<&mut dyn Future<Output = ()>>`
|
||||||
|
@ -25,7 +25,7 @@ LL | x.await;
|
||||||
| ^^^^^ unknown field
|
| ^^^^^ unknown field
|
||||||
|
|
|
|
||||||
= note: to `.await` a `Future`, switch to Rust 2018 or later
|
= note: to `.await` a `Future`, switch to Rust 2018 or later
|
||||||
= help: set `edition = "2018"` in `Cargo.toml`
|
= help: set `edition = "2021"` in `Cargo.toml`
|
||||||
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
|
|
||||||
error[E0609]: no field `await` on type `impl Future<Output = ()>`
|
error[E0609]: no field `await` on type `impl Future<Output = ()>`
|
||||||
|
@ -35,7 +35,7 @@ LL | x.await;
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
|
|
|
||||||
= note: to `.await` a `Future`, switch to Rust 2018 or later
|
= note: to `.await` a `Future`, switch to Rust 2018 or later
|
||||||
= help: set `edition = "2018"` in `Cargo.toml`
|
= help: set `edition = "2021"` in `Cargo.toml`
|
||||||
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
|
|
||||||
error: aborting due to 4 previous errors
|
error: aborting due to 4 previous errors
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
async fn foo() {
|
async fn foo() {
|
||||||
//~^ ERROR `async fn` is not permitted in Rust 2015
|
//~^ ERROR `async fn` is not permitted in Rust 2015
|
||||||
//~| NOTE to use `async fn`, switch to Rust 2018 or later
|
//~| NOTE to use `async fn`, switch to Rust 2018 or later
|
||||||
//~| HELP set `edition = "2018"` in `Cargo.toml`
|
//~| HELP set `edition = "2021"` in `Cargo.toml`
|
||||||
//~| NOTE for more on editions, read https://doc.rust-lang.org/edition-guide
|
//~| NOTE for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
|
|
||||||
let x = async {};
|
let x = async {};
|
||||||
|
@ -11,7 +11,7 @@ async fn foo() {
|
||||||
let x = 42;
|
let x = 42;
|
||||||
//~^ ERROR expected identifier, found keyword `let`
|
//~^ ERROR expected identifier, found keyword `let`
|
||||||
//~| NOTE expected identifier, found keyword
|
//~| NOTE expected identifier, found keyword
|
||||||
//~| HELP set `edition = "2018"` in `Cargo.toml`
|
//~| HELP set `edition = "2021"` in `Cargo.toml`
|
||||||
//~| NOTE for more on editions, read https://doc.rust-lang.org/edition-guide
|
//~| NOTE for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
42
|
42
|
||||||
};
|
};
|
||||||
|
@ -19,7 +19,7 @@ async fn foo() {
|
||||||
42
|
42
|
||||||
//~^ ERROR expected identifier, found `42`
|
//~^ ERROR expected identifier, found `42`
|
||||||
//~| NOTE expected identifier
|
//~| NOTE expected identifier
|
||||||
//~| HELP set `edition = "2018"` in `Cargo.toml`
|
//~| HELP set `edition = "2021"` in `Cargo.toml`
|
||||||
//~| NOTE for more on editions, read https://doc.rust-lang.org/edition-guide
|
//~| NOTE for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
};
|
};
|
||||||
y.await;
|
y.await;
|
||||||
|
|
|
@ -4,7 +4,7 @@ error[E0670]: `async fn` is not permitted in Rust 2015
|
||||||
LL | async fn foo() {
|
LL | async fn foo() {
|
||||||
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
| ^^^^^ to use `async fn`, switch to Rust 2018 or later
|
||||||
|
|
|
|
||||||
= help: set `edition = "2018"` in `Cargo.toml`
|
= help: set `edition = "2021"` in `Cargo.toml`
|
||||||
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
|
|
||||||
error: expected identifier, found keyword `let`
|
error: expected identifier, found keyword `let`
|
||||||
|
@ -15,7 +15,7 @@ LL | let y = async {
|
||||||
LL | let x = 42;
|
LL | let x = 42;
|
||||||
| ^^^ expected identifier, found keyword
|
| ^^^ expected identifier, found keyword
|
||||||
|
|
|
|
||||||
= help: set `edition = "2018"` in `Cargo.toml`
|
= help: set `edition = "2021"` in `Cargo.toml`
|
||||||
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
|
|
||||||
error: expected identifier, found `42`
|
error: expected identifier, found `42`
|
||||||
|
@ -26,7 +26,7 @@ LL | let z = async {
|
||||||
LL | 42
|
LL | 42
|
||||||
| ^^ expected identifier
|
| ^^ expected identifier
|
||||||
|
|
|
|
||||||
= help: set `edition = "2018"` in `Cargo.toml`
|
= help: set `edition = "2021"` in `Cargo.toml`
|
||||||
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
|
|
||||||
error[E0422]: cannot find struct, variant or union type `async` in this scope
|
error[E0422]: cannot find struct, variant or union type `async` in this scope
|
||||||
|
|
|
@ -6,7 +6,7 @@ LL | let f: impl core::future::Future<Output = u8> = async { 1 };
|
||||||
| |
|
| |
|
||||||
| `async` blocks are only allowed in Rust 2018 or later
|
| `async` blocks are only allowed in Rust 2018 or later
|
||||||
|
|
|
|
||||||
= help: set `edition = "2018"` in `Cargo.toml`
|
= help: set `edition = "2021"` in `Cargo.toml`
|
||||||
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
|
||||||
|
|
||||||
error[E0562]: `impl Trait` not allowed outside of function and method return types
|
error[E0562]: `impl Trait` not allowed outside of function and method return types
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// compile-flags: -Z unstable-options --edition 2021
|
// edition:2021
|
||||||
|
|
||||||
macro_rules! demo2 {
|
macro_rules! demo2 {
|
||||||
( $a:tt $b:tt ) => { println!("two tokens") };
|
( $a:tt $b:tt ) => { println!("two tokens") };
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue