os-rust/tests/ui/const-generics
bors a971212545 Auto merge of #127672 - compiler-errors:precise-capturing, r=spastorino
Stabilize opaque type precise capturing (RFC 3617)

This PR partially stabilizes opaque type *precise capturing*, which was specified in [RFC 3617](https://github.com/rust-lang/rfcs/pull/3617), and whose syntax was amended by FCP in [#125836](https://github.com/rust-lang/rust/issues/125836).

This feature, as stabilized here, gives us a way to explicitly specify the generic lifetime parameters that an RPIT-like opaque type captures.  This solves the problem of overcapturing, for lifetime parameters in these opaque types, and will allow the Lifetime Capture Rules 2024 ([RFC 3498](https://github.com/rust-lang/rfcs/pull/3498)) to be fully stabilized for RPIT in Rust 2024.

### What are we stabilizing?

This PR stabilizes the use of a `use<'a, T>` bound in return-position impl Trait opaque types.  Such a bound fully specifies the set of generic parameters captured by the RPIT opaque type, entirely overriding the implicit default behavior.  E.g.:

```rust
fn does_not_capture<'a, 'b>() -> impl Sized + use<'a> {}
//                               ~~~~~~~~~~~~~~~~~~~~
//                This RPIT opaque type does not capture `'b`.
```

The way we would suggest thinking of `impl Trait` types *without* an explicit `use<..>` bound is that the `use<..>` bound has been *elided*, and that the bound is filled in automatically by the compiler according to the edition-specific capture rules.

All non-`'static` lifetime parameters, named (i.e. non-APIT) type parameters, and const parameters in scope are valid to name, including an elided lifetime if such a lifetime would also be valid in an outlives bound, e.g.:

```rust
fn elided(x: &u8) -> impl Sized + use<'_> { x }
```

Lifetimes must be listed before type and const parameters, but otherwise the ordering is not relevant to the `use<..>` bound.  Captured parameters may not be duplicated.  For now, only one `use<..>` bound may appear in a bounds list.  It may appear anywhere within the bounds list.

### How does this differ from the RFC?

This stabilization differs from the RFC in one respect: the RFC originally specified `use<'a, T>` as syntactically part of the RPIT type itself, e.g.:

```rust
fn capture<'a>() -> impl use<'a> Sized {}
```

However, settling on the final syntax was left as an open question.  T-lang later decided via FCP in [#125836](https://github.com/rust-lang/rust/issues/125836) to treat `use<..>` as a syntactic bound instead, e.g.:

```rust
fn capture<'a>() -> impl Sized + use<'a> {}
```

### What aren't we stabilizing?

The key goal of this PR is to stabilize the parts of *precise capturing* that are needed to enable the migration to Rust 2024.

There are some capabilities of *precise capturing* that the RFC specifies but that we're not stabilizing here, as these require further work on the type system.  We hope to lift these limitations later.

The limitations that are part of this PR were specified in the [RFC's stabilization strategy](https://rust-lang.github.io/rfcs/3617-precise-capturing.html#stabilization-strategy).

#### Not capturing type or const parameters

The RFC addresses the overcapturing of type and const parameters; that is, it allows for them to not be captured in opaque types.  We're not stabilizing that in this PR.  Since all in scope generic type and const parameters are implicitly captured in all editions, this is not needed for the migration to Rust 2024.

For now, when using `use<..>`, all in scope type and const parameters must be nameable (i.e., APIT cannot be used) and included as arguments.  For example, this is an error because `T` is in scope and not included as an argument:

```rust
fn test<T>() -> impl Sized + use<> {}
//~^ ERROR `impl Trait` must mention all type parameters in scope in `use<...>`
```

This is due to certain current limitations in the type system related to how generic parameters are represented as captured (i.e. bivariance) and how inference operates.

We hope to relax this in the future, and this stabilization is forward compatible with doing so.

#### Precise capturing for return-position impl Trait **in trait** (RPITIT)

The RFC specifies precise capturing for RPITIT.  We're not stabilizing that in this PR.  Since RPITIT already adheres to the Lifetime Capture Rules 2024, this isn't needed for the migration to Rust 2024.

The effect of this is that the anonymous associated types created by RPITITs must continue to capture all of the lifetime parameters in scope, e.g.:

```rust
trait Foo<'a> {
    fn test() -> impl Sized + use<Self>;
    //~^ ERROR `use<...>` precise capturing syntax is currently not allowed in return-position `impl Trait` in traits
}
```

To allow this involves a meaningful amount of type system work related to adding variance to GATs or reworking how generics are represented in RPITITs.  We plan to do this work separately from the stabilization.  See:

- https://github.com/rust-lang/rust/pull/124029

Supporting precise capturing for RPITIT will also require us to implement a new algorithm for detecting refining capture behavior.  This may involve looking through type parameters to detect cases where the impl Trait type in an implementation captures fewer lifetimes than the corresponding RPITIT in the trait definition, e.g.:

```rust
trait Foo {
    fn rpit() -> impl Sized + use<Self>;
}

impl<'a> Foo for &'a () {
    // This is "refining" due to not capturing `'a` which
    // is implied by the trait's `use<Self>`.
    fn rpit() -> impl Sized + use<>;

    // This is not "refining".
    fn rpit() -> impl Sized + use<'a>;
}
```

This stabilization is forward compatible with adding support for this later.

### The technical details

This bound is purely syntactical and does not lower to a [`Clause`](https://doc.rust-lang.org/1.79.0/nightly-rustc/rustc_middle/ty/type.ClauseKind.html) in the type system.  For the purposes of the type system (and for the types team's curiosity regarding this stabilization), we have no current need to represent this as a `ClauseKind`.

Since opaques already capture a variable set of lifetimes depending on edition and their syntactical position (e.g. RPIT vs RPITIT), a `use<..>` bound is just a way to explicitly rather than implicitly specify that set of lifetimes, and this only affects opaque type lowering from AST to HIR.

### FCP plan

While there's much discussion of the type system here, the feature in this PR is implemented internally as a transformation that happens before lowering to the type system layer.  We already support impl Trait types partially capturing the in scope lifetimes; we just currently only expose that implicitly.

So, in my (errs's) view as a types team member, there's nothing for types to weigh in on here with respect to the implementation being stabilized, and I'd suggest a lang-only proposed FCP (though we'll of course CC the team below).

### Authorship and acknowledgments

This stabilization report was coauthored by compiler-errors and TC.

TC would like to acknowledge the outstanding and speedy work that compiler-errors has done to make this feature happen.

compiler-errors thanks TC for authoring the RFC, for all of his involvement in this feature's development, and pushing the Rust 2024 edition forward.

### Open items

We're doing some things in parallel here.  In signaling the intention to stabilize, we want to uncover any latent issues so we can be sure they get addressed.  We want to give the maximum time for discussion here to happen by starting it while other remaining miscellaneous work proceeds.  That work includes:

- [x] Look into `syn` support.
  - https://github.com/dtolnay/syn/issues/1677
  - https://github.com/dtolnay/syn/pull/1707
- [x] Look into `rustfmt` support.
  - https://github.com/rust-lang/rust/pull/126754
- [x] Look into `rust-analyzer` support.
  - https://github.com/rust-lang/rust-analyzer/issues/17598
  - https://github.com/rust-lang/rust-analyzer/pull/17676
- [x] Look into `rustdoc` support.
  - https://github.com/rust-lang/rust/issues/127228
  - https://github.com/rust-lang/rust/pull/127632
  - https://github.com/rust-lang/rust/pull/127658
- [x] Suggest this feature to RfL (a known nightly user).
- [x] Add a chapter to the edition guide.
  - https://github.com/rust-lang/edition-guide/pull/316
- [x] Update the Reference.
  - https://github.com/rust-lang/reference/pull/1577

### (Selected) implementation history

* https://github.com/rust-lang/rfcs/pull/3498
* https://github.com/rust-lang/rfcs/pull/3617
* https://github.com/rust-lang/rust/pull/123468
* https://github.com/rust-lang/rust/issues/125836
* https://github.com/rust-lang/rust/pull/126049
* https://github.com/rust-lang/rust/pull/126753

Closes #123432.

cc `@rust-lang/lang` `@rust-lang/types`

`@rustbot` labels +T-lang +I-lang-nominated +A-impl-trait +F-precise_capturing

Tracking:

- https://github.com/rust-lang/rust/issues/123432

----

For the compiler reviewer, I'll leave some inline comments about diagnostics fallout :^)

r? compiler
2024-08-20 10:42:55 +00:00
..
adt_const_params Special-case alias ty in try_from_lit 2024-08-16 08:37:19 +08:00
array-impls [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
auxiliary Remove some unnecessary allow(incomplete_features) 2024-03-11 19:42:04 +00:00
backcompat [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
defaults Differentiate between methods and associated functions 2024-08-10 00:54:16 +00:00
early [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
generic_arg_infer Revert suggestion verbosity change 2024-07-22 22:51:53 +00:00
generic_const_exprs Bless test fallout 2024-08-17 12:43:25 -04:00
infer Const generic parameters aren't bounds, even if we end up erroring because of the bound that binds the parameter's type 2024-06-19 14:58:29 +00:00
issues Revert "Rollup merge of #127107 - mu001999-contrib:dead/enhance-2, r=pnkfelix" 2024-08-03 07:57:31 -04:00
late-bound-vars make type_flags(ReError) & HAS_ERROR 2024-03-20 17:29:58 +00:00
min_const_generics Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
occurs-check add test for #97725 2024-03-22 17:12:43 +01:00
parser-error-recovery Update Tests 2024-06-05 20:08:00 -04:00
std Provide structured suggestion for #![feature(foo)] 2024-03-18 16:08:58 +00:00
type-dependent Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
apit-with-const-param.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
arg-in-pat-1.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
arg-in-pat-2.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
arg-in-pat-3.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
argument_order.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
argument_order.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
array-wrapper-struct-ctor.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
assoc_const_as_type_argument.rs Automatically taint when reporting errors from ItemCtxt 2024-07-09 07:44:17 +00:00
assoc_const_as_type_argument.stderr Automatically taint when reporting errors from ItemCtxt 2024-07-09 07:44:17 +00:00
assoc_const_eq_diagnostic.rs Avoid silencing relevant follow-up errors 2024-01-09 21:08:16 +00:00
assoc_const_eq_diagnostic.stderr Avoid silencing relevant follow-up errors 2024-01-09 21:08:16 +00:00
associated-type-bound-fail.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
associated-type-bound-fail.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
associated-type-bound.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
bad-const-generic-exprs.rs recover more unbraced const args 2023-01-27 19:26:04 +01:00
bad-const-generic-exprs.stderr Detect more cases of = to : typo 2024-03-01 02:03:00 +00:00
bad-generic-in-copy-impl.rs Remove track_errors entirely 2024-01-23 15:23:22 +00:00
bad-generic-in-copy-impl.stderr Remove track_errors entirely 2024-01-23 15:23:22 +00:00
bad-subst-const-kind.rs Add ConstArgKind::Path and make ConstArg its own HIR node 2024-07-16 19:27:28 -07:00
bad-subst-const-kind.stderr Add ConstArgKind::Path and make ConstArg its own HIR node 2024-07-16 19:27:28 -07:00
broken-mir-1.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
broken-mir-2.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
cannot-infer-type-for-const-param.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
coerce_unsized_array.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
concrete-const-as-fn-arg.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
concrete-const-impl-method.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
condition-in-trait-const-arg.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
const-arg-in-const-arg.min.stderr Automatically taint when reporting errors from ItemCtxt 2024-07-09 07:44:17 +00:00
const-arg-in-const-arg.rs Automatically taint when reporting errors from ItemCtxt 2024-07-09 07:44:17 +00:00
const-arg-in-fn.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
const-arg-type-arg-misordered.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
const-arg-type-arg-misordered.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
const-argument-cross-crate-mismatch.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
const-argument-cross-crate-mismatch.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
const-argument-cross-crate.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
const-argument-if-length.full.stderr Provide structured suggestion for unconstrained generic constant 2024-03-21 00:03:59 +00:00
const-argument-if-length.min.stderr Continue compilation after check_mod_type_wf errors 2024-02-14 11:00:30 +00:00
const-argument-if-length.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
const-argument-non-static-lifetime.min.stderr generic_const_exprs: suggest to add the feature, not use it 2023-11-30 20:59:51 +01:00
const-argument-non-static-lifetime.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
const-fn-with-const-param.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
const-generic-default-wont-borrowck.fixed Handle more cases of value suggestions 2024-04-10 20:36:14 +00:00
const-generic-default-wont-borrowck.rs Handle more cases of value suggestions 2024-04-10 20:36:14 +00:00
const-generic-default-wont-borrowck.stderr Handle more cases of value suggestions 2024-04-10 20:36:14 +00:00
const-generic-function.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
const-generic-function.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
const-generic-type_name.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
const-param-after-const-literal-arg.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
const-param-before-other-params.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
const-param-before-other-params.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
const-param-elided-lifetime.full.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
const-param-elided-lifetime.min.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
const-param-elided-lifetime.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
const-param-in-async.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
const-param-type-depends-on-const-param.full.stderr improve diagnostics and bless tests 2023-05-05 21:42:54 +01:00
const-param-type-depends-on-const-param.min.stderr Provide structured suggestion for #![feature(foo)] 2024-03-18 16:08:58 +00:00
const-param-type-depends-on-const-param.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
const-param-type-depends-on-type-param-ungated.rs Remove save-analysis. 2023-02-16 15:14:45 +11:00
const-param-type-depends-on-type-param-ungated.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
const-param-type-depends-on-type-param.full.stderr Bless tests and handle tests/crashes 2024-06-05 22:25:42 +01:00
const-param-type-depends-on-type-param.min.stderr Bless tests and handle tests/crashes 2024-06-05 22:25:42 +01:00
const-param-type-depends-on-type-param.rs Bless tests and handle tests/crashes 2024-06-05 22:25:42 +01:00
const-param-with-additional-obligations.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
const-param-with-additional-obligations.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
const-parameter-uppercase-lint.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
const-parameter-uppercase-lint.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
const-ty-is-normalized.rs Fix order of normalization and recursion in const folding. 2024-08-18 00:07:41 +02:00
const_trait_fn-issue-88433.rs bless tests part 1 2024-06-28 10:57:35 +00:00
core-types.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
cross_crate_complex.rs Revert "Rollup merge of #126618 - mu001999-contrib:dead/enhance, r=pnkfelix" 2024-08-03 07:57:31 -04:00
default-ty-closure.rs add test for #116796 2023-12-24 01:58:13 +08:00
default-ty-closure.stderr add test for #116796 2023-12-24 01:58:13 +08:00
deref-into-array-generic.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
different_generic_args.full.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
different_generic_args.min.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
different_generic_args.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
different_generic_args_array.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
different_generic_args_array.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
dont-evaluate-array-len-on-err-1.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
dont-evaluate-array-len-on-err-1.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
dyn-supertraits.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
dyn-supertraits.stderr Update tests 2024-02-07 10:42:01 +08:00
ensure_is_evaluatable.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
ensure_is_evaluatable.stderr Provide structured suggestion for unconstrained generic constant 2024-03-21 00:03:59 +00:00
enum-variants.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
exhaustive-value.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
exhaustive-value.stderr Spell out other trait diagnostic 2024-06-12 12:34:47 +00:00
expose-default-substs-param-env.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
float-generic.adt_const_params.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
float-generic.full.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
float-generic.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
float-generic.simple.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
fn-const-param-call.adt_const_params.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
fn-const-param-call.full.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
fn-const-param-call.min.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
fn-const-param-call.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
fn-const-param-infer.adt_const_params.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
fn-const-param-infer.full.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
fn-const-param-infer.min.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
fn-const-param-infer.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
fn_with_two_const_inputs.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
fn_with_two_const_inputs.stderr Provide structured suggestion for unconstrained generic constant 2024-03-21 00:03:59 +00:00
fn_with_two_same_const_inputs.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
forbid-non-structural_match-types.rs Implement custom diagnostic for ConstParamTy 2023-06-01 18:21:42 +00:00
forbid-non-structural_match-types.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
foreign-item-const-parameter.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
foreign-item-const-parameter.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
generic-param-mismatch.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
generic-param-mismatch.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
ice-68875.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
ice-68875.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
ice-118285-fn-ptr-value.rs fix an ICE when a valtree failed to evaluate 2023-12-02 10:38:42 +01:00
ice-118285-fn-ptr-value.stderr fix an ICE when a valtree failed to evaluate 2023-12-02 10:38:42 +01:00
ice-const-generic-function-return-ty.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
ice-const-generic-function-return-ty.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
ice-unexpected-inference-var-122549.rs add test for #122549 2024-03-21 20:36:13 +01:00
ice-unexpected-inference-var-122549.stderr add test for #122549 2024-03-21 20:36:13 +01:00
impl-const-generic-struct.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
incorrect-number-of-const-args.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
incorrect-number-of-const-args.stderr Revert suggestion verbosity change 2024-07-22 22:51:53 +00:00
infer_arg_from_pat.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
infer_arr_len_from_pat.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
inhabited-assoc-ty-ice-1.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
inhabited-assoc-ty-ice-2.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
integer-literal-generic-arg-in-where-clause.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
intrinsics-type_name-as-const-argument.min.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
intrinsics-type_name-as-const-argument.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
invalid-const-arg-for-type-param.rs diagnostics: remove inconsistent English article "this" from E0107 2023-02-23 10:27:06 -07:00
invalid-const-arg-for-type-param.stderr Revert suggestion verbosity change 2024-07-22 22:51:53 +00:00
invalid-constant-in-args.rs diagnostics: remove inconsistent English article "this" from E0107 2023-02-23 10:27:06 -07:00
invalid-constant-in-args.stderr Revert suggestion verbosity change 2024-07-22 22:51:53 +00:00
invalid-enum.rs Implement custom diagnostic for ConstParamTy 2023-06-01 18:21:42 +00:00
invalid-enum.stderr Implement custom diagnostic for ConstParamTy 2023-06-01 18:21:42 +00:00
invariant.rs Change leak check lint message to behavior is likely to change in the future 2024-02-18 19:16:17 -03:00
invariant.stderr Change leak check lint message to behavior is likely to change in the future 2024-02-18 19:16:17 -03:00
issue-46511.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-46511.stderr Improve the diagnostics for unused generic parameters 2024-02-01 16:18:03 +01:00
issue-66451.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
issue-66451.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
issue-70408.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
issue-80471.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
issue-80471.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
issue-93647.rs update tests, adding known-bug 2023-07-27 15:51:02 +00:00
issue-93647.stderr Provide structured suggestion for #![feature(foo)] 2024-03-18 16:08:58 +00:00
issue-97007.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-102124.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-105689.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-106419-struct-with-multiple-const-params.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-112505-overflow.rs Fix the overflow issue for transmute_generic_consts 2023-06-11 16:12:59 +08:00
issue-112505-overflow.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
kind_mismatch.rs Don't ICE for kind mismatches during error rendering 2024-04-16 11:52:12 +00:00
kind_mismatch.stderr Don't ICE for kind mismatches during error rendering 2024-04-16 11:52:12 +00:00
legacy-const-generics-bad.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
legacy-const-generics-bad.stderr Account for let foo = expr; to suggest const foo: Ty = expr; 2024-07-11 20:39:24 +00:00
legacy-const-generics.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
lifetime-in-const-param.rs fix: not insert missing lifetime for ConstParamTy 2023-08-08 14:48:17 +08:00
lifetime-in-const-param.stderr Provide structured suggestion for #![feature(foo)] 2024-03-18 16:08:58 +00:00
lookup-method.rs only find segs chain for missing methods when no available candidates 2024-05-14 20:28:55 +08:00
lookup-method.stderr only find segs chain for missing methods when no available candidates 2024-05-14 20:28:55 +08:00
mistyped_const_in_pat.rs Taint infcx when reporting errors 2024-06-19 04:41:56 +00:00
mistyped_const_in_pat.stderr Taint infcx when reporting errors 2024-06-19 04:41:56 +00:00
nested-type.full.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
nested-type.min.stderr Provide structured suggestion for #![feature(foo)] 2024-03-18 16:08:58 +00:00
nested-type.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
not_wf_param_in_rpitit.rs Bless tests and handle tests/crashes 2024-06-05 22:25:42 +01:00
not_wf_param_in_rpitit.stderr Bless tests and handle tests/crashes 2024-06-05 22:25:42 +01:00
opaque_types.rs Require any function with a tait in its signature to actually constrain a hidden type 2024-06-12 08:53:59 +00:00
opaque_types.stderr Do not try to reveal hidden types when trying to prove Freeze in the defining scope 2024-07-24 16:00:48 +00:00
opaque_types2.rs Add some regression tests for opaque types and const generics 2024-04-04 15:02:27 +00:00
opaque_types2.stderr Add some regression tests for opaque types and const generics 2024-04-04 15:02:27 +00:00
outer-lifetime-in-const-generic-default.rs improve diagnostics and bless tests 2023-05-05 21:42:54 +01:00
outer-lifetime-in-const-generic-default.stderr generic_const_exprs: suggest to add the feature, not use it 2023-11-30 20:59:51 +01:00
overlapping_impls.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
params-in-ct-in-ty-param-lazy-norm.full.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
params-in-ct-in-ty-param-lazy-norm.min.stderr generic_const_exprs: suggest to add the feature, not use it 2023-11-30 20:59:51 +01:00
params-in-ct-in-ty-param-lazy-norm.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
parent_generics_of_encoding.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
parent_generics_of_encoding_impl_trait.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
parent_generics_of_encoding_impl_trait.stderr Const generic parameters aren't bounds, even if we end up erroring because of the bound that binds the parameter's type 2024-06-19 14:58:29 +00:00
polymorphic-drop-shim.rs Don't inline drop shims with unsubstituted generic consts in MIR inliner 2024-06-28 10:18:20 -04:00
projection-as-arg-const.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
projection-as-arg-const.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
promotion.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
raw-ptr-const-param-deref.adt_const_params.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
raw-ptr-const-param-deref.full.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
raw-ptr-const-param-deref.min.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
raw-ptr-const-param-deref.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
raw-ptr-const-param.adt_const_params.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
raw-ptr-const-param.full.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
raw-ptr-const-param.min.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
raw-ptr-const-param.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
repeat_expr_hack_gives_right_generics.rs Add ConstArgKind::Path and make ConstArg its own HIR node 2024-07-16 19:27:28 -07:00
repeat_expr_hack_gives_right_generics.stderr Add ConstArgKind::Path and make ConstArg its own HIR node 2024-07-16 19:27:28 -07:00
slice-const-param-mismatch.adt_const_params.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
slice-const-param-mismatch.full.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
slice-const-param-mismatch.min.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
slice-const-param-mismatch.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
slice-const-param.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
sneaky-array-repeat-expr.rs check array type of repeat exprs is wf 2023-05-04 11:22:40 +01:00
sneaky-array-repeat-expr.stderr check array type of repeat exprs is wf 2023-05-04 11:22:40 +01:00
struct-with-invalid-const-param.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
struct-with-invalid-const-param.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
suggest_const_for_array.rs Automatically taint when reporting errors from ItemCtxt 2024-07-09 07:44:17 +00:00
suggest_const_for_array.stderr Automatically taint when reporting errors from ItemCtxt 2024-07-09 07:44:17 +00:00
trait-const-args.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
transmute-const-param-static-reference.adt_const_params.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
transmute-const-param-static-reference.min.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
transmute-const-param-static-reference.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
transmute-fail.rs Add ConstArgKind::Path and make ConstArg its own HIR node 2024-07-16 19:27:28 -07:00
transmute-fail.stderr Add ConstArgKind::Path and make ConstArg its own HIR node 2024-07-16 19:27:28 -07:00
transmute.rs Sorting arbitrary constants should not be done, as it relies on DefId ordering, which breaks incremental compilation. 2024-03-21 10:45:30 +00:00
transmute_no_gate.rs Add feature gate 2023-04-07 11:18:07 -07:00
transmute_no_gate.stderr Add feature gate 2023-04-07 11:18:07 -07:00
transparent-maybeunit-array-wrapper.rs Revert "Rollup merge of #125572 - mu001999-contrib:dead/enhance, r=pnkfelix" 2024-08-03 07:57:31 -04:00
try_unify_ignore_lifetimes.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
two_matching_preds.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
type-after-const-ok.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
type_mismatch.rs Add ConstArgKind::Path and make ConstArg its own HIR node 2024-07-16 19:27:28 -07:00
type_mismatch.stderr Add ConstArgKind::Path and make ConstArg its own HIR node 2024-07-16 19:27:28 -07:00
type_not_in_scope.rs Bless tests and handle tests/crashes 2024-06-05 22:25:42 +01:00
type_not_in_scope.stderr Bless tests and handle tests/crashes 2024-06-05 22:25:42 +01:00
type_of_anon_const.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
types-mismatch-const-args.full.stderr Modify primary span label for E0308 2023-01-30 20:12:19 +00:00
types-mismatch-const-args.min.stderr Modify primary span label for E0308 2023-01-30 20:12:19 +00:00
types-mismatch-const-args.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
unify_with_nested_expr.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
unify_with_nested_expr.stderr Const generic parameters aren't bounds, even if we end up erroring because of the bound that binds the parameter's type 2024-06-19 14:58:29 +00:00
uninferred-consts-during-codegen-1.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
uninferred-consts-during-codegen-2.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
unknown_adt.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
unknown_adt.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
unused-const-param.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
unused-type-param-suggestion.rs Improve the diagnostics for unused generic parameters 2024-02-01 16:18:03 +01:00
unused-type-param-suggestion.stderr Improve the diagnostics for unused generic parameters 2024-02-01 16:18:03 +01:00
unused_braces.fixed [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
unused_braces.full.fixed [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
unused_braces.min.fixed [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
unused_braces.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
unused_braces.stderr Fix unused_braces on generic const expr macro call 2023-01-14 15:49:08 +00:00
variant-discrimiant-no-generics.full.stderr improve diagnostics and bless tests 2023-05-05 21:42:54 +01:00
variant-discrimiant-no-generics.min.stderr improve diagnostics and bless tests 2023-05-05 21:42:54 +01:00
variant-discrimiant-no-generics.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
where-clauses.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
wrong-normalization.rs Continue compilation even if inherent impl checks fail 2024-02-14 21:04:51 +00:00
wrong-normalization.stderr Continue compilation even if inherent impl checks fail 2024-02-14 21:04:51 +00:00