rust/compiler/rustc_error_codes/src/error_codes
bors f4f0fafd0c Auto merge of #132706 - compiler-errors:async-closures, r=oli-obk
Stabilize async closures (RFC 3668)

# Async Closures Stabilization Report

This report proposes the stabilization of `#![feature(async_closure)]` ([RFC 3668](https://rust-lang.github.io/rfcs/3668-async-closures.html)). This is a long-awaited feature that increases the expressiveness of the Rust language and fills a pressing gap in the async ecosystem.

## Stabilization summary

* You can write async closures like `async || {}` which return futures that can borrow from their captures and can be higher-ranked in their argument lifetimes.
* You can express trait bounds for these async closures using the `AsyncFn` family of traits, analogous to the `Fn` family.

```rust
async fn takes_an_async_fn(f: impl AsyncFn(&str)) {
    futures::join(f("hello"), f("world")).await;
}

takes_an_async_fn(async |s| { other_fn(s).await }).await;
```

## Motivation

Without this feature, users hit two major obstacles when writing async code that uses closures and `Fn` trait bounds:

- The inability to express higher-ranked async function signatures.
- That closures cannot return futures that borrow from the closure captures.

That is, for the first, we cannot write:

```rust
// We cannot express higher-ranked async function signatures.
async fn f<Fut>(_: impl for<'a> Fn(&'a u8) -> Fut)
where
    Fut: Future<Output = ()>,
{ todo!() }

async fn main() {
    async fn g(_: &u8) { todo!() }
    f(g).await;
    //~^ ERROR mismatched types
    //~| ERROR one type is more general than the other
}
```

And for the second, we cannot write:

```rust
// Closures cannot return futures that borrow closure captures.
async fn f<Fut: Future<Output = ()>>(_: impl FnMut() -> Fut)
{ todo!() }

async fn main() {
    let mut xs = vec![];
    f(|| async {
        async fn g() -> u8 { todo!() }
        xs.push(g().await);
    });
    //~^ ERROR captured variable cannot escape `FnMut` closure body
}
```

Async closures provide a first-class solution to these problems.

For further background, please refer to the [motivation section](https://rust-lang.github.io/rfcs/3668-async-closures.html#motivation) of the RFC.

## Major design decisions since RFC

The RFC had left open the question of whether we would spell the bounds syntax for async closures...

```rust
// ...as this...
fn f() -> impl AsyncFn() -> u8 { todo!() }
// ...or as this:
fn f() -> impl async Fn() -> u8 { todo!() }
```

We've decided to spell this as `AsyncFn{,Mut,Once}`.

The `Fn` family of traits is special in many ways.  We had originally argued that, due to this specialness, that perhaps the `async Fn` syntax could be adopted without having to decide whether a general `async Trait` mechanism would ever be adopted.  However, concerns have been raised that we may not want to use `async Fn` syntax unless we would pursue more general trait modifiers.  Since there remain substantial open questions on those -- and we don't want to rush any design work there -- it makes sense to ship this needed feature using the `AsyncFn`-style bounds syntax.

Since we would, in no case, be shipping a generalized trait modifier system anytime soon, we'll be continuing to see `AsyncFoo` traits appear across the ecosystem regardless.  If we were to ever later ship some general mechanism, we could at that time manage the migration from `AsyncFn` to `async Fn`, just as we'd be enabling and managing the migration of many other traits.

Note that, as specified in RFC 3668, the details of the `AsyncFn*` traits are not exposed and they can only be named via the "parentheses sugar".  That is, we can write `T: AsyncFn() -> u8` but not `T: AsyncFn<Output = u8>`.

Unlike the `Fn` traits, we cannot project to the `Output` associated type of the `AsyncFn` traits.  That is, while we can write...

```rust
fn f<F: Fn() -> u8>(_: F::Output) {}
```

...we cannot write:

```rust
fn f<F: AsyncFn() -> u8>(_: F::Output) {}
//~^ ERROR
```

The choice of `AsyncFn{,Mut,Once}` bounds syntax obviates, for our purposes here, another question decided after that RFC, which was how to order bound modifiers such as `for<'a> async Fn()`.

Other than answering the open question in the RFC on syntax, nothing has changed about the design of this feature between RFC 3668 and this stabilization.

## What is stabilized

For those interested in the technical details, please see [the dev guide section](https://rustc-dev-guide.rust-lang.org/coroutine-closures.html) I authored.

#### Async closures

Other than in how they solve the problems described above, async closures act similarly to closures that return async blocks, and can have parts of their signatures specified:

```rust
// They can have arguments annotated with types:
let _ = async |_: u8| { todo!() };

// They can have their return types annotated:
let _ = async || -> u8 { todo!() };

// They can be higher-ranked:
let _ = async |_: &str| { todo!() };

// They can capture values by move:
let x = String::from("hello, world");
let _ = async move || do_something(&x).await };
```

When called, they return an anonymous future type corresponding to the (not-yet-executed) body of the closure. These can be awaited like any other future.

What distinguishes async closures is that, unlike closures that return async blocks, the futures returned from the async closure can capture state from the async closure. For example:

```rust
let vec: Vec<String> = vec![];

let closure = async || {
    vec.push(ready(String::from("")).await);
};
```

The async closure captures `vec` with some `&'closure mut Vec<String>` which lives until the closure is dropped. Every call to `closure()` returns a future which reborrows that mutable reference `&'call mut Vec<String>` which lives until the future is dropped (e.g. it is `await`ed).

As another example:

```rust
let string: String = "Hello, world".into();

let closure = async move || {
    ready(&string).await;
};
```

The closure is marked with `move`, which means it takes ownership of the string by *value*. The future that is returned by calling `closure()` returns a future which borrows a reference `&'call String` which lives until the future is dropped (e.g. it is `await`ed).

#### Async fn trait family

To support the lending capability of async closures, and to provide a first-class way to express higher-ranked async closures, we introduce the `AsyncFn*` family of traits. See the [corresponding section](https://rust-lang.github.io/rfcs/3668-async-closures.html#asyncfn) of the RFC.

We stabilize naming `AsyncFn*` via the "parenthesized sugar" syntax that normal `Fn*` traits can be named. The `AsyncFn*` trait can be used anywhere a `Fn*` trait bound is allowed, such as:

```rust
/// In return-position impl trait:
fn closure() -> impl AsyncFn() { async || {} }

/// In trait bounds:
trait Foo<F>: Sized
where
    F: AsyncFn()
{
    fn new(f: F) -> Self;
}

/// in GATs:
trait Gat {
    type AsyncHasher<T>: AsyncFn(T) -> i32;
}
```

Other than using them in trait bounds, the definitions of these traits are not directly observable, but certain aspects of their behavior can be indirectly observed such as the fact that:

* `AsyncFn::async_call` and `AsyncFnMut::async_call_mut` return a future which is *lending*, and therefore borrows the `&self` lifetime of the callee.

```rust
fn by_ref_call(c: impl AsyncFn()) {
    let fut = c();
    drop(c);
    //   ^ Cannot drop `c` since it is borrowed by `fut`.
}
```

* `AsyncFnOnce::async_call_once` returns a future that takes ownership of the callee.

```rust
fn by_ref_call(c: impl AsyncFnOnce()) {
    let fut = c();
    let _ = c();
    //      ^ Cannot call `c` since calling it takes ownership the callee.
}
```

* All currently-stable callable types (i.e., closures, function items, function pointers, and `dyn Fn*` trait objects) automatically implement `AsyncFn*() -> T` if they implement `Fn*() -> Fut` for some output type `Fut`, and `Fut` implements `Future<Output = T>`.
    * This is to make sure that `AsyncFn*()` trait bounds have maximum compatibility with existing callable types which return futures, such as async function items and closures which return boxed futures.
    * For now, this only works currently for *concrete* callable types -- for example, a argument-position impl trait like `impl Fn() -> impl Future<Output = ()>` does not implement `AsyncFn()`, due to the fact that a `AsyncFn`-if-`Fn` blanket impl does not exist in reality. This may be relaxed in the future. Users can work around this by wrapping their type in an async closure and calling it. I expect this to not matter much in practice, as users are encouraged to write `AsyncFn` bounds directly.

```rust
fn is_async_fn(_: impl AsyncFn(&str)) {}

async fn async_fn_item(s: &str) { todo!() }
is_async_fn(s);
// ^^^ This works.

fn generic(f: impl Fn() -> impl Future<Output = ()>) {
    is_async_fn(f);
    // ^^^ This does not work (yet).
}
```

#### The by-move future

When async closures are called with `AsyncFn`/`AsyncFnMut`, they return a coroutine that borrows from the closure. However, when they are called via `AsyncFnOnce`, we consume that closure, and cannot return a coroutine that borrows from data that is now dropped.

To work around around this limitation, we synthesize a separate future type for calling the async closure via `AsyncFnOnce`.

This future executes identically to the by-ref future returned from calling the async closure, except for the fact that it has a different set of captures, since we must *move* the captures from the parent async into the child future.

#### Interactions between async closures and the `Fn*` family of traits

Async closures always implement `FnOnce`, since they always can be called once. They may also implement `Fn` or `FnMut` if their body is compatible with the calling mode (i.e. if they do not mutate their captures, or they do not capture their captures, respectively) and if the future returned by the async closure is not *lending*.

```rust
let id = String::new();

let mapped: Vec</* impl Future */> =
    [/* elements */]
    .into_iter()
    // `Iterator::map` takes an `impl FnMut`
    .map(async |element| {
        do_something(&id, element).await;
    })
    .collect();
```

See [the dev guide](https://rustc-dev-guide.rust-lang.org/coroutine-closures.html#follow-up-when-do-async-closures-implement-the-regular-fn-traits) for a detailed explanation for the situations where this may not be possible due to the lending nature of async closures.

#### Other notable features of async closures shared with synchronous closures

* Async closures are `Copy` and/or `Clone` if their captures are `Copy`/`Clone`.
* Async closures do closure signature inference: If an async closure is passed to a function with a `AsyncFn` or `Fn` trait bound, we can eagerly infer the argument types of the closure. More details are provided in [the dev guide](https://rustc-dev-guide.rust-lang.org/coroutine-closures.html#closure-signature-inference).

#### Lints

This PR also stabilizes the `CLOSURE_RETURNING_ASYNC_BLOCK` lint as an `allow` lint. This lints on "old-style" async closures:

```rust
#![warn(closure_returning_async_block)]
let c = |x: &str| async {};
```

We should encourage users to use `async || {}` where possible. This lint remains `allow` and may be refined in the future because it has a few false positives (namely, see: "Where do we expect rewriting `|| async {}` into `async || {}` to fail?")

An alternative that could be made at the time of stabilization is to put this lint behind another gate, so we can decide to stabilize it later.

## What isn't stabilized (aka, potential future work)

#### `async Fn*()` bound syntax

We decided to stabilize async closures without the `async Fn*()` bound modifier syntax. The general direction of this syntax and how it fits is still being considered by T-lang (e.g. in [RFC 3710](https://github.com/rust-lang/rfcs/pull/3710)).

#### Naming the futures returned by async closures

This stabilization PR does not provide a way of naming the futures returned by calling `AsyncFn*`.

Exposing a stable way to refer to these futures is important for building async-closure-aware combinators, and will be an important future step.

#### Return type notation-style bounds for async closures

The RFC described an RTN-like syntax for putting bounds on the future returned by an async closure:

```rust
async fn foo(x: F) -> Result<()>
where
    F: AsyncFn(&str) -> Result<()>,
    // The future from calling `F` is `Send` and `'static`.
    F(..): Send + 'static,
{}
```

This stabilization PR does not stabilize that syntax yet, which remains unimplemented (though will be soon).

#### `dyn AsyncFn*()`

`AsyncFn*` are not dyn-compatible yet. This will likely be implemented in the future along with the dyn-compatibility of async fn in trait, since the same issue (dealing with the future returned by a call) applies there.

## Tests

Tests exist for this feature in [`tests/ui/async-await/async-closures`](5b54286640/tests/ui/async-await/async-closures).

<details>
    <summary>A selected set of tests:</summary>

* Lending behavior of async closures
    * `tests/ui/async-await/async-closures/mutate.rs`
    * `tests/ui/async-await/async-closures/captures.rs`
    * `tests/ui/async-await/async-closures/precise-captures.rs`
    * `tests/ui/async-await/async-closures/no-borrow-from-env.rs`
* Async closures may be higher-ranked
    * `tests/ui/async-await/async-closures/higher-ranked.rs`
    * `tests/ui/async-await/async-closures/higher-ranked-return.rs`
* Async closures may implement `Fn*` traits
    * `tests/ui/async-await/async-closures/is-fn.rs`
    * `tests/ui/async-await/async-closures/implements-fnmut.rs`
* Async closures may be cloned
    * `tests/ui/async-await/async-closures/clone-closure.rs`
* Ownership of the upvars when `AsyncFnOnce` is called
    * `tests/ui/async-await/async-closures/drop.rs`
    * `tests/ui/async-await/async-closures/move-is-async-fn.rs`
    * `tests/ui/async-await/async-closures/force-move-due-to-inferred-kind.rs`
    * `tests/ui/async-await/async-closures/force-move-due-to-actually-fnonce.rs`
* Closure signature inference
    * `tests/ui/async-await/async-closures/signature-deduction.rs`
    * `tests/ui/async-await/async-closures/sig-from-bare-fn.rs`
    * `tests/ui/async-await/async-closures/signature-inference-from-two-part-bound.rs`

</details>

## Remaining bugs and open issues

* https://github.com/rust-lang/rust/issues/120694 tracks moving onto more general `LendingFn*` traits. No action needed, since it's not observable.
* https://github.com/rust-lang/rust/issues/124020 - Polymorphization ICE. Polymorphization needs to be heavily reworked. No action needed.
* https://github.com/rust-lang/rust/issues/127227 - Tracking reworking the way that rustdoc re-sugars bounds.
    * The part relevant to to `AsyncFn` is fixed by https://github.com/rust-lang/rust/pull/132697.

## Where do we expect rewriting `|| async {}` into `async || {}` to fail?

* Fn pointer coercions
    * Currently, it is not possible to coerce an async closure to an fn pointer like regular closures can be. This functionality may be implemented in the future.
```rust
let x: fn() -> _ = async || {};
```
* Argument capture
    * Like async functions, async closures always capture their input arguments. This is in contrast to something like `|t: T| async {}`, which doesn't capture `t` unless it is used in the async block. This may affect the `Send`-ness of the future or affect its outlives.
```rust
fn needs_send_future(_: impl Fn(NotSendArg) -> Fut)
where
    Fut: Future<Output = ()>,
{}

needs_send_future(async |_| {});
```

## History

#### Important feature history

- https://github.com/rust-lang/rust/pull/51580
- https://github.com/rust-lang/rust/pull/62292
- https://github.com/rust-lang/rust/pull/120361
- https://github.com/rust-lang/rust/pull/120712
- https://github.com/rust-lang/rust/pull/121857
- https://github.com/rust-lang/rust/pull/123660
- https://github.com/rust-lang/rust/pull/125259
- https://github.com/rust-lang/rust/pull/128506
- https://github.com/rust-lang/rust/pull/127482

## Acknowledgements

Thanks to `@oli-obk` for reviewing the bulk of the work for this feature. Thanks to `@nikomatsakis` for his design blog posts which generated interest for this feature, `@traviscross` for feedback and additions to this stabilization report. All errors are my own.

r? `@ghost`
2024-12-13 00:37:51 +00:00
..
E0001.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0002.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0004.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0005.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0007.md Disabled error E0007 from rustc_error_codes 2020-09-15 14:23:20 +08:00
E0009.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0010.md Remove uses of box_syntax in rustc and tools 2023-03-12 13:19:46 +00:00
E0013.md Stabilize const_refs_to_static 2024-09-26 13:21:15 +02:00
E0014.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0015.md doc/test: add UI test and reword docs for E0013 and E0015 2023-01-08 13:33:09 +13:00
E0023.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0025.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0026.md Spelling - compiler 2023-04-17 16:09:18 -04:00
E0027.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0029.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0030.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0033.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0034.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0038.md Compiler: Rename "object safe" to "dyn compatible" 2024-09-25 13:26:48 +02:00
E0040.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0044.md Update tests for extern block linting 2021-01-13 07:49:16 -05:00
E0045.md Cleanup some error code explanations 2022-10-03 08:53:06 +02:00
E0046.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0049.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0050.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0053.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0054.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0055.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0057.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0059.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0060.md Use c"lit" for CStrings without unwrap 2024-12-02 18:16:36 +00:00
E0061.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0062.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0063.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0067.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0069.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0070.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0071.md Do not issue E0071 if a type error has already been reported 2021-09-12 23:07:23 +02:00
E0072.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0073.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0074.md Ban non-array SIMD 2024-09-09 19:39:43 -07:00
E0075.md Ban non-array SIMD 2024-09-09 19:39:43 -07:00
E0076.md Ban non-array SIMD 2024-09-09 19:39:43 -07:00
E0077.md Ban non-array SIMD 2024-09-09 19:39:43 -07:00
E0080.md Bless tidy 2023-03-27 18:58:07 +00:00
E0081.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0084.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0087.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0088.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0089.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0090.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0091.md Improve the diagnostics for unused generic parameters 2024-02-01 16:18:03 +01:00
E0092.md Add internal_features lint 2023-08-03 14:50:50 +02:00
E0093.md Add internal_features lint 2023-08-03 14:50:50 +02:00
E0094.md remove support for rustc_safe_intrinsic attribute; use rustc_intrinsic functions instead 2024-11-08 09:16:00 +01:00
E0106.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0107.md Edit multiple error code Markdown files 2021-01-30 15:57:46 -08:00
E0109.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0110.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0116.md Edit multiple error code Markdown files 2021-01-30 15:57:46 -08:00
E0117.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0118.md Improve the function pointer docs 2022-07-19 08:52:24 -07:00
E0119.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0120.md fix: explain E0120 better cover cases when its raised 2024-07-19 15:37:13 +02:00
E0121.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0124.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0128.md progress, stuff compiles now 2021-03-23 17:16:20 +00:00
E0130.md Update tests for extern block linting 2021-01-13 07:49:16 -05:00
E0131.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0132.md unstable book: update lang_items page and split it 2023-08-04 18:40:54 +02:00
E0133.md Add details about unsafe_op_in_unsafe_fn to E0133 2023-05-28 13:11:30 +02:00
E0136.md Implement RFC 1260 with feature_name imported_main. 2021-04-29 08:35:08 +08:00
E0137.md Remove #[main] attribute. 2021-04-16 13:04:02 +08:00
E0138.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0139.md Dejargnonize subst 2024-02-12 15:46:35 +09:00
E0152.md unstable book: update lang_items page and split it 2023-08-04 18:40:54 +02:00
E0154.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0158.md avoid creating an Instance only to immediately disassemble it again 2024-07-18 11:58:16 +02:00
E0161.md Cleanup some error code explanations 2022-10-03 08:53:06 +02:00
E0162.md replace if-let and while-let with if let and while let 2021-02-17 19:26:38 +09:00
E0164.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0165.md replace if-let and while-let with if let and while let 2021-02-17 19:26:38 +09:00
E0170.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0178.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0183.md fix(compiler): correct minor typos in some long error code explanations 2022-01-11 10:42:51 +08:00
E0184.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0185.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0186.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0191.md Fix syntax in E0191 explanation. 2023-08-21 18:45:51 +07:00
E0192.md Add missing E0192 in the error code listing 2022-02-12 00:43:09 +01:00
E0193.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0195.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0197.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0198.md Rename optin_builtin_traits to auto_traits 2020-11-23 14:14:06 -08:00
E0199.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0200.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0201.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0203.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0204.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0205.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0206.md Update compiler/rustc_error_codes/src/error_codes/E0206.md 2023-03-17 15:50:37 +01:00
E0207.md Mention const and lifetime parameters in error E0207 2022-10-30 12:01:39 +01:00
E0208.md Add internal_features lint 2023-08-03 14:50:50 +02:00
E0210.md Remove redundant sentence 2022-10-24 00:52:26 -07:00
E0211.md remove support for rustc_safe_intrinsic attribute; use rustc_intrinsic functions instead 2024-11-08 09:16:00 +01:00
E0212.md Add long explanation for E0212 2020-12-04 22:17:06 +09:00
E0214.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0220.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0221.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0222.md Consistently use 'supertrait'. 2021-10-02 08:05:44 +07:00
E0223.md Improve documentation for E0223 2023-03-27 18:00:22 +00:00
E0224.md Fix typos in E0224 2020-09-01 23:05:56 +10:00
E0225.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0226.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0227.md docs(error-codes): Add long error explanation for E0227 2021-12-28 15:46:20 +03:00
E0228.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0229.md Rename HIR TypeBinding to AssocItemConstraint and related cleanup 2024-05-30 22:52:33 +02:00
E0230.md Dejargnonize subst 2024-02-12 15:46:35 +09:00
E0231.md Dejargnonize subst 2024-02-12 15:46:35 +09:00
E0232.md Add internal_features lint 2023-08-03 14:50:50 +02:00
E0243.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0244.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0251.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0252.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0253.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0254.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0255.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0256.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0259.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0260.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0261.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0262.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0263.md Use the same message as type & const generics. 2022-06-03 08:26:10 +02:00
E0264.md Remove outdated references to librustc_middle. 2024-01-05 16:34:52 +00:00
E0267.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0268.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0271.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0275.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0276.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0277.md swap function order for better read flow 2021-05-13 13:22:24 +02:00
E0281.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0282.md Update docs for E0282 and E0283, as E0282 now doesn't trigger for collect 2023-10-04 02:04:14 +00:00
E0283.md Update docs for E0282 and E0283, as E0282 now doesn't trigger for collect 2023-10-04 02:04:14 +00:00
E0284.md Remove out-of-context line at end of E0284 message 2022-03-02 10:09:02 -03:00
E0297.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0301.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0302.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0303.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0307.md Arbitrary self types v2: use Receiver trait 2024-12-11 11:59:12 +00:00
E0308.md Update description for error E0308 2020-10-25 12:20:25 +01:00
E0309.md Edit multiple error code Markdown files 2021-01-30 15:57:46 -08:00
E0310.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0311.md Spelling - compiler 2023-04-17 16:09:18 -04:00
E0312.md Fully stabilize NLL 2022-06-03 17:16:41 -04:00
E0316.md Add E0316.md 2021-06-07 14:20:39 +02:00
E0317.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0320.md docs: add long error explanation for error E0320 2022-12-17 07:38:23 +13:00
E0321.md Rename optin_builtin_traits to auto_traits 2020-11-23 14:14:06 -08:00
E0322.md Add rustc_deny_explicit_impl 2022-11-14 03:23:41 +00:00
E0323.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0324.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0325.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0326.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0328.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0329.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0364.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0365.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0366.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0367.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0368.md Address the new odd backticks tidy lint in compiler/ 2023-03-11 20:40:18 +01:00
E0369.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0370.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0371.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0373.md Support lists and stylings in more places for rustc --explain 2024-07-10 13:41:36 +00:00
E0374.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0375.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0376.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0377.md docs/test: add UI test and long-form error docs for E0377 2022-12-20 18:31:15 +13:00
E0378.md Support lists and stylings in more places for rustc --explain 2024-07-10 13:41:36 +00:00
E0379.md E0379: Make diagnostic more precise 2024-01-02 13:49:47 +01:00
E0380.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0381.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0382.md Update E0382.md 2022-10-31 00:41:12 -04:00
E0383.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0384.md Update compiler/rustc_error_codes/src/error_codes/E0384.md 2024-04-12 22:43:38 +09:00
E0386.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0387.md Remove double spaces after dots in comments 2023-01-17 08:09:33 +00:00
E0388.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0389.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0390.md rework error messages for incorrect inherent impls 2022-03-30 11:23:58 +02:00
E0391.md add links to query documentation for E0391 2023-07-18 09:20:25 -04:00
E0392.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0393.md Dejargnonize subst 2024-02-12 15:46:35 +09:00
E0398.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0399.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0401.md Generalize E0401 2023-09-10 23:06:14 +02:00
E0403.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0404.md Mention trait alias on the E0404 note 2021-04-02 04:27:18 +09:00
E0405.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0407.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0408.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0409.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0411.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0412.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0415.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0416.md unequal → not equal 2023-03-15 23:55:48 +05:30
E0422.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0423.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0424.md Fix typo in error code description 2020-10-10 18:02:53 +09:00
E0425.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0426.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0428.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0429.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0430.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0431.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0432.md E0432: rust 2018 -> rust 2018 or later in --explain message 2022-06-06 11:58:49 +02:00
E0433.md Clarify message about unresolved use 2020-09-01 18:38:14 +01:00
E0434.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0435.md Refine E0435 description 2021-01-07 20:20:58 +09:00
E0436.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0437.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0438.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0439.md Forbid old-style simd_shuffleN intrinsics 2023-08-03 09:29:00 +00:00
E0445.md Replace old private-in-public diagnostic with type privacy lints 2023-08-02 13:40:28 +03:00
E0446.md Replace old private-in-public diagnostic with type privacy lints 2023-08-02 13:40:28 +03:00
E0447.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0448.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0449.md Make "unneccesary visibility qualifier" error much more clear 2023-04-03 21:52:27 -05:00
E0451.md Fixed several error_codes/Exxxx.md messages which used UpperCamelCase instead of snake_case for module names 2022-06-10 11:25:47 +01:00
E0452.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0453.md rustc_error_codes: Update expected error in E0453.md 2023-12-28 19:46:40 +01:00
E0454.md Update tests for extern block linting 2021-01-13 07:49:16 -05:00
E0455.md rustc: Stricter checking for #[link] attributes 2022-05-15 02:45:47 +03:00
E0457.md Remove a stray backtick in an error explanation. 2024-05-13 07:53:38 +10:00
E0458.md rustc: Stricter checking for #[link] attributes 2022-05-15 02:45:47 +03:00
E0459.md Update tests for extern block linting 2021-01-13 07:49:16 -05:00
E0460.md more markdown list formatting 2022-12-19 22:50:31 +13:00
E0461.md docs: add long-form error docs for E0461 2022-12-27 17:03:39 +13:00
E0462.md docs/test: add UI test and long-form error docs for E0462 2022-12-23 10:56:16 +13:00
E0463.md Remove support for compiler plugins. 2023-11-04 08:50:46 +11:00
E0464.md Add extended error message for E0523 2023-02-06 06:58:30 -05:00
E0466.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0468.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0469.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0472.md docs: add long error explanation for error E0472 2022-12-20 21:34:30 +13:00
E0476.md docs/test: add UI test and docs for E0476 2023-02-25 19:31:02 +13:00
E0477.md Fully stabilize NLL 2022-06-03 17:16:41 -04:00
E0478.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0482.md Member constraints already covered all of E0482 already, so that error never occurred anymore 2021-10-18 15:50:56 +00:00
E0491.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0492.md compiler: remove unnecessary imports and qualified paths 2022-12-10 18:45:34 +01:00
E0493.md Fix typo with custom a custom -> with a custom 2021-06-13 21:21:45 +02:00
E0495.md Fully stabilize NLL 2022-06-03 17:16:41 -04:00
E0496.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0497.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0498.md Remove support for compiler plugins. 2023-11-04 08:50:46 +11:00
E0499.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0500.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0501.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0502.md Correct description of E0502 2024-07-06 09:13:14 +03:00
E0503.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0504.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0505.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0506.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0507.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0508.md Add destructuring example of E0508 2021-06-22 22:24:46 +10:00
E0509.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0510.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0511.md Ban non-array SIMD 2024-09-09 19:39:43 -07:00
E0512.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0514.md docs: add long-form error docs for E0514 2022-12-29 14:32:39 +13:00
E0515.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0516.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0517.md Update E0517 message to reflect RFC 2195. 2024-08-07 23:11:30 -05:00
E0518.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0519.md docs/test: add UI test and long-form error docs for E0519 2022-12-29 13:16:10 +13:00
E0520.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0521.md fix(compiler): correct minor typos in some long error code explanations 2022-01-11 10:42:51 +08:00
E0522.md consistency rename: language item -> lang item 2024-04-17 13:00:43 +02:00
E0523.md Add extended error message for E0523 2023-02-06 06:58:30 -05:00
E0524.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0525.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0527.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0528.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0529.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0530.md Expand explanation of E0530 2021-08-03 11:11:17 +01:00
E0531.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0532.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0533.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0534.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0535.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0536.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0537.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0538.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0539.md we can now enable the 'const stable fn must be stable' check 2024-10-28 11:48:39 +01:00
E0541.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0542.md we can now enable the 'const stable fn must be stable' check 2024-10-28 11:48:39 +01:00
E0543.md Add internal_features lint 2023-08-03 14:50:50 +02:00
E0544.md Add internal_features lint 2023-08-03 14:50:50 +02:00
E0545.md Add internal_features lint 2023-08-03 14:50:50 +02:00
E0546.md Add internal_features lint 2023-08-03 14:50:50 +02:00
E0547.md Add internal_features lint 2023-08-03 14:50:50 +02:00
E0549.md Add internal_features lint 2023-08-03 14:50:50 +02:00
E0550.md Add note to E0550 2022-04-14 22:44:21 -04:00
E0551.md Remove E0551. 2023-10-04 18:12:20 +11:00
E0552.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0554.md Stablize non_ascii_idents feature. 2021-04-08 02:52:00 +08:00
E0556.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0557.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0559.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0560.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0561.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0562.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0565.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0566.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0567.md Rename optin_builtin_traits to auto_traits 2020-11-23 14:14:06 -08:00
E0568.md Rename optin_builtin_traits to auto_traits 2020-11-23 14:14:06 -08:00
E0569.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0570.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0571.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0572.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0573.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0574.md Fixed several error_codes/Exxxx.md messages which used UpperCamelCase instead of snake_case for module names 2022-06-10 11:25:47 +01:00
E0575.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0576.md Spelling - compiler 2023-04-17 16:09:18 -04:00
E0577.md Adapt error code doc. 2023-08-02 15:30:29 +00:00
E0578.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0579.md Stabilize exclusive_range 2024-05-02 19:42:31 -04:00
E0580.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0581.md fix(compiler): correct minor typos in some long error code explanations 2022-01-11 10:42:51 +08:00
E0582.md chore: Fix typos in 'compiler' (batch 1) 2024-09-02 07:42:38 +02:00
E0583.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0584.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0585.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0586.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0587.md compiler: Fix E0587 explanation 2023-01-27 10:59:51 +01:00
E0588.md Fix a typo in the explanation of E0588 2023-01-07 05:10:53 +01:00
E0589.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0590.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0591.md fix small word dupe typos 2022-10-13 00:53:46 +08:00
E0592.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0593.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0594.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0595.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0596.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0597.md Edit multiple error code Markdown files 2021-01-30 15:57:46 -08:00
E0599.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0600.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0601.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0602.md Error when warnings lint group is used with force-warn 2021-08-18 11:53:59 +02:00
E0603.md Fixed several error_codes/Exxxx.md messages which used UpperCamelCase instead of snake_case for module names 2022-06-10 11:25:47 +01:00
E0604.md #91836: Clarify error on casting larger integers to char 2021-12-14 21:49:49 +00:00
E0605.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0606.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0607.md Use wide pointers consistenly across the compiler 2024-10-04 14:06:48 +02:00
E0608.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0609.md Spelling - compiler 2023-04-17 16:09:18 -04:00
E0610.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0614.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0615.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0616.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0617.md fix example code for E0617 2021-07-28 16:33:02 -04:00
E0618.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0619.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0620.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0621.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0622.md Add core::arch::breakpoint and test 2024-12-02 23:56:24 -08:00
E0623.md Fully stabilize NLL 2022-06-03 17:16:41 -04:00
E0624.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0625.md move full explanation to after erroneous example 2021-08-04 15:49:00 -04:00
E0626.md Reword E0626 to mention static coroutine 2024-07-21 22:32:29 -04:00
E0627.md Error on using yield without also using #[coroutine] on the closure 2024-04-24 08:05:29 +00:00
E0628.md Error on using yield without also using #[coroutine] on the closure 2024-04-24 08:05:29 +00:00
E0631.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0632.md Deactivate feature gate explicit_generic_args_with_impl_trait 2022-06-06 12:21:49 +01:00
E0633.md rustc: Fill out remaining parts of C-unwind ABI 2021-08-03 07:06:19 -07:00
E0634.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0635.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0636.md terminology: #[feature] *enables* a feature (instead of "declaring" or "activating" it) 2024-10-22 07:37:54 +01:00
E0637.md Mention Both HRTB and Generic Lifetime in E0637 documentation 2024-04-27 18:15:14 -04:00
E0638.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0639.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0640.md move rustc_outlives test code from query to dedicated function 2023-12-23 13:59:10 +01:00
E0641.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0642.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0643.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0644.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0646.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0647.md Change start to #[start] in some diagnosis 2023-09-22 15:58:43 +02:00
E0648.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0657.md Improve error message for opaque captures 2024-03-08 19:08:13 +00:00
E0658.md Edit multiple error code Markdown files 2021-01-30 15:57:46 -08:00
E0659.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0660.md Error codes specific to LLVM-style inline asssembly are no longer emitted 2022-01-12 21:43:36 +01:00
E0661.md Error codes specific to LLVM-style inline asssembly are no longer emitted 2022-01-12 21:43:36 +01:00
E0662.md Error codes specific to LLVM-style inline asssembly are no longer emitted 2022-01-12 21:43:36 +01:00
E0663.md Error codes specific to LLVM-style inline asssembly are no longer emitted 2022-01-12 21:43:36 +01:00
E0664.md Error codes specific to LLVM-style inline asssembly are no longer emitted 2022-01-12 21:43:36 +01:00
E0665.md Indicate E0665 is no longer emitted 2021-07-27 15:47:49 -04:00
E0666.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0667.md Move an impl-Trait check from AST validation to AST lowering 2024-10-27 07:41:52 +01:00
E0668.md Error codes specific to LLVM-style inline asssembly are no longer emitted 2022-01-12 21:43:36 +01:00
E0669.md Error codes specific to LLVM-style inline asssembly are no longer emitted 2022-01-12 21:43:36 +01:00
E0670.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0671.md feature(const_generics) -> feature(const_param_types) 2021-08-30 11:00:21 +02:00
E0687.md Remove in-band lifetimes 2022-02-24 18:50:33 -08:00
E0688.md Remove in-band lifetimes 2022-02-24 18:50:33 -08:00
E0689.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0690.md Adjust documentation 2021-06-14 07:42:15 +09:00
E0691.md mark error code as removed 2023-08-29 14:11:50 +02:00
E0692.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0693.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0695.md Stabilize #![feature(label_break_value)] 2022-08-23 21:14:12 -05:00
E0696.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0697.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0698.md Replace all uses of generator in markdown documentation with coroutine 2023-10-20 21:14:02 +00:00
E0699.md Use the more informative generic type inference failure error on method calls on raw pointers 2024-03-20 15:53:06 +00:00
E0700.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0701.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0703.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0704.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0705.md terminology: #[feature] *enables* a feature (instead of "declaring" or "activating" it) 2024-10-22 07:37:54 +01:00
E0706.md Deprecate E0706 2023-10-13 21:01:36 +00:00
E0708.md Stabilize async closures 2024-12-13 00:04:56 +00:00
E0710.md Address the new odd backticks tidy lint in compiler/ 2023-03-11 20:40:18 +01:00
E0711.md docs/test: add error-docs and UI test for E0711 2023-01-09 15:48:53 +13:00
E0712.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0713.md Remove double spaces after dots in comments 2023-01-17 08:09:33 +00:00
E0714.md Remove double spaces after dots in comments 2023-01-17 08:09:33 +00:00
E0715.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0716.md Update E0716.md 2024-03-01 17:31:02 -06:00
E0717.md docs/test: add empty error-docs for E0208, E0640 and E0717 2023-01-09 15:48:52 +13:00
E0718.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0719.md Stabilize associated type bounds 2024-03-08 20:56:25 +00:00
E0720.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0722.md docs: add newline before example 2021-07-21 10:58:35 +01:00
E0724.md Remove ffi_returns_twice feature 2024-01-30 22:09:09 +00:00
E0725.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0726.md Update compiler/rustc_error_codes/src/error_codes/E0726.md 2023-05-06 19:39:08 -04:00
E0727.md Error on using yield without also using #[coroutine] on the closure 2024-04-24 08:05:29 +00:00
E0728.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0729.md docs: revert removal of E0729 2023-01-02 09:11:36 +13:00
E0730.md update error codes 2020-12-26 18:24:10 +01:00
E0731.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0732.md Stabilize arbitrary_enum_discriminant, take 2 2022-10-22 13:54:39 +08:00
E0733.md Last nits 2024-01-08 20:32:06 +00:00
E0734.md Update error code docs 2022-04-14 21:19:46 -04:00
E0735.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0736.md allow #[target_feature] on #[naked] functions 2024-07-27 12:56:20 +02:00
E0737.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0739.md update text for E0736 and E0739 2024-07-16 22:06:34 +02:00
E0740.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0741.md Implement custom diagnostic for ConstParamTy 2023-06-01 18:21:42 +00:00
E0742.md Fixed several error_codes/Exxxx.md messages which used UpperCamelCase instead of snake_case for module names 2022-06-10 11:25:47 +01:00
E0743.md Cleanup some error code explanations 2022-10-03 08:53:06 +02:00
E0744.md Yeet E0744 2023-11-28 20:40:38 +00:00
E0745.md stabilize raw_ref_op 2024-08-18 19:46:53 +02:00
E0746.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0747.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0748.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0749.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0750.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0751.md Fix: typo in E0751 error explanation 2024-12-06 22:09:17 -03:00
E0752.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0753.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0754.md Stablize non_ascii_idents feature. 2021-04-08 02:52:00 +08:00
E0755.md Add error explanation for E0755 2020-09-08 21:07:52 +02:00
E0756.md Add explanation for E0756 2020-09-21 21:04:56 +02:00
E0757.md docs: normalise wording in line with docs 2021-07-21 14:13:46 +01:00
E0758.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0759.md Fully stabilize NLL 2022-06-03 17:16:41 -04:00
E0760.md Stabilize impl_trait_projections 2023-09-08 03:45:36 +00:00
E0761.md E0761: module directory has .rs suffix 2023-12-20 17:05:56 +01:00
E0762.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0763.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0764.md stabilize const_mut_refs 2024-09-15 09:51:32 +02:00
E0765.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0766.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0767.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0768.md mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
E0769.md Clean up E0769 explanation 2020-08-31 20:10:57 +02:00
E0770.md feature(const_generics) -> feature(const_param_types) 2021-08-30 11:00:21 +02:00
E0771.md Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
E0772.md Fully stabilize NLL 2022-06-03 17:16:41 -04:00
E0773.md Add internal_features lint 2023-08-03 14:50:50 +02:00
E0774.md Create new E0774 code error 2020-09-08 21:32:03 +02:00
E0775.md mark E0775 as no longer emitte by the compiler 2024-09-21 13:09:09 +02:00
E0776.md remove #[cmse_nonsecure_entry] 2024-09-21 13:05:21 +02:00
E0777.md Create E0777 error code for "invalid literal in derive" 2020-10-01 20:41:57 +02:00
E0778.md Implement the instruction_set attribute 2020-10-08 23:32:20 +01:00
E0779.md Implement the instruction_set attribute 2020-10-08 23:32:20 +01:00
E0780.md Rustdoc render public underscore_imports as Re-exports 2020-12-31 09:07:51 +00:00
E0781.md Add a new ABI to support cmse_nonsecure_call 2021-02-02 13:04:31 +00:00
E0782.md Add compatibility info to lints 2021-04-13 16:55:54 +02:00
E0783.md Add compatibility info to lints 2021-04-13 16:55:54 +02:00
E0784.md Assign E0784 to union expression error 2021-08-02 16:51:39 +02:00
E0785.md Update E0785.md 2021-08-30 22:18:55 -07:00
E0786.md Improve error when an .rlib can't be parsed 2021-11-07 15:03:40 +00:00
E0787.md disallow asm! in #[naked] functions 2024-10-06 18:12:25 +02:00
E0788.md Rework no_coverage to coverage(off) 2023-09-08 12:46:06 +01:00
E0789.md Add internal_features lint 2023-08-03 14:50:50 +02:00
E0790.md s/Generator/Coroutine/ 2023-10-20 21:10:38 +00:00
E0791.md Support Option and similar enums as type of static variable with linkage attribute. 2022-12-05 15:05:43 -08:00
E0792.md Add a fn main() {} to a doctest to prevent the test from being wrapped in a fn main() {} body 2024-06-12 08:53:59 +00:00
E0793.md Fix typo in E0793 2024-10-09 10:28:16 -07:00
E0794.md Dejargnonize subst 2024-02-12 15:46:35 +09:00
E0795.md Stabilize offset_of_nested 2024-07-29 17:50:12 +01:00
E0796.md Disallow hidden references to mutable static 2024-09-13 13:33:43 +03:00
E0797.md Add error code for missing base expression in struct update syntax 2024-01-09 19:25:54 +00:00
E0798.md switch to an allowlist approach 2024-07-27 12:55:39 +02:00
E0799.md Introduce distinct error codes for precise capturing 2024-09-16 10:56:22 -04:00
E0800.md Introduce distinct error codes for precise capturing 2024-09-16 10:56:22 -04:00
E0801.md Reject generic self types. 2024-10-30 10:48:08 +00:00