rust/tests/ui
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
..
abi tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
alloc-error Update test directives for wasm32-wasip1 2024-03-11 09:36:35 -07:00
allocator UI tests: Rename "object safe" to "dyn compatible" 2024-10-10 01:13:29 +02:00
annotate-snippet Update tests to use new proc-macro header 2024-11-27 07:18:25 -08:00
anon-params More accurate span for anonymous argument suggestion 2024-07-18 00:19:27 +00:00
argfile compiletest: add enable-by-default check-cfg 2024-05-04 11:30:38 +02:00
argument-suggestions Added more scenarios where commas need to be removed 2024-10-20 17:14:53 +08:00
array-slice-vec Auto merge of #133505 - compiler-errors:rollup-xjp8hdi, r=compiler-errors 2024-11-26 21:57:32 +00:00
asan-odr-win PassWrapper: disable UseOdrIndicator for Asan Win32 2024-11-14 04:20:18 +08:00
asm Rollup merge of #134070 - oli-obk:push-nquzymupzlsq, r=jieyouxu 2024-12-12 08:06:59 +01:00
associated-consts Hide errors whose suggestions would contain error constants or types 2024-12-06 10:50:20 +00:00
associated-inherent-types use backticks instead of single quotes when reporting "use of unstable library feature" 2024-11-03 13:55:52 -08:00
associated-item Compiler: Rename "object safe" to "dyn compatible" 2024-09-25 13:26:48 +02:00
associated-type-bounds Rollup merge of #133660 - compiler-errors:trait-obj-missing-assoc, r=lcnr 2024-12-01 08:15:25 +01:00
associated-types Tweak wording 2024-12-07 22:18:51 +00:00
async-await Auto merge of #132706 - compiler-errors:async-closures, r=oli-obk 2024-12-13 00:37:51 +00:00
attributes Rollup merge of #131558 - sassman:feat/warnin-for-no-mangle-together-with-export-name, r=Urgau 2024-12-10 08:55:54 +01:00
auto-traits Mention type parameter in more cases and don't suggest ~const bound already there 2024-12-07 21:37:13 +00:00
autodiff Update tests to use new proc-macro header 2024-11-27 07:18:25 -08:00
autoref-autoderef tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
auxiliary do not implement unsafe auto traits for types with unsafe fields 2024-12-05 23:52:21 +00:00
backtrace Emscripten: Xfail backtrace ui tests 2024-10-16 12:22:14 +02:00
bench tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
binding Tweak output of some const pattern errors 2024-12-04 20:29:36 +00:00
binop Mention type parameter in more cases and don't suggest ~const bound already there 2024-12-07 21:37:13 +00:00
blind Accurate use rename suggestion span 2024-07-18 00:00:04 +00:00
block-result Remove detail from label/note that is already available in other note 2024-10-29 16:26:57 +00:00
bootstrap Add a ui test for RUSTC_BOOTSTRAP vs rustc's stability 2024-11-17 19:59:52 +08:00
borrowck Rollup merge of #134024 - jieyouxu:ui-cleanup-2, r=Nadrieril 2024-12-08 17:18:53 +01:00
box Allow fn pointers comparisons lint in UI tests 2024-12-02 18:43:37 +01:00
btreemap Peel off explicit (or implicit) deref before suggesting clone on move error in borrowck 2024-07-26 14:41:56 -04:00
builtin-superkinds Mention type parameter in more cases and don't suggest ~const bound already there 2024-12-07 21:37:13 +00:00
c-variadic Rollup merge of #133620 - dev-ardi:simplify-hir_typeck_pass_to_variadic_function, r=compiler-errors 2024-11-30 12:56:54 +08:00
cast Remove detail from label/note that is already available in other note 2024-10-29 16:26:57 +00:00
cfg Update tests to use new proc-macro header 2024-11-27 07:18:25 -08:00
check-cfg Add the power8-crypto target feature 2024-12-09 00:41:35 +05:30
closure-expected-type Make nll higher ranked equate use bidirectional subtyping in invariant context 2024-02-29 15:27:59 -03:00
closure_context
closures Stabilize async closures 2024-12-13 00:04:56 +00:00
cmse-nonsecure Stabilize extended_varargs_abi_support 2024-11-27 22:21:33 +01:00
codegen Move assign-assign.rs to tests/ui/codegen/assign-expr-unit-type.rs 2024-12-08 15:32:04 +08:00
codemap_tests Don't allow -Zunstable-options to take a value 2024-11-18 18:04:59 +11:00
coercion Auto merge of #133321 - compiler-errors:const-checker, r=wesleywiser 2024-12-03 04:39:48 +00:00
coherence reword trait bound suggestion message to include the bounds 2024-12-07 21:26:20 +00:00
coinduction [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
command Fix must_use lint for command exec tests 2024-10-17 06:33:35 -07:00
compare-method show unit output when there is only output diff in diagnostics 2024-07-06 21:00:30 +08:00
compiletest-self-test tests/ui: add minicore compiletest self-test 2024-10-31 18:20:11 +08:00
conditional-compilation use backticks instead of single quotes when reporting "use of unstable library feature" 2024-11-03 13:55:52 -08:00
confuse-field-and-method Use extract_callable_info, generalize it to async closure 2024-11-02 03:53:59 +00:00
const-generics Rollup merge of #134010 - RalfJung:promoted-type-error-ice, r=oli-obk 2024-12-10 08:55:59 +01:00
const-ptr on a signed deref check, mention the right pointer in the error 2024-08-01 14:25:19 +02:00
const_prop Tweak unevaluated constant in pattern error 2024-12-04 20:29:35 +00:00
consts Rollup merge of #134094 - estebank:const-trait-errors, r=compiler-errors 2024-12-10 20:16:02 +01:00
coroutine Stabilize async closures 2024-12-13 00:04:56 +00:00
coverage-attr Rename directive needs-profiler-support to needs-profiler-runtime 2024-10-09 20:58:27 +11:00
crate-loading Update tests to use new proc-macro header 2024-11-27 07:18:25 -08:00
cross Provide structured suggestion for #![feature(foo)] 2024-03-18 16:08:58 +00:00
cross-crate Allow fn pointers comparisons lint in UI tests 2024-12-02 18:43:37 +01:00
custom_test_frameworks [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
cycle-trait Merge collect_mod_item_types query into check_well_formed 2024-03-07 14:26:31 +00:00
dataflow_const_prop dataflow_const_prop: do not eval a ptr address in SwitchInt 2024-12-09 21:06:29 +08:00
debuginfo When the required discriminator value exceeds LLVM's limits, drop the debug info for the function instead of panicking. 2024-11-19 05:19:09 -08:00
definition-reachable [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
delegation Don't trigger never type lint in a delegation test 2024-11-12 22:23:01 +01:00
dep-graph [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
deprecation Deprecate no-op codegen option -Cinline-threshold=... 2024-06-14 20:25:17 +02:00
deref-patterns Move some tests 2024-04-21 15:43:43 -03:00
derived-errors
derives Update tests to use new proc-macro header 2024-11-27 07:18:25 -08:00
deriving make CoercePointee errors translatable 2024-12-04 20:34:48 +08:00
dest-prop [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
destructuring-assignment Introduce default_field_values feature 2024-12-09 21:55:01 +00:00
diagnostic-flags tests: remove few ignore-stage2 2024-04-25 10:48:11 +03:00
diagnostic-width Don't allow -Zunstable-options to take a value 2024-11-18 18:04:59 +11:00
diagnostic_namespace Update tests to use new proc-macro header 2024-11-27 07:18:25 -08:00
did_you_mean Rollup merge of #130826 - fmease:compiler-mv-obj-safe-dyn-compat, r=compiler-errors 2024-09-27 21:35:08 +02:00
directory_ownership [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
disallowed-deconstructing [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
dollar-crate
drop reduce false positives on some common cases from if-let-rescope 2024-12-02 18:30:29 +08:00
drop-bounds [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
dropck Use trait name instead of full constraint in suggestion message 2024-12-07 21:29:58 +00:00
dst Remove detail from label/note that is already available in other note 2024-10-29 16:26:57 +00:00
duplicate Explicitly mark a hack as a HACK and elaborate its comment 2024-09-18 19:36:44 +02:00
dyn-compatibility Do not create trait object type if missing associated types 2024-11-30 17:05:47 +00:00
dyn-drop
dyn-keyword Don't assume traits used as type are trait objs 2024-10-11 17:36:04 +02:00
dyn-star Stabilize noop_waker 2024-12-05 14:14:17 -08:00
dynamically-sized-types tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
editions Stabilize async closures 2024-12-13 00:04:56 +00:00
empty Update tests for new TRPL chapter order 2024-11-23 08:57:25 -07:00
entry-point Stabilize imported_main 2024-03-06 12:01:54 +00:00
enum tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
enum-discriminant fix ICE on type error in promoted 2024-12-09 15:17:26 +01:00
env-macro Move option_env! and env! tests to the env-macro directory 2024-03-17 21:59:40 +00:00
error-codes reword trait bound suggestion message to include the bounds 2024-12-07 21:26:20 +00:00
error-emitter Don't allow -Zunstable-options to take a value 2024-11-18 18:04:59 +11:00
errors Use trait name instead of full constraint in suggestion message 2024-12-07 21:29:58 +00:00
explicit [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
explicit-tail-calls Rollup merge of #133607 - WaffleLapkin:tail-call-checks, r=compiler-errors 2024-12-05 23:47:10 +01:00
expr tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
extern Revert #131669 due to ICEs 2024-12-09 17:31:16 +08:00
extern-flag Include the "unwind" crate to link with libunwind instead of the "libc" crate. 2024-11-14 10:51:28 -05:00
feature-gates Auto merge of #132706 - compiler-errors:async-closures, r=oli-obk 2024-12-13 00:37:51 +00:00
ffi-attrs Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
float move f16/f128 const fn under f16/f128 feature gate 2024-10-05 10:13:18 +02:00
fmt Update tests to use new proc-macro header 2024-11-27 07:18:25 -08:00
fn Rollup merge of #133470 - jieyouxu:ugly, r=compiler-errors 2024-11-26 15:32:18 +01:00
fn-main Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
for Remove detail from label/note that is already available in other note 2024-10-29 16:26:57 +00:00
for-loop-while tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
foreign tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
fully-qualified-type
function-pointer Allow fn pointers comparisons lint in UI tests 2024-12-02 18:43:37 +01:00
functional-struct-update Update tests for hidden references to mutable static 2024-09-13 14:10:56 +03:00
functions-closures tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
generic-associated-types Tweak wording 2024-12-07 22:18:51 +00:00
generic-const-items Yeet effects feature 2024-11-03 18:59:31 +00:00
generics tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
half-open-range-patterns Update tests for new TRPL chapter order 2024-11-23 08:57:25 -07:00
hashmap compiletest: Add a //@ needs-threads directive 2024-03-06 12:35:07 -08:00
hello_world [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
higher-ranked Mention type parameter in more cases and don't suggest ~const bound already there 2024-12-07 21:37:13 +00:00
hygiene Update tests to use new proc-macro header 2024-11-27 07:18:25 -08:00
illegal-sized-bound [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
impl-header-lifetime-elision And more general error 2024-05-24 11:20:33 -04:00
impl-trait Rollup merge of #133122 - compiler-errors:afidt, r=oli-obk 2024-12-12 19:00:41 +01:00
implied-bounds Adjust tests 2024-09-05 06:37:38 -04:00
imports tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
include-macros diagnostics: fix crash on completely empty included file 2024-03-29 18:22:44 -07:00
incoherent-inherent-impls Add a new test ui/incoherent-inherent-impls/no-other-unrelated-errors to check E0116 does not cause unrelated errors 2024-12-05 13:06:34 +09:00
indexing Trim output of E0277 in some cases 2024-11-02 03:08:04 +00:00
inference Auto merge of #133505 - compiler-errors:rollup-xjp8hdi, r=compiler-errors 2024-11-26 21:57:32 +00:00
infinite only query params_in_repr if def kind is adt 2024-10-02 17:36:31 +08:00
inherent-impls-overlap-check Update tests to use new proc-macro header 2024-11-27 07:18:25 -08:00
inline-const review comments: reword messages and simplify logic 2024-12-04 20:49:05 +00:00
instrument-coverage coverage. Adapt to mcdc mapping formats introduced by llvm 19 2024-10-08 11:15:24 +08:00
instrument-xray [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
interior-mutability Remove detail from label/note that is already available in other note 2024-10-29 16:26:57 +00:00
internal use backticks instead of single quotes when reporting "use of unstable library feature" 2024-11-03 13:55:52 -08:00
internal-lints Use the rustc_private libc less in tests 2024-04-15 08:54:11 -04:00
intrinsics changes old intrinsic declaration to new declaration 2024-11-24 14:54:36 +05:30
invalid Fix ICE when passing DefId-creating args to legacy_const_generics. 2024-11-16 01:07:51 +01:00
invalid-compile-flags rust_for_linux: -Zreg-struct-return commandline flag for X86 (#116973) 2024-12-02 01:14:40 +07:00
invalid-module-declaration
invalid-self-argument
io-checks Always use a colon in //@ normalize-*: headers 2024-07-11 12:23:44 +10:00
issues Auto merge of #132706 - compiler-errors:async-closures, r=oli-obk 2024-12-13 00:37:51 +00:00
iterators tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
json Annotate input reference tests 2024-10-30 16:47:47 -07:00
keyword Structured suggestion for extern crate foo when foo isn't resolved in import 2024-07-29 23:49:51 +00:00
kindck Use trait name instead of full constraint in suggestion message 2024-12-07 21:29:58 +00:00
label Make parse error suggestions verbose and fix spans 2024-07-12 03:02:57 +00:00
lang-items Move assoc-lang-items.rs to tests/ui/lang-items/ 2024-12-08 15:32:04 +08:00
late-bound-lifetimes Revert suggestion verbosity change 2024-07-22 22:51:53 +00:00
layout Stabilize async closures 2024-12-13 00:04:56 +00:00
lazy-type-alias Use trait name instead of full constraint in suggestion message 2024-12-07 21:29:58 +00:00
lazy-type-alias-impl-trait [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
let-else Update tests for new TRPL chapter order 2024-11-23 08:57:25 -07:00
lexer Annotate input reference tests 2024-10-30 16:47:47 -07:00
lifetimes Arbitrary self types v2: use Receiver trait 2024-12-11 11:59:12 +00:00
limits fix ICE when promoted has layout size overflow 2024-12-01 19:52:27 +01:00
link-native-libs Move more tests into tests/ui/link-native-libs 2024-12-07 13:18:05 +11:00
linkage-attr Move more tests into tests/ui/link-native-libs 2024-12-07 13:18:05 +11:00
lint Stabilize async closures 2024-12-13 00:04:56 +00:00
liveness tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
loops tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
lowering Change wording 2024-04-29 14:53:38 +02:00
lto Update tests for hidden references to mutable static 2024-09-13 14:10:56 +03:00
lub-glb Rollup merge of #121475 - jieyouxu:tidy-stderr-check, r=the8472,compiler-errors 2024-03-01 17:51:29 +01:00
macro_backtrace [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
macros Stabilize async closures 2024-12-13 00:04:56 +00:00
malformed Be more accurate about calculating display_col from a BytePos 2024-07-18 20:08:38 +00:00
marker_trait_attr Always make inductive cycles as ambig during typeck 2024-03-31 20:44:30 -04:00
match Add more context to fall-through "const pattern of non-structural type" error 2024-12-04 20:29:36 +00:00
meta Remap path refix in the panic message 2024-10-12 09:41:42 +08:00
methods Arbitrary self types v2: use Receiver trait 2024-12-11 11:59:12 +00:00
mir Stabilize async closures 2024-12-13 00:04:56 +00:00
mir-dataflow Remove the DefinitelyInitializedPlaces analysis. 2024-11-22 17:02:04 +11:00
mismatched_types Add more info on type/trait mismatches for different crate versions 2024-12-07 18:18:08 +00:00
missing Reword suggestion message 2024-11-16 20:03:31 +00:00
missing-trait-bounds Use trait name instead of full constraint in suggestion message 2024-12-07 21:29:58 +00:00
missing_non_modrs_mod [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
modules tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
modules_and_files_visibility [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
moves Mention type parameter in more cases and don't suggest ~const bound already there 2024-12-07 21:37:13 +00:00
mut Remove detail from label/note that is already available in other note 2024-10-29 16:26:57 +00:00
namespace Tweak output of import suggestions 2024-06-13 20:22:21 +00:00
never_type Properly consider APITs for never type fallback ascription fix 2024-12-12 00:32:18 +00:00
nll closure-requirements: add regression tests 2024-12-03 17:26:43 +01:00
no_std [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
non_modrs_mods [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
non_modrs_mods_and_inline_mods [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
not-panic Remove detail from label/note that is already available in other note 2024-10-29 16:26:57 +00:00
numbers-arithmetic tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
numeric Tweak "field not found" suggestion when giving struct literal for tuple struct type 2024-07-18 18:20:35 +00:00
object-lifetime tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
obsolete-in-place
offset-of use backticks instead of single quotes when reporting "use of unstable library feature" 2024-11-03 13:55:52 -08:00
on-unimplemented Rollup merge of #132583 - mejrs:tuples, r=compiler-errors 2024-11-04 18:12:48 +01:00
operator-recovery Make parse error suggestions verbose and fix spans 2024-07-12 03:02:57 +00:00
or-patterns Update tests for new TRPL chapter order 2024-11-23 08:57:25 -07:00
overloaded tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
packed stabilize raw_ref_op 2024-08-18 19:46:53 +02:00
panic-handler tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
panic-runtime Enable a few tests on macOS 2024-05-28 12:31:12 +02:00
panics bless tests for changed library path 2024-11-30 11:22:52 +01:00
parallel-rustc [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
parser Don't emit "field expressions may not have generic arguments" if it's a method call without () 2024-12-11 16:23:04 +01:00
patchable-function-entry Updated diagnostic messages 2024-06-27 22:24:36 +02:00
pattern Rollup merge of #133424 - Nadrieril:guard-patterns-parsing, r=fee1-dead 2024-12-08 17:18:50 +01:00
pin-macro use backticks instead of single quotes when reporting "use of unstable library feature" 2024-11-03 13:55:52 -08:00
precondition-checks Warn on redundant --cfg directive when revisions are used 2024-10-19 12:40:12 +00:00
print-request Print env var in --print=deployment-target 2024-11-22 20:46:05 +01:00
print_type_sizes tests: ignore-debug -> ignore-std-debug-assertions 2024-10-31 17:33:42 +08:00
privacy tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
proc-macro Update more 2024 tests to remove -Zunstable-options 2024-11-28 14:32:45 -08:00
process Use c"lit" for CStrings without unwrap 2024-12-02 18:16:36 +00:00
process-termination compiletest: Add a //@ needs-threads directive 2024-03-06 12:35:07 -08:00
ptr_ops [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
pub Bless test fallout 2024-08-03 07:57:31 -04:00
qualified
query-system [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
range Provide diagnostic for Struct(a, .., z) expression 2024-12-09 21:55:12 +00:00
raw-ref-op Be far more strict about what we consider to be a read of never 2024-10-05 19:10:47 -04:00
reachable tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
recursion bless test expectations 2024-12-08 20:21:46 +00:00
recursion_limit [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
regions Use trait name instead of full constraint in suggestion message 2024-12-07 21:29:58 +00:00
repeat-expr Account for let foo = expr; to suggest const foo: Ty = expr; 2024-07-11 20:39:24 +00:00
repr remove support for extern-block const intrinsics 2024-11-04 23:27:45 +01:00
reserved
resolve Rollup merge of #134010 - RalfJung:promoted-type-error-ice, r=oli-obk 2024-12-10 08:55:59 +01:00
return tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
rfcs Stabilize async closures 2024-12-13 00:04:56 +00:00
rmeta [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
runtime Replace sa_sigaction with sa_union.__su_sigaction for AIX. 2024-12-06 12:51:59 -05:00
rust-2018 Update tests to use new proc-macro header 2024-11-27 07:18:25 -08:00
rust-2021 Update tests to use new proc-macro header 2024-11-27 07:18:25 -08:00
rust-2024 Actually walk into lifetimes and attrs in EarlyContextAndPass 2024-12-07 02:08:40 +00:00
rustc-env note value of RUST_MIN_STACK and explain unsetting 2024-05-19 20:09:03 -07:00
rustdoc Be more accurate about calculating display_col from a BytePos 2024-07-18 20:08:38 +00:00
sanitizer Stabilize async closures 2024-12-13 00:04:56 +00:00
self Arbitrary self types v2: generics test. 2024-12-11 11:59:13 +00:00
sepcomp [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
shadowed Tweak wording of "implemented trait isn't imported" suggestion 2024-02-22 18:05:27 +00:00
shell-argfiles compiletest: add enable-by-default check-cfg 2024-05-04 11:30:38 +02:00
simd Rollup merge of #133395 - calebzulawski:simd_relaxed_fma, r=workingjubilee 2024-12-03 07:48:33 +01:00
single-use-lifetime Add test to check unused_lifetimes don't duplicate "parameter is never used" error 2024-03-09 18:24:45 +00:00
sized Update tests for new TRPL chapter order 2024-11-23 08:57:25 -07:00
span Arbitrary self types v2: use Receiver trait 2024-12-11 11:59:12 +00:00
specialization Tweak wording of non-const traits used as const bounds 2024-12-10 00:38:05 +00:00
stability-attribute don't require const stability for const impls 2024-11-20 17:04:05 +08:00
stable-mir-print [StableMIR] A few fixes to pretty printing 2024-11-07 16:16:38 -08:00
stack-protector [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
static tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
statics tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
stats Introduce default_field_values feature 2024-12-09 21:55:01 +00:00
std This test needs threads 2024-11-07 18:18:34 -08:00
stdlib-unit-tests Adjust atomic-from-mut-not-available.rs 2024-12-08 15:32:04 +08:00
str Trim output of E0277 in some cases 2024-11-02 03:08:04 +00:00
structs Further document default field test 2024-12-10 19:21:07 +00:00
structs-enums add tests for niches in pointers 2024-11-30 16:00:55 +01:00
suggestions Auto merge of #132706 - compiler-errors:async-closures, r=oli-obk 2024-12-13 00:37:51 +00:00
svh [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
symbol-mangling-version [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
symbol-names fixup some test directives 2024-11-17 22:15:54 +00:00
sync Remove detail from label/note that is already available in other note 2024-10-29 16:26:57 +00:00
target-feature Add v9 and leoncasa target feature to sparc 2024-11-09 03:17:24 +09:00
test-attrs Update name of Windows abort constant to match platform documentation 2024-07-15 22:21:41 +00:00
thir-print Introduce default_field_values feature 2024-12-09 21:55:01 +00:00
thread-local Auto merge of #124895 - obeis:static-mut-hidden-ref, r=compiler-errors 2024-09-20 17:25:34 +00:00
threads-sendsync tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
tool-attributes Fix diagnostic and add a test for it 2024-07-10 18:56:06 -04:00
track-diagnostics Always use a colon in //@ normalize-*: headers 2024-07-11 12:23:44 +10:00
trait-bounds Tweak wording 2024-12-07 22:18:51 +00:00
traits Auto merge of #132961 - adetaylor:arbitrary-self-types-the-big-bit, r=compiler-errors,wesleywiser 2024-12-12 21:40:39 +00:00
transmutability fix safe-transmute handling of enums 2024-12-01 18:28:04 +01:00
transmute Always use a colon in //@ normalize-*: headers 2024-07-11 12:23:44 +10:00
treat-err-as-bug Always use a colon in //@ normalize-*: headers 2024-07-11 12:23:44 +10:00
trivial-bounds Improve the impl and diag output of lint type_alias_bounds 2024-07-23 01:48:03 +02:00
try-block Add trait diff highlighting logic and use it in E0277 2024-11-02 03:08:04 +00:00
try-trait Trim output of E0277 in some cases 2024-11-02 03:08:04 +00:00
tuple Use trait name instead of full constraint in suggestion message 2024-12-07 21:29:58 +00:00
type Rollup merge of #134010 - RalfJung:promoted-type-error-ice, r=oli-obk 2024-12-10 08:55:59 +01:00
type-alias Do not talk about "trait <Foo = Bar>" 2024-12-07 21:37:15 +00:00
type-alias-enum-variants Suggest the struct variant pattern syntax on usage of unit variant pattern for a struct variant 2024-08-28 22:55:57 +09:00
type-alias-impl-trait Arbitrary self types v2: use Receiver trait 2024-12-11 11:59:12 +00:00
type-inference make invalid_type_param_default lint show up in cargo future-compat reports 2024-07-15 22:05:45 +02:00
typeck Use trait name instead of full constraint in suggestion message 2024-12-07 21:29:58 +00:00
typeof Account for let foo = expr; to suggest const foo: Ty = expr; 2024-07-11 20:39:24 +00:00
ufcs Arbitrary self types v2: use Receiver trait 2024-12-11 11:59:12 +00:00
unboxed-closures tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
underscore-imports Update tests to use new proc-macro header 2024-11-27 07:18:25 -08:00
underscore-lifetime make type_flags(ReError) & HAS_ERROR 2024-03-20 17:29:58 +00:00
uniform-paths [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
uninhabited Update tests for new TRPL chapter order 2024-11-23 08:57:25 -07:00
union Mention type parameter in more cases and don't suggest ~const bound already there 2024-12-07 21:37:13 +00:00
unknown-unstable-lints [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
unop Mention type parameter in more cases and don't suggest ~const bound already there 2024-12-07 21:37:13 +00:00
unpretty Stabilize async closures 2024-12-13 00:04:56 +00:00
unresolved Structured suggestion for extern crate foo when foo isn't resolved in import 2024-07-29 23:49:51 +00:00
unsafe tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
unsafe-fields Make Copy unsafe to implement for ADTs with unsafe fields 2024-12-07 20:50:00 +00:00
unsized Remove polymorphization 2024-12-06 16:42:09 -05:00
unsized-locals Remove detail from label/note that is already available in other note 2024-10-29 16:26:57 +00:00
unused-crate-deps Spruce up the diagnostics of some early lints 2024-06-03 07:25:32 +02:00
unwind-abis Remove c_unwind from tests and fix tests 2024-06-19 13:54:55 +01:00
use tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
variance Don't report bivariance error when nesting a struct with field errors into another struct 2024-10-15 14:58:54 -04:00
variants Accurate use rename suggestion span 2024-07-18 00:00:04 +00:00
version Fix test problems discovered by the revision check 2024-05-09 14:47:09 +10:00
warnings tests/ui: Add a directory for warnings, add a test 2024-03-22 11:27:34 -04:00
wasm Stabilize WebAssembly multivalue, reference-types, and tail-call target features 2024-11-10 07:45:14 -08:00
wf Use trait name instead of full constraint in suggestion message 2024-12-07 21:29:58 +00:00
where-clauses Use trait name instead of full constraint in suggestion message 2024-12-07 21:29:58 +00:00
while
windows-subsystem rewrite test-harness to rmake 2024-07-02 11:37:59 -04:00
zero-sized [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
.gitattributes
alias-uninit-value.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
allow-non-lint-warnings.rs Make run-make/allow-non-lint-warnings-cmdline into a ui test 2024-06-13 12:55:55 +02:00
anonymous-higher-ranked-lifetime.rs
anonymous-higher-ranked-lifetime.stderr Remove Partial/Ord from BoundRegion 2024-03-27 14:02:16 +00:00
artificial-block.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
as-precedence.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
associated-path-shl.rs
associated-path-shl.stderr
attempted-access-non-fatal.rs
attempted-access-non-fatal.stderr
attr-bad-crate-attr.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
attr-bad-crate-attr.stderr
attr-shebang.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
attr-start.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
attr-usage-inline.rs
attr-usage-inline.stderr
attrs-resolution-errors.rs
attrs-resolution-errors.stderr
attrs-resolution.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
augmented-assignments-feature-gate-cross.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
augmented-assignments-rpass.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
augmented-assignments.rs Peel off explicit (or implicit) deref before suggesting clone on move error in borrowck 2024-07-26 14:41:56 -04:00
augmented-assignments.stderr Peel off explicit (or implicit) deref before suggesting clone on move error in borrowck 2024-07-26 14:41:56 -04:00
auto-instantiate.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
auto-ref-slice-plus-ref.rs
auto-ref-slice-plus-ref.stderr Consider methods from traits when suggesting typos 2024-02-22 18:04:55 +00:00
autoderef-full-lval.rs
autoderef-full-lval.stderr Change E0369 diagnostic give note information for foreign items. 2024-06-25 10:00:30 +08:00
bare-fn-implements-fn-mut.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
bare-static-string.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
big-literals.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
bind-by-move.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
bitwise.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
bogus-tag.rs
bogus-tag.stderr
borrow-by-val-method-receiver.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
bounds-lifetime.rs
bounds-lifetime.stderr
break-diverging-value.rs
break-diverging-value.stderr
builtin-clone-unwind.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
can-copy-pod.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
cancel-clean-via-immediate-rvalue-ref.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
cannot-mutate-captured-non-mut-var.rs
cannot-mutate-captured-non-mut-var.stderr More accurate mutability suggestion 2024-07-04 05:36:34 +00:00
capture1.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
capture1.stderr
catch-unwind-bang.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
cenum_impl_drop_cast.rs
cenum_impl_drop_cast.stderr
cfguard-run.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
char.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
class-cast-to-trait.rs
class-cast-to-trait.stderr
class-method-missing.rs
class-method-missing.stderr
cleanup-rvalue-for-scope.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
cleanup-rvalue-scopes-cf.rs
cleanup-rvalue-scopes-cf.stderr
cleanup-rvalue-scopes.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
cleanup-rvalue-temp-during-incomplete-alloc.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
cleanup-shortcircuit.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
close-over-big-then-small-data.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
command-line-diagnostics.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
command-line-diagnostics.stderr Better span for "make binding mutable" suggestion 2024-07-04 02:02:21 +00:00
complex.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
conservative_impl_trait.rs
conservative_impl_trait.stderr
constructor-lifetime-args.rs
constructor-lifetime-args.stderr Revert suggestion verbosity change 2024-07-22 22:51:53 +00:00
copy-a-resource.rs
copy-a-resource.stderr
crate-leading-sep.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
crate-method-reexport-grrrrrrr.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
crate-name-attr-used.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
crate-name-mismatch.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
crate-name-mismatch.stderr
custom-attribute-multisegment.rs
custom-attribute-multisegment.stderr
custom-test-frameworks-simple.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
custom_attribute.rs
custom_attribute.stderr
deduplicate-diagnostics.deduplicate.stderr
deduplicate-diagnostics.duplicate.stderr
deduplicate-diagnostics.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
deep.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
default-method-parsing.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
default-method-simple.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
defaults-well-formedness.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
deprecation-in-force-unstable.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
deref-non-pointer.rs
deref-non-pointer.stderr
deref-rc.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
deref.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
derive-uninhabited-enum-38885.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
derive-uninhabited-enum-38885.stderr
destructure-trait-ref.rs
destructure-trait-ref.stderr
diverging-fallback-method-chain.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
diverging-fallback-option.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
diverging-fn-tail-35849.rs
diverging-fn-tail-35849.stderr
double-ref.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
double-type-import.rs
double-type-import.stderr
dupe-first-attr.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
duplicate-label-E0381-issue-129274.rs Deduplicate Spans in Uninitialized Check 2024-08-22 09:36:14 -07:00
duplicate-label-E0381-issue-129274.stderr Deduplicate Spans in Uninitialized Check 2024-08-22 09:36:14 -07:00
duplicate_entry_error.rs Always use a colon in //@ normalize-*: headers 2024-07-11 12:23:44 +10:00
duplicate_entry_error.stderr Rename std::panic::PanicInfo to PanicHookInfo. 2024-06-11 15:47:00 +02:00
early-ret-binop-add.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
elide-errors-on-mismatched-tuple.rs
elide-errors-on-mismatched-tuple.stderr
elided-test.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
elided-test.stderr
else-if.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
empty-allocation-non-null.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
empty-allocation-rvalue-non-null.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
empty-type-parameter-list.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
empty-type-parameter-list.stderr
error-festival.rs
error-festival.stderr Suggest fixing typos and let bindings at the same time 2024-11-02 14:40:37 -07:00
error-should-say-copy-not-pod.rs
error-should-say-copy-not-pod.stderr
exclusive-drop-and-copy.rs
exclusive-drop-and-copy.stderr
explain.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
explain.stdout
explicit-i-suffix.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
explore-issue-38412.rs stability: remove skip_stability_check_due_to_privacy 2024-11-18 08:07:46 +01:00
explore-issue-38412.stderr use backticks instead of single quotes when reporting "use of unstable library feature" 2024-11-03 13:55:52 -08:00
ext-expand-inner-exprs.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
ext-nonexistent.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
ext-nonexistent.stderr
fact.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
fail-simple.rs Tweak more warnings. 2024-10-28 14:20:28 +11:00
fail-simple.stderr Tweak more warnings. 2024-10-28 14:20:28 +11:00
filter-block-view-items.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
format-no-std.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
fun-indirect-call.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
future-incompatible-lint-group.rs Update ui tests 2024-02-29 14:43:43 +01:00
future-incompatible-lint-group.stderr Update ui tests 2024-02-29 14:43:43 +01:00
global-scope.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
hello.rs Update more 2024 tests to remove -Zunstable-options 2024-11-28 14:32:45 -08:00
illegal-ufcs-drop.fixed [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
illegal-ufcs-drop.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
illegal-ufcs-drop.stderr
impl-inherent-non-conflict.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
impl-not-adjacent-to-type.rs Allow unused fields in some tests 2024-03-12 10:59:41 +01:00
impl-privacy-xc-1.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
impl-unused-rps-in-assoc-type.rs
impl-unused-rps-in-assoc-type.stderr
impl-unused-tps-inherent.rs
impl-unused-tps-inherent.stderr
impl-unused-tps.rs stabilize -Znext-solver=coherence 2024-10-15 13:11:00 +02:00
impl-unused-tps.stderr stabilize -Znext-solver=coherence 2024-10-15 13:11:00 +02:00
implicit-method-bind.rs
implicit-method-bind.stderr
inline-disallow-on-variant.rs
inline-disallow-on-variant.stderr
inlined-main.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
inner-attrs-on-impl.rs Unify all the always-false cfgs under the FALSE cfg 2024-04-07 01:16:45 +02:00
inner-module.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
inner-static-type-parameter.rs
inner-static-type-parameter.stderr
inner-static.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
integral-indexing.rs
integral-indexing.stderr Trim output of E0277 in some cases 2024-11-02 03:08:04 +00:00
integral-variable-unification-error.rs
integral-variable-unification-error.stderr
invalid_crate_type_syntax.rs
invalid_crate_type_syntax.stderr
invalid_dispatch_from_dyn_impls.rs
invalid_dispatch_from_dyn_impls.stderr
issue-11881.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-13560.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-15924.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
issue-16822.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-18502.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-24106.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-76387-llvm-miscompile.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issues-71798.rs
issues-71798.stderr Use root obligation on E0277 for some cases 2024-03-03 18:53:35 +00:00
item-name-overload.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
kinds-in-metadata.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
kinds-of-primitive-impl.rs
kinds-of-primitive-impl.stderr
last-use-in-block.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
last-use-in-cap-clause.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
last-use-is-capture.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
lazy-and-or.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
lexical-scopes.rs
lexical-scopes.stderr
lexical-scoping.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
link-section.rs Update tests for hidden references to mutable static 2024-09-13 14:10:56 +03:00
list.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
log-err-phi.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
log-knows-the-names-of-variants.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
log-poly.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
logging-only-prints-once.rs compiletest: Add a //@ needs-threads directive 2024-03-06 12:35:07 -08:00
loud_ui.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
max-min-classes.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
maximal_mir_to_hir_coverage.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
maybe-bounds.rs
maybe-bounds.stderr Support ?Trait bounds in supertraits and dyn Trait under a feature gate 2024-07-25 20:53:33 +03:00
method-output-diff-issue-127263.rs show unit output when there is only output diff in diagnostics 2024-07-06 21:00:30 +08:00
method-output-diff-issue-127263.stderr show unit output when there is only output diff in diagnostics 2024-07-06 21:00:30 +08:00
minus-string.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
minus-string.stderr Change E0369 diagnostic give note information for foreign items. 2024-06-25 10:00:30 +08:00
missing_debug_impls.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
missing_debug_impls.stderr
mod-subitem-as-enum-variant.rs
mod-subitem-as-enum-variant.stderr
monomorphize-abi-alignment.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
msvc-data-only.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
msvc-opt-minsize.rs rewrite test-harness to rmake 2024-07-02 11:37:59 -04:00
multibyte.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
multiline-comment.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
mut-function-arguments.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
mutual-recursion-group.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
myriad-closures.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
nested-block-comment.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
nested-cfg-attrs.rs Unify all the always-false cfgs under the FALSE cfg 2024-04-07 01:16:45 +02:00
nested-cfg-attrs.stderr
nested-class.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
nested-ty-params.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
nested-ty-params.stderr
new-impl-syntax.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
new-import-syntax.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
new-style-constants.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
new-unicode-escapes.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
newlambdas.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
newtype-polymorphic.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
newtype.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
no-capture-arc.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
no-capture-arc.stderr
no-core-1.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
no-core-2.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
no-link-unknown-crate.rs
no-link-unknown-crate.stderr
no-reuse-move-arc.rs
no-reuse-move-arc.stderr
no-send-res-ports.rs
no-send-res-ports.stderr Remove detail from label/note that is already available in other note 2024-10-29 16:26:57 +00:00
no-warn-on-field-replace-issue-34101.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
no_crate_type.rs
no_crate_type.stderr
no_send-enum.rs
no_send-enum.stderr Remove detail from label/note that is already available in other note 2024-10-29 16:26:57 +00:00
no_send-rc.rs
no_send-rc.stderr
no_share-enum.rs
no_share-enum.stderr Remove detail from label/note that is already available in other note 2024-10-29 16:26:57 +00:00
no_share-struct.rs
no_share-struct.stderr
noexporttypeexe.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
noexporttypeexe.stderr
non-constant-expr-for-arr-len.rs
non-constant-expr-for-arr-len.stderr
non-copyable-void.rs Use the rustc_private libc less in tests 2024-04-15 08:54:11 -04:00
non-copyable-void.stderr Use the rustc_private libc less in tests 2024-04-15 08:54:11 -04:00
non-fmt-panic.fixed [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
non-fmt-panic.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
non-fmt-panic.stderr
noncopyable-class.rs
noncopyable-class.stderr
nonscalar-cast.fixed [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
nonscalar-cast.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
nonscalar-cast.stderr
not-clone-closure.rs Add --diagnostic-width to some tests failing after 1a0c502183 2024-11-06 20:02:42 +01:00
not-clone-closure.stderr Add --diagnostic-width to some tests failing after 1a0c502183 2024-11-06 20:02:42 +01:00
not-copy-closure.rs
not-copy-closure.stderr Suggest borrowing arguments in generic positions when trait bounds are satisfied 2024-11-13 20:29:40 -08:00
not-enough-arguments.rs
not-enough-arguments.stderr Use ordinal number in argument error 2024-07-14 13:50:09 +09:00
nul-characters.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
nullable-pointer-iotareduction.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
nullable-pointer-size.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
object-pointer-types.rs
object-pointer-types.stderr Deduplicate some logic and reword output 2024-02-22 18:05:28 +00:00
objects-coerce-freeze-borrored.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
occurs-check-2.rs change error messages to be incorrect, but more helpful 2024-02-22 18:18:33 +01:00
occurs-check-2.stderr change error messages to be incorrect, but more helpful 2024-02-22 18:18:33 +01:00
occurs-check-3.rs change error messages to be incorrect, but more helpful 2024-02-22 18:18:33 +01:00
occurs-check-3.stderr change error messages to be incorrect, but more helpful 2024-02-22 18:18:33 +01:00
occurs-check.rs change error messages to be incorrect, but more helpful 2024-02-22 18:18:33 +01:00
occurs-check.stderr change error messages to be incorrect, but more helpful 2024-02-22 18:18:33 +01:00
once-cant-call-twice-on-heap.rs
once-cant-call-twice-on-heap.stderr Better account for FnOnce in move errors 2024-04-11 16:41:42 +00:00
oom_unwind.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
op-assign-builtins-by-ref.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
opeq.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
opt-in-copy.rs
opt-in-copy.stderr
optimization-remark.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
out-pointer-aliasing.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
output-slot-variants.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
over-constrained-vregs.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
panic-while-printing.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
panic_implementation-closures.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
paren-span.rs
paren-span.stderr
partialeq_help.rs
partialeq_help.stderr
path-lookahead.fixed [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
path-lookahead.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
path-lookahead.stderr
path.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
paths-containing-nul.rs Update test directives for wasm32-wasip1 2024-03-11 09:36:35 -07:00
phantom-auto-trait.rs
phantom-auto-trait.stderr Use trait name instead of full constraint in suggestion message 2024-12-07 21:29:58 +00:00
point-to-type-err-cause-on-impl-trait-return-2.rs
point-to-type-err-cause-on-impl-trait-return-2.stderr
pptypedef.rs
pptypedef.stderr
primitive-binop-lhs-mut.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
print-calling-conventions.rs Migrate run-make/print-calling-conventions to ui-test 2024-08-03 20:09:42 -04:00
print-calling-conventions.stdout add C-cmse-nonsecure-entry ABI 2024-09-21 13:04:14 +02:00
print-stdout-eprint-stderr.rs Update test directives for wasm32-wasip1 2024-03-11 09:36:35 -07:00
project-cache-issue-31849.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
ptr-coercion-rpass.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
ptr-coercion.rs
ptr-coercion.stderr
query-visibility.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
raw-str.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
README.md Fix typos on tests/ui/README.md 2024-12-02 03:43:50 -07:00
realloc-16687.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
reassign-ref-mut.rs
reassign-ref-mut.stderr
reexport-test-harness-main.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
removing-extern-crate.fixed [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
removing-extern-crate.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
removing-extern-crate.stderr
resource-assign-is-not-copy.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
resource-destruct.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
rustc-error.rs
rustc-error.stderr
seq-args.rs
seq-args.stderr Revert suggestion verbosity change 2024-07-22 22:51:53 +00:00
shadow-bool.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
shadowed-use-visibility.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
short-error-format.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
short-error-format.stderr On short error format, append primary span label to message 2024-08-06 04:08:10 +00:00
simd-abi-checks-empty-list.rs ABI checks: add support for tier2 arches 2024-11-12 22:34:31 +01:00
simd-abi-checks-empty-list.stderr show abi_unsupported_vector_types lint in future breakage reports 2024-11-23 09:15:25 +01:00
simd-abi-checks-s390x.rs Support s390x z13 vector ABI 2024-11-14 22:14:11 +09:00
simd-abi-checks-s390x.z10.stderr show abi_unsupported_vector_types lint in future breakage reports 2024-11-23 09:15:25 +01:00
simd-abi-checks-s390x.z13_no_vector.stderr show abi_unsupported_vector_types lint in future breakage reports 2024-11-23 09:15:25 +01:00
simd-abi-checks-s390x.z13_soft_float.stderr show abi_unsupported_vector_types lint in future breakage reports 2024-11-23 09:15:25 +01:00
simd-abi-checks.rs add vector ABI check test for calling extern fn 2024-11-24 09:54:04 +01:00
simd-abi-checks.stderr add vector ABI check test for calling extern fn 2024-11-24 09:54:04 +01:00
sized-borrowed-pointer.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
sized-cycle-note.rs
sized-cycle-note.stderr
sized-owned-pointer.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
sse-abi-checks.rs ABI checks: add support for tier2 arches 2024-11-12 22:34:31 +01:00
sse-abi-checks.stderr show abi_unsupported_vector_types lint in future breakage reports 2024-11-23 09:15:25 +01:00
sse2.rs sudo CI=green && Review changes <3 2024-06-25 18:06:22 +02:00
stable-addr-of.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
std-uncopyable-atomics.rs
std-uncopyable-atomics.stderr
stdio-is-blocking.rs Update test directives for wasm32-wasip1 2024-03-11 09:36:35 -07:00
string-box-error.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
struct-ctor-mangling.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
super-at-top-level.rs
super-at-top-level.stderr
super.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
svh-add-nothing.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
swap-1.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
swap-overlapping.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
switched-expectations.rs
switched-expectations.stderr
syntax-extension-minor.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
tag-type-args.rs
tag-type-args.stderr Merge collect_mod_item_types query into check_well_formed 2024-03-07 14:26:31 +00:00
tag-variant-cast-non-nullary.fixed [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
tag-variant-cast-non-nullary.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
tag-variant-cast-non-nullary.stderr
tail-call-arg-leak.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
tail-cps.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
tail-typeck.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
tail-typeck.stderr
trailing-comma.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
trait-method-number-parameters.rs
trait-method-number-parameters.stderr
transmute-equal-assoc-types.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
transmute-non-immediate-to-immediate.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
trivial_casts-rpass.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
trivial_casts-rpass.stderr
try-from-int-error-partial-eq.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
try-operator-hygiene.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
try-operator.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
tydesc-name.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
type-id-higher-rank-2.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
type-namespace.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
type-param-constraints.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
type-param.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
type-ptr.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
type-use-i1-versus-i8.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
type_length_limit.polonius.stderr
type_length_limit.rs Gate the type length limit check behind a nightly flag 2024-07-12 21:16:09 -04:00
type_length_limit.stderr Re-implement a type-size based limit 2024-07-02 15:48:48 -04:00
typeid-intrinsic.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
typestate-multi-decl.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
unconstrained-none.rs
unconstrained-none.stderr
unconstrained-ref.rs
unconstrained-ref.stderr
underscore-ident-matcher.rs Tweak more warnings. 2024-10-28 14:20:28 +11:00
underscore-ident-matcher.stderr Tweak more warnings. 2024-10-28 14:20:28 +11:00
underscore-lifetimes.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
underscore-method-after-integer.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
unevaluated_fixed_size_array_len.rs
unevaluated_fixed_size_array_len.stderr
uninit-empty-types.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
unit.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
unknown-language-item.rs consistency rename: language item -> lang item 2024-04-17 13:00:43 +02:00
unknown-language-item.stderr consistency rename: language item -> lang item 2024-04-17 13:00:43 +02:00
unknown-llvm-arg.rs Always use a colon in //@ normalize-*: headers 2024-07-11 12:23:44 +10:00
unknown-llvm-arg.stderr
unnamed_argument_mode.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
unreachable-code-1.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
unreachable-code.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
unsigned-literal-negation.rs
unsigned-literal-negation.stderr Tweak -1 as usize suggestion 2024-07-05 00:52:01 +00:00
unused-move-capture.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
unused-move.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
unwind-no-uwtable.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
use-import-export.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
use-keyword-2.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
use-module-level-int-consts.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
use-nested-groups.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
used.rs
used.stderr Show used attribute's kind for user when find it isn't applied to a static variable. 2024-06-29 19:39:09 +08:00
usize-generic-argument-parent.rs
usize-generic-argument-parent.stderr
utf8-bom.rs Annotate input reference tests 2024-10-30 16:47:47 -07:00
utf8_idents.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
wait-forked-but-failed-child.rs Handle a few more simple tests 2024-05-20 11:13:10 -04:00
walk-struct-literal-with.rs
walk-struct-literal-with.stderr
weak-new-uninhabited-issue-48493.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
weird-exit-code.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
weird-exprs.rs Error on using yield without also using #[coroutine] on the closure 2024-04-24 08:05:29 +00:00
write-fmt-errors.rs io::Write::write_fmt: panic if the formatter fails when the stream does not fail 2024-05-11 15:13:18 +02:00
writing-to-immutable-vec.rs
writing-to-immutable-vec.stderr
wrong-hashset-issue-42918.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00

UI Tests

This folder contains rustc's UI tests.

Test Directives (Headers)

Typically, a UI test will have some test directives / headers which are special comments that tell compiletest how to build and interpret a test.

As part of an ongoing effort to rewrite compiletest (see https://github.com/rust-lang/compiler-team/issues/536), a major change proposal to change legacy compiletest-style headers // <directive> to ui_test-style headers //@ <directive> was accepted (see https://github.com/rust-lang/compiler-team/issues/512.

An example directive is ignore-test. In legacy compiletest style, the header would be written as

// ignore-test

but in ui_test style, the header would be written as

//@ ignore-test

compiletest is changed to accept only //@ directives for UI tests (currently), and will reject and report an error if it encounters any comments // <content> that may be parsed as a legacy compiletest-style test header. To fix this, you should migrate to the ui_test-style header //@ <content>.