rust/tests/ui/impl-trait
Dylan DPC d6f0c51e98
Rollup merge of #107585 - compiler-errors:fndef-sig-cycle, r=oli-obk
Don't cause a cycle when formatting query description that references a FnDef

When a function returns `-> _`, we use typeck to compute what the resulting type of the body _should_ be. If we call another query inside of typeck and hit a cycle error, we attempt to report the cycle error which requires us to compute all of the query descriptions for the stack.

However, if one of the queries in that cycle has a query description that references this function as a FnDef type, we'll cause a *second* cycle error from within the cycle error reporting code, since rendering a FnDef requires us to compute its signature. This causes an unwrap to ICE, since during the *second* cycle reporting code, we try to look for a job that isn't in the active jobs list.

We can avoid this by using `with_no_queries!` when computing these query descriptions.

Fixes #107089

The only drawback is that the rendering of opaque types in cycles regresses a bit :| I'm open to alternate suggestions about how we may handle this...
2023-02-03 23:04:52 +05:30
..
auxiliary
diagnostics
explicit-generic-args-with-impl-trait
in-trait Rollup merge of #107201 - compiler-errors:confusing-async-fn-note, r=estebank 2023-02-02 06:52:13 +01:00
issues Modify primary span label for E0308 2023-01-30 20:12:19 +00:00
multiple-lifetimes
associated-impl-trait-type-generic-trait.rs
associated-impl-trait-type-trivial.rs
associated-impl-trait-type.rs
async_scope_creep.rs
auto-trait-leak2.rs
auto-trait-leak2.stderr
auto-trait-leak-rpass.rs
auto-trait-leak.rs
auto-trait-leak.stderr Don't cause a cycle when formatting query description that references a FnDef 2023-02-02 05:49:07 +00:00
auto-trait.rs
auto-trait.stderr
autoderef.rs
bound-normalization-fail.rs
bound-normalization-fail.stderr Hide more of long types in E0271 2023-01-11 21:40:39 +00:00
bound-normalization-pass.rs
bounds_regression.rs
can-return-unconstrained-closure.rs
closure-calling-parent-fn.rs
closure-in-impl-trait-arg.rs
closure-in-impl-trait.rs
cross-return-site-inference.rs
cross-return-site-inference.stderr
deduce-signature-from-supertrait.rs
deprecated_annotation.rs
divergence.rs
does-not-live-long-enough.rs
does-not-live-long-enough.stderr
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
dyn-trait-return-should-be-impl-trait.stderr Do not mention lifetime names in force trimmed paths 2023-01-30 20:12:21 +00:00
equal-hidden-lifetimes.rs
equal-hidden-lifetimes.stderr
equality2.rs
equality2.stderr Mention fn coercion rules (needs to be expanded) 2023-01-30 21:51:33 +00:00
equality-rpass.rs
equality-rpass.stderr
equality.rs
equality.stderr
example-calendar.rs
example-st.rs
extra-item.rs
extra-item.stderr
fallback_inference.rs
fallback_inference.stderr
fallback.rs
feature-self-return-type.rs
feature-self-return-type.stderr Tweak E0597 2023-01-15 19:46:20 +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
hidden-type-is-opaque-2.rs
hidden-type-is-opaque-2.stderr
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
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-trait-in-macro.rs
impl-trait-in-macro.stderr
impl-trait-plus-priority.rs
impl-trait-plus-priority.stderr
issue-35668.rs
issue-35668.stderr
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
issue-55872-1.stderr
issue-55872-2.drop_tracking_mir.stderr Bless tests. 2023-01-27 20:10:17 +00:00
issue-55872-2.drop_tracking.stderr Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
issue-55872-2.no_drop_tracking.stderr Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
issue-55872-2.rs Bless tests. 2023-01-27 20:10:17 +00:00
issue-55872-2.stderr Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
issue-55872-3.rs
issue-55872-3.stderr
issue-55872.rs
issue-55872.stderr
issue-56445.rs
issue-68532.rs
issue-72911.rs
issue-72911.stderr
issue-86465.rs
issue-86465.stderr
issue-87450.rs
issue-87450.stderr
issue-99073-2.rs
issue-99073-2.stderr
issue-99073.rs
issue-99073.stderr
issue-99642-2.rs
issue-99642.rs
issue-99914.rs
issue-99914.stderr Rollup merge of #107201 - compiler-errors:confusing-async-fn-note, r=estebank 2023-02-02 06:52:13 +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 Rollup merge of #107201 - compiler-errors:confusing-async-fn-note, r=estebank 2023-02-02 06:52:13 +01:00
issue-103181-1.rs
issue-103181-1.stderr
issue-103181-2.rs
issue-103181-2.stderr
issue-103599.rs
issue-103599.stderr
lifetimes2.rs
lifetimes.rs
method-suggestion-no-duplication.rs
method-suggestion-no-duplication.stderr
multiple-lifetimes.rs
must_outlive_least_region_or_bound.rs
must_outlive_least_region_or_bound.stderr
needs_least_region_or_bound.rs
negative-reasoning.rs
negative-reasoning.stderr
nested_impl_trait.rs
nested_impl_trait.stderr
nested-return-type2-tait2.rs
nested-return-type2-tait2.stderr Note predicate span on ImplDerivedObligation 2023-01-11 19:46:45 +00:00
nested-return-type2-tait3.rs
nested-return-type2-tait3.stderr Note predicate span on ImplDerivedObligation 2023-01-11 19:46:45 +00:00
nested-return-type2-tait.rs
nested-return-type2-tait.stderr
nested-return-type2.rs
nested-return-type2.stderr
nested-return-type3-tait2.rs
nested-return-type3-tait2.stderr
nested-return-type3-tait3.rs
nested-return-type3-tait3.stderr
nested-return-type3-tait.rs
nested-return-type3-tait.stderr
nested-return-type3.rs
nested-return-type3.stderr
nested-return-type4.rs
nested-return-type4.stderr
nested-return-type.rs
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 Tweak use of trimmed paths 2023-01-30 20:12:21 +00:00
no-trait.rs
no-trait.stderr
normalize-tait-in-const.rs
normalize-tait-in-const.stderr
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
point-to-type-err-cause-on-impl-trait-return.rs
point-to-type-err-cause-on-impl-trait-return.stderr
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-generator.rs Label closure captures/generator locals that make opaque types recursive 2023-01-21 05:49:36 +00:00
recursive-generator.stderr Label closure captures/generator locals that make opaque types recursive 2023-01-21 05:49:36 +00:00
recursive-impl-trait-type-direct.rs
recursive-impl-trait-type-indirect.drop_tracking_mir.stderr Bless tests. 2023-01-27 20:10:17 +00:00
recursive-impl-trait-type-indirect.drop_tracking.stderr Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
recursive-impl-trait-type-indirect.no_drop_tracking.stderr Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
recursive-impl-trait-type-indirect.rs Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +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
recursive-type-alias-impl-trait-declaration-too-subtle-2.stderr
recursive-type-alias-impl-trait-declaration-too-subtle.rs
recursive-type-alias-impl-trait-declaration-too-subtle.stderr Modify primary span label for E0308 2023-01-30 20:12:19 +00:00
recursive-type-alias-impl-trait-declaration.rs
region-escape-via-bound-contravariant-closure.rs
region-escape-via-bound-contravariant.rs
region-escape-via-bound.rs
region-escape-via-bound.stderr
return-position-impl-trait-minimal.rs
rpit-assoc-pair-with-lifetime.rs
rpit-not-sized.rs
rpit-not-sized.stderr
static-return-lifetime-infered.rs
static-return-lifetime-infered.stderr
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
type-alias-generic-param.rs
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
unactionable_diagnostic.rs
unactionable_diagnostic.stderr
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
universal_wrong_hrtb.rs
universal_wrong_hrtb.stderr
universal-mismatched-type.rs
universal-mismatched-type.stderr Modify primary span label for E0308 2023-01-30 20:12:19 +00:00
universal-two-impl-traits.rs
universal-two-impl-traits.stderr
unsafety-checking-cycle.rs
wf-eval-order.rs
where-allowed-2.rs
where-allowed-2.stderr
where-allowed.rs
where-allowed.stderr
xcrate_simple.rs
xcrate.rs