rust/tests/ui/impl-trait
bors ec2b311914 Auto merge of #116733 - compiler-errors:alias-liveness-but-this-time-sound, r=aliemjay
Consider alias bounds when computing liveness in NLL (but this time sound hopefully)

This is a revival of #116040, except removing the changes to opaque lifetime captures check to make sure that we're not triggering any unsoundness due to the lack of general existential regions and the currently-existing `ReErased` hack we use instead.

r? `@aliemjay` -- I appreciate you pointing out the unsoundenss in the previous iteration of this PR, and I'd like to hear that you're happy with this iteration of this PR before this goes back into FCP :>

Fixes #116794 as well

---

(mostly copied from #116040 and reworked slightly)

# Background

Right now, liveness analysis in NLL is a bit simplistic. It simply walks through all of the regions of a type and marks them as being live at points. This is problematic in the case of aliases, since it requires that we mark **all** of the regions in their args[^1] as live, leading to bugs like #42940.

In reality, we may be able to deduce that fewer regions are allowed to be present in the projected type (or "hidden type" for opaques) via item bounds or where clauses, and therefore ideally, we should be able to soundly require fewer regions to be live in the alias.

For example:
```rust
trait Captures<'a> {}
impl<T> Captures<'_> for T {}

fn capture<'o>(_: &'o mut ()) -> impl Sized + Captures<'o> + 'static {}

fn test_two_mut(mut x: ()) {
    let _f1 = capture(&mut x);
    let _f2 = capture(&mut x);
    //~^ ERROR cannot borrow `x` as mutable more than once at a time
}
```

In the example above, we should be able to deduce from the `'static` bound on `capture`'s opaque that even though `'o` is a captured region, it *can never* show up in the opaque's hidden type, and can soundly be ignored for liveness purposes.

# The Fix

We apply a simple version of RFC 1214's `OutlivesProjectionEnv` and `OutlivesProjectionTraitDef` rules to NLL's `make_all_regions_live` computation.

Specifically, when we encounter an alias type, we:
1. Look for a unique outlives bound in the param-env or item bounds for that alias. If there is more than one unique region, bail, unless any of the outlives bound's regions is `'static`, and in that case, prefer `'static`. If we find such a unique region, we can mark that outlives region as live and skip walking through the args of the opaque.
2. Otherwise, walk through the alias's args recursively, as we do today.

## Limitation: Multiple choices

This approach has some limitations. Firstly, since liveness doesn't use the same type-test logic as outlives bounds do, we can't really try several options when we're faced with a choice.

If we encounter two unique outlives regions in the param-env or bounds, we simply fall back to walking the opaque via its args. I expect this to be mostly mitigated by the special treatment of `'static`, and can be fixed in a forwards-compatible by a more sophisticated analysis in the future.

## Limitation: Opaque hidden types

Secondly, we do not employ any of these rules when considering whether the regions captured by a hidden type are valid. That causes this code (cc #42940) to fail:

```rust
trait Captures<'a> {}
impl<T> Captures<'_> for T {}

fn a() -> impl Sized + 'static {
    b(&vec![])
}

fn b<'o>(_: &'o Vec<i32>) -> impl Sized + Captures<'o> + 'static {}
```

We need to have existential regions to avoid [unsoundness](https://github.com/rust-lang/rust/pull/116040#issuecomment-1751628189) when an opaque captures a region which is not represented in its own substs but which outlives a region that does.

## Read more

Context: https://github.com/rust-lang/rust/pull/115822#issuecomment-1731153952 (for the liveness case)
More context: https://github.com/rust-lang/rust/issues/42940#issuecomment-455198309 (for the opaque capture case, which this does not fix)

[^1]: except for bivariant region args in opaques, which will become less relevant when we move onto edition 2024 capture semantics for opaques.
2023-10-29 18:42:02 +00:00
..
alias-liveness Add some unsoundness tests for opaques capturing hidden regions not in substs 2023-10-14 13:26:30 +00:00
auxiliary
diagnostics
explicit-generic-args-with-impl-trait diagnostics: remove inconsistent English article "this" from E0107 2023-02-23 10:27:06 -07:00
in-trait Remove incomplete features from RPITIT/AFIT tests 2023-10-24 15:27:06 +00:00
issues s/generator/coroutine/ 2023-10-20 21:14:01 +00:00
multiple-lifetimes Rename tests to ensure they don't have overlapping names. 2023-03-22 21:12:40 -07:00
rpit check for non-defining uses of RPIT 2023-08-14 15:25:20 +02:00
arg-position-impl-trait-too-long.rs Don't print newlines in APITs 2023-05-25 02:45:14 +00:00
arg-position-impl-trait-too-long.stderr Tweak wording of type errors involving type params 2023-10-18 23:53:18 +00:00
associated-impl-trait-type-generic-trait.rs Split out a separate feature gate for impl trait in associated types 2023-04-12 16:17:31 +00:00
associated-impl-trait-type-trivial.rs Split out a separate feature gate for impl trait in associated types 2023-04-12 16:17:31 +00:00
associated-impl-trait-type.rs Split out a separate feature gate for impl trait in associated types 2023-04-12 16:17:31 +00:00
async_scope_creep.rs Remove DefiningAnchor::Bubble from opaque wf check 2023-10-16 15:50:31 +00:00
auto-trait-coherence.next.stderr explicitly handle auto trait leakage in coherence 2023-10-13 09:42:51 +00:00
auto-trait-coherence.old.stderr explicitly handle auto trait leakage in coherence 2023-10-13 09:42:51 +00:00
auto-trait-coherence.rs explicitly handle auto trait leakage in coherence 2023-10-13 09:42:51 +00:00
auto-trait-leak2.rs Revert "Suggest using Arc on !Send/!Sync types" 2023-08-28 03:16:48 -07:00
auto-trait-leak2.stderr Revert "Suggest using Arc on !Send/!Sync types" 2023-08-28 03:16:48 -07:00
auto-trait-leak-rpass.rs
auto-trait-leak.rs Stash and cancel cycle errors for auto trait leakage in opaques 2023-10-26 17:58:02 +00:00
auto-trait-leak.stderr Stash and cancel cycle errors for auto trait leakage in opaques 2023-10-26 17:58:02 +00:00
autoderef.rs Consider a goal as NOT changed if its response is identity modulo regions 2023-07-27 04:00:49 +00:00
bivariant-lifetime-liveness.rs Flesh out tests more 2023-10-17 01:26:46 +00:00
bound-normalization-fail.rs Stabilize impl_trait_projections 2023-09-08 03:45:36 +00:00
bound-normalization-fail.stderr Stabilize impl_trait_projections 2023-09-08 03:45:36 +00:00
bound-normalization-pass.rs Remove save-analysis. 2023-02-16 15:14:45 +11:00
bounds_regression.rs s/generator/coroutine/ 2023-10-20 21:14:01 +00:00
can-return-unconstrained-closure.rs
capture-lifetime-not-in-hir.rs Stabilize impl_trait_projections 2023-09-08 03:45:36 +00:00
capture-lifetime-not-in-hir.stderr Stabilize impl_trait_projections 2023-09-08 03:45:36 +00:00
closure-calling-parent-fn.rs
closure-in-impl-trait-arg.rs
closure-in-impl-trait.rs
coherence-treats-tait-ambig.current.stderr Treat TAIT equation as always ambiguous in coherence 2023-06-18 22:52:30 +00:00
coherence-treats-tait-ambig.rs update tests 2023-09-21 08:17:58 +02:00
coherence-treats-tait-ambig.stderr update tests 2023-09-21 08:17:58 +02:00
cross-return-site-inference.rs Reorder fullfillment errors to keep more interesting ones first 2023-10-04 02:04:14 +00:00
cross-return-site-inference.stderr Show suggestion for <SelfTy as Trait>::assoc_fn in more cases and fmt code 2023-10-04 02:04:14 +00:00
deduce-signature-from-supertrait.rs Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
defined-by-trait-resolution.rs allow opaques to be defined by trait queries 2023-07-14 12:35:33 +00:00
deprecated_annotation.rs
divergence.rs
does-not-live-long-enough.rs
does-not-live-long-enough.stderr
dont-suggest-box-on-empty-else-arm.rs Don't suggest boxing an empty if/else arm 2023-06-11 00:19:56 +00:00
dont-suggest-box-on-empty-else-arm.stderr Don't suggest boxing an empty if/else arm 2023-06-11 00:19:56 +00:00
dyn-trait-elided-two-inputs-assoc.rs
dyn-trait-elided-two-inputs-param.rs
dyn-trait-elided-two-inputs-ref-assoc.rs
dyn-trait-elided-two-inputs-ref-param.rs
dyn-trait-return-should-be-impl-trait.rs Remove return type sized check hack from hir typeck 2023-05-18 01:53:01 +00:00
dyn-trait-return-should-be-impl-trait.stderr Remove return type sized check hack from hir typeck 2023-05-18 01:53:01 +00:00
equal-hidden-lifetimes.rs Convert a hard-warning about named static lifetimes into lint "unused_lifetimes" 2023-02-22 09:44:26 +08:00
equality2.rs
equality2.stderr Mention fn coercion rules (needs to be expanded) 2023-01-30 21:51:33 +00:00
equality-in-canonical-query.clone.stderr revert rust-lang/rust#114586 2023-10-18 06:19:04 +00:00
equality-in-canonical-query.rs revert rust-lang/rust#114586 2023-10-18 06:19:04 +00:00
equality-rpass.rs
equality-rpass.stderr
equality.rs
equality.stderr Don't sort strings right after we just sorted by types 2023-06-27 23:31:06 +00:00
erased-regions-in-hidden-ty.current.stderr Let's see what those opaque types actually are 2023-10-23 16:18:35 -04:00
erased-regions-in-hidden-ty.next.stderr Let's see what those opaque types actually are 2023-10-23 16:18:35 -04:00
erased-regions-in-hidden-ty.rs Let's see what those opaque types actually are 2023-10-23 16:18:35 -04:00
example-calendar.rs
example-st.rs
extra-impl-in-trait-impl.fixed improve error for impl<..> impl Trait for Type 2023-05-13 10:51:21 +02:00
extra-impl-in-trait-impl.rs improve error for impl<..> impl Trait for Type 2023-05-13 10:51:21 +02:00
extra-impl-in-trait-impl.stderr improve error for impl<..> impl Trait for Type 2023-05-13 10:51:21 +02:00
extra-item.rs
extra-item.stderr
fallback_inference.rs
fallback_inference.stderr
fallback.rs
feature-self-return-type.rs Stabilize impl_trait_projections 2023-09-08 03:45:36 +00:00
feature-self-return-type.stderr Stabilize impl_trait_projections 2023-09-08 03:45:36 +00:00
fresh-lifetime-from-bare-trait-obj-114664.rs Record binder for bare trait object in LifetimeCollectVisitor 2023-08-11 03:15:41 +00:00
fresh-lifetime-from-bare-trait-obj-114664.stderr Add a note to duplicate diagnostics 2023-10-05 01:04:41 +00:00
generic-with-implicit-hrtb-without-dyn.edition2015.stderr
generic-with-implicit-hrtb-without-dyn.edition2021.stderr
generic-with-implicit-hrtb-without-dyn.rs
hidden-lifetimes.rs
hidden-lifetimes.stderr Label opaque type for 'captures lifetime' error message 2023-03-03 05:02:34 +00:00
hidden-type-is-opaque-2.rs Fix invalid suggestion for mismatched types in closure arguments 2023-07-30 17:15:55 +02:00
hidden-type-is-opaque-2.stderr Fix invalid suggestion for mismatched types in closure arguments 2023-07-30 17:15:55 +02:00
hidden-type-is-opaque.rs
impl_fn_associativity.rs
impl_trait_projections.rs When suggesting writing a fully qualified path probe for appropriate types 2023-01-11 21:30:10 +00:00
impl_trait_projections.stderr When suggesting writing a fully qualified path probe for appropriate types 2023-01-11 21:30:10 +00:00
impl-fn-hrtb-bounds-2.rs
impl-fn-hrtb-bounds-2.stderr Remove index from BrAnon 2023-04-06 23:01:40 -04:00
impl-fn-hrtb-bounds.rs
impl-fn-hrtb-bounds.stderr
impl-fn-parsing-ambiguities.rs
impl-fn-parsing-ambiguities.stderr
impl-fn-predefined-lifetimes.rs
impl-fn-predefined-lifetimes.stderr
impl-generic-mismatch-ab.rs
impl-generic-mismatch-ab.stderr
impl-generic-mismatch.rs
impl-generic-mismatch.stderr
impl-subtyper2.rs move subtyper change reveal_all 2023-10-05 18:56:30 +03:00
impl-subtyper.rs move subtyper change reveal_all 2023-10-05 18:56:30 +03:00
impl-trait-in-macro.rs
impl-trait-in-macro.stderr
impl-trait-plus-priority.rs
impl-trait-plus-priority.stderr
in-assoc-type-unconstrained.rs Use the opaque_types_defined_by query to cheaply check for whether a hidden type may be registered for an opaque type 2023-05-12 10:26:50 +00:00
in-assoc-type-unconstrained.stderr Point to argument/return type instead of the whole function header 2023-06-22 15:00:12 +00:00
in-assoc-type.rs Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
in-assoc-type.stderr Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
issue-35668.rs
issue-35668.stderr
issue-36792.rs Move test files 2023-04-20 15:06:17 -03:00
issue-46959.rs
issue-49556.rs
issue-49579.rs
issue-49685.rs
issue-51185.rs
issue-54966.rs
issue-54966.stderr
issue-55872-1.rs Split out a separate feature gate for impl trait in associated types 2023-04-12 16:17:31 +00:00
issue-55872-1.stderr
issue-55872-2.rs Bless tests. 2023-09-23 13:47:30 +00:00
issue-55872-2.stderr Add a note to duplicate diagnostics 2023-10-05 01:04:41 +00:00
issue-55872-3.rs Remove compare mode 2023-07-03 21:40:04 +00:00
issue-55872-3.stderr adjust how closure/generator types and rvalues are printed 2023-09-21 22:20:58 +02:00
issue-55872.rs Split out a separate feature gate for impl trait in associated types 2023-04-12 16:17:31 +00:00
issue-55872.stderr
issue-56445.rs
issue-68532.rs
issue-72911.rs
issue-72911.stderr
issue-86465.rs Revert "Auto merge of #102417 - oli-obk:opaque_lifetimes2, r=jackh726" 2023-08-30 11:06:46 +00:00
issue-86465.stderr Revert "Auto merge of #102417 - oli-obk:opaque_lifetimes2, r=jackh726" 2023-08-30 11:06:46 +00:00
issue-87450.rs
issue-87450.stderr
issue-99073-2.rs check for non-defining uses of RPIT 2023-08-14 15:25:20 +02:00
issue-99073-2.stderr check for non-defining uses of RPIT 2023-08-14 15:25:20 +02:00
issue-99073.rs check for non-defining uses of RPIT 2023-08-14 15:25:20 +02:00
issue-99073.stderr adjust how closure/generator types and rvalues are printed 2023-09-21 22:20:58 +02:00
issue-99642-2.rs
issue-99642.rs
issue-99914.rs
issue-99914.stderr fix: improve the suggestion on future not awaited 2023-02-13 16:23:23 +01:00
issue-100075-2.rs
issue-100075-2.stderr
issue-100075.rs
issue-100075.stderr
issue-100187.rs
issue-102605.rs
issue-102605.stderr Check entry type as part of item type checking. 2023-07-15 22:02:16 +00:00
issue-103181-1.current.stderr Use error term if missing associated item in new solver 2023-05-16 16:02:17 +00:00
issue-103181-1.next.stderr Use error term if missing associated item in new solver 2023-05-16 16:02:17 +00:00
issue-103181-1.rs Use error term if missing associated item in new solver 2023-05-16 16:02:17 +00:00
issue-103181-2.rs More precisely detect cycle errors from type_of on opaque 2023-08-27 22:03:16 +00:00
issue-103181-2.stderr More precisely detect cycle errors from type_of on opaque 2023-08-27 22:03:16 +00:00
issue-103599.rs
issue-103599.stderr
issue-108591.rs Revert "Auto merge of #102417 - oli-obk:opaque_lifetimes2, r=jackh726" 2023-08-30 11:06:46 +00:00
issue-108592.rs Revert "Auto merge of #102417 - oli-obk:opaque_lifetimes2, r=jackh726" 2023-08-30 11:06:46 +00:00
lifetime-ambiguity-regression.rs Paper over an accidental regression 2023-09-14 15:16:48 +00:00
lifetimes2.rs
lifetimes.rs s/generator/coroutine/ 2023-10-20 21:14:01 +00:00
mapping-duplicated-lifetimes-issue-114597.rs add'l test 2023-08-08 09:39:59 +00:00
method-suggestion-no-duplication.rs
method-suggestion-no-duplication.stderr
multiple-defining-usages-in-body.rs Check that RPITs are compatible with the opaques inferred during HIR typeck too 2023-05-31 17:45:45 +00:00
multiple-defining-usages-in-body.stderr Check that RPITs are compatible with the opaques inferred during HIR typeck too 2023-05-31 17:45:45 +00:00
must_outlive_least_region_or_bound.rs
must_outlive_least_region_or_bound.stderr remove trailing dots 2023-10-08 10:06:17 +00:00
needs_least_region_or_bound.rs
negative-reasoning.rs
negative-reasoning.stderr Make things work by using the new solver 2023-10-23 23:35:27 +00:00
nested_impl_trait.rs Tweak wording of E0562 2023-10-04 19:51:43 +00:00
nested_impl_trait.stderr Tweak wording of E0562 2023-10-04 19:51:43 +00:00
nested-return-type2-tait2.rs Remove DefiningAnchor::Bubble from opaque wf check 2023-10-16 15:50:31 +00:00
nested-return-type2-tait2.stderr Remove DefiningAnchor::Bubble from opaque wf check 2023-10-16 15:50:31 +00:00
nested-return-type2-tait3.rs Remove DefiningAnchor::Bubble from opaque wf check 2023-10-16 15:50:31 +00:00
nested-return-type2-tait3.stderr Remove DefiningAnchor::Bubble from opaque wf check 2023-10-16 15:50:31 +00:00
nested-return-type2-tait.rs
nested-return-type2-tait.stderr Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
nested-return-type2.rs Nested impl traits trigger opaque_hidden_inferred_bound too much 2023-03-23 06:19:52 +00:00
nested-return-type3-tait2.rs
nested-return-type3-tait2.stderr Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
nested-return-type3-tait3.rs
nested-return-type3-tait3.stderr
nested-return-type3-tait.rs
nested-return-type3-tait.stderr Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
nested-return-type3.rs Nested impl traits trigger opaque_hidden_inferred_bound too much 2023-03-23 06:19:52 +00:00
nested-return-type4.rs
nested-return-type4.stderr adjust how closure/generator types and rvalues are printed 2023-09-21 22:20:58 +02:00
nested-return-type.rs
nested-rpit-hrtb-2.rs don't ICE on higher ranked hidden types 2023-08-04 15:11:09 +00:00
nested-rpit-hrtb-2.stderr don't ICE on higher ranked hidden types 2023-08-04 15:11:09 +00:00
nested-rpit-hrtb.rs
nested-rpit-hrtb.stderr
nested-rpit-with-anonymous-lifetimes.rs
nesting.rs
no-method-suggested-traits.rs
no-method-suggested-traits.stderr Special-case item attributes in the suggestion output 2023-04-12 22:50:10 +00:00
no-trait.rs
no-trait.stderr
normalize-opaque-with-bound-vars.rs More tests 2023-06-27 21:36:15 +00:00
normalize-tait-in-const.rs update tests, adding known-bug 2023-07-27 15:51:02 +00:00
normalize-tait-in-const.stderr bless the known-bug tests 2023-09-20 03:02:14 +00:00
object-unsafe-trait-in-return-position-dyn-trait.rs
object-unsafe-trait-in-return-position-dyn-trait.stderr
object-unsafe-trait-in-return-position-impl-trait.rs
object-unsafe-trait-in-return-position-impl-trait.stderr Modify primary span label for E0308 2023-01-30 20:12:19 +00:00
opaque-cast-field-access-in-future.rs Only prevent field projections into opaque types, not types containing opaque types 2023-09-25 17:41:08 +00:00
opaque-cast-field-access-in-future.stderr Reorder fullfillment errors to keep more interesting ones first 2023-10-04 02:04:14 +00:00
point-to-type-err-cause-on-impl-trait-return.rs Remove return type sized check hack from hir typeck 2023-05-18 01:53:01 +00:00
point-to-type-err-cause-on-impl-trait-return.stderr Remove return type sized check hack from hir typeck 2023-05-18 01:53:01 +00:00
printing-binder.rs
printing-binder.stderr
private_unused.rs
projection-mismatch-in-impl-where-clause.rs
projection-mismatch-in-impl-where-clause.stderr Note predicate span on ImplDerivedObligation 2023-01-11 19:46:45 +00:00
projection.rs
question_mark.rs
recursive-auto-trait.rs deal with opaque types without cycling 2023-07-06 11:37:21 +02:00
recursive-coroutine.rs Rename lots of files that had generator in their name 2023-10-20 21:14:02 +00:00
recursive-coroutine.stderr Rename lots of files that had generator in their name 2023-10-20 21:14:02 +00:00
recursive-impl-trait-type-direct.rs
recursive-impl-trait-type-indirect.rs s/generator/coroutine/ 2023-10-20 21:14:01 +00:00
recursive-impl-trait-type-indirect.stderr s/generator/coroutine/ 2023-10-20 21:14:01 +00:00
recursive-impl-trait-type-through-non-recursive.rs
recursive-impl-trait-type-through-non-recursive.stderr
recursive-type-alias-impl-trait-declaration-too-subtle-2.rs Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
recursive-type-alias-impl-trait-declaration-too-subtle.rs
recursive-type-alias-impl-trait-declaration-too-subtle.stderr Handle weak type aliases by immediately resolving them to their aliased type 2023-06-22 15:51:19 +00:00
recursive-type-alias-impl-trait-declaration.rs Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
recursive-type-alias-impl-trait-declaration.stderr Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
region-escape-via-bound-contravariant-closure.rs
region-escape-via-bound-contravariant.rs
region-escape-via-bound.rs
region-escape-via-bound.stderr Label opaque type for 'captures lifetime' error message 2023-03-03 05:02:34 +00:00
return-position-impl-trait-minimal.rs
reveal-during-codegen.rs Normalize opaques during codegen in new solver 2023-07-07 16:02:25 +00:00
rpit-assoc-pair-with-lifetime.rs
rpit-not-sized.rs
rpit-not-sized.stderr
static-lifetime-return-position-impl-trait.rs Stabilize AFIT and RPITIT 2023-10-13 21:01:36 +00:00
static-return-lifetime-infered.rs
static-return-lifetime-infered.stderr adjust how closure/generator types and rvalues are printed 2023-09-21 22:20:58 +02:00
suggest-calling-rpit-closure.rs
suggest-calling-rpit-closure.stderr
trait_resolution.rs
trait_type.rs
trait_type.stderr
two_tait_defining_each_other2.rs
two_tait_defining_each_other2.stderr
two_tait_defining_each_other3.rs
two_tait_defining_each_other3.stderr
two_tait_defining_each_other.rs
two_tait_defining_each_other.stderr
type_parameters_captured.rs
type_parameters_captured.stderr remove trailing dots 2023-10-08 10:06:17 +00:00
type-alias-generic-param.rs Split out a separate feature gate for impl trait in associated types 2023-04-12 16:17:31 +00:00
type-alias-impl-trait-in-fn-body.rs
type-arg-mismatch-due-to-impl-trait.rs
type-arg-mismatch-due-to-impl-trait.stderr
unactionable_diagnostic.fixed remove trailing dots 2023-10-08 10:06:17 +00:00
unactionable_diagnostic.rs remove trailing dots 2023-10-08 10:06:17 +00:00
unactionable_diagnostic.stderr remove trailing dots 2023-10-08 10:06:17 +00:00
universal_hrtb_anon.rs
universal_hrtb_named.rs
universal_in_adt_in_parameters.rs
universal_in_impl_trait_in_parameters.rs
universal_in_trait_defn_parameters.rs
universal_multiple_bounds.rs
universal_wrong_bounds.rs
universal_wrong_bounds.stderr Special-case item attributes in the suggestion output 2023-04-12 22:50:10 +00:00
universal_wrong_hrtb.rs migrate lifetime too 2023-06-26 19:14:49 +00:00
universal_wrong_hrtb.stderr migrate lifetime too 2023-06-26 19:14:49 +00:00
universal-mismatched-type.rs
universal-mismatched-type.stderr Tweak wording of type errors involving type params 2023-10-18 23:53:18 +00:00
universal-two-impl-traits.rs
universal-two-impl-traits.stderr
unsafety-checking-cycle.rs
variance.rs Test variances of opaque captures 2023-08-28 01:05:34 +00:00
variance.stderr Test variances of opaque captures 2023-08-28 01:05:34 +00:00
wf-eval-order.rs vars are ? 2023-04-25 19:53:09 +00:00
where-allowed-2.rs
where-allowed-2.stderr Reorder fullfillment errors to keep more interesting ones first 2023-10-04 02:04:14 +00:00
where-allowed.rs Stabilize AFIT and RPITIT 2023-10-13 21:01:36 +00:00
where-allowed.stderr Stabilize AFIT and RPITIT 2023-10-13 21:01:36 +00:00
xcrate_simple.rs
xcrate.rs