Stream: t-compiler/wg-prioritization/alerts

Topic: I-prioritize #76351 Recursive Trait Hang in rustc


triagebot (Sep 05 2020 at 02:29, on Zulip):

@WG-prioritization/alerts issue #76351 has been requested for prioritization.

Procedure

apiraino (Sep 06 2020 at 16:54, on Zulip):

fwiw the provided snippet seems to not compile on any stable, maybe a longstanding issue never surfaced until now? Could it make sense a P-medium until futher comments clarify a bit?

LeSeulArtichaut (Sep 06 2020 at 18:12, on Zulip):

It does not identify that Unit does not implement trait At

Yeah this shouldn't compile, but having the compiler hang is kind of like a diagnostic regression in the sense that you don't get diagnostics to spot your error

apiraino (Sep 06 2020 at 18:15, on Zulip):

oh I see, thanks for clarifying

LeSeulArtichaut (Sep 06 2020 at 18:15, on Zulip):

I think P-medium is fine

LeSeulArtichaut (Sep 06 2020 at 18:18, on Zulip):

Looks like this regressed in 1.31.0

LeSeulArtichaut (Sep 06 2020 at 18:19, on Zulip):

In 1.30.0 I get

error[E0275]: overflow evaluating the requirement `<_ as Indexed>::Index`

  |

  = help: consider adding a `#![recursion_limit="128"]` attribute to your crate

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`

  = note: required because of the requirements on the impl of `At<(_, _)>` for `()`
LeSeulArtichaut (Sep 06 2020 at 18:19, on Zulip):

Which is not particularly useful either

LeSeulArtichaut (Sep 06 2020 at 18:22, on Zulip):

Going with P-medium

triagebot (Sep 06 2020 at 18:23, on Zulip):

Issue #76351's prioritization request has been removed.

Last update: Apr 11 2021 at 18:00UTC