Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Overhaul -Ztreat-err-as-bug #119871

Merged
merged 1 commit into from
Jan 13, 2024

Commits on Jan 12, 2024

  1. Don't consider delayed bugs for -Ztreat-err-as-bug.

    `-Ztreat-err-as-bug` treats normal errors and delayed bugs equally,
    which can lead to some really surprising results.
    
    This commit changes `-Ztreat-err-as-bug` so it ignores delayed bugs,
    unless they get promoted to proper bugs and are printed.
    
    This feels to me much simpler and more logical. And it simplifies the
    implementation:
    - The `-Ztreat-err-as-bug` check is removed from in
      `DiagCtxt::{delayed_bug,span_delayed_bug}`.
    - `treat_err_as_bug` doesn't need to count delayed bugs.
    - The `-Ztreat-err-as-bug` panic message is simpler, because it doesn't
      have to mention delayed bugs.
    
    Output of delayed bugs is now more consistent. They're always printed
    the same way. Previously when they triggered `-Ztreat-err-as-bug` they
    would be printed slightly differently, via `span_bug` in
    `span_delayed_bug` or `delayed_bug`.
    
    A minor behaviour change: the "no errors encountered even though
    `span_delayed_bug` issued" printed before delayed bugs is now a note
    rather than a bug. This is done so it doesn't get counted as an error
    that might trigger `-Ztreat-err-as-bug`, which would be silly.
    This means that if you use `-Ztreat-err-as-bug=1` and there are no
    normal errors but there are delayed bugs, the first delayed bug will be
    shown (and the panic will happen after it's printed).
    
    Also, I have added a second note saying "those delayed bugs will now be
    shown as internal compiler errors". I think this makes it clearer what
    is happening, because the whole concept of delayed bugs is non-obvious.
    
    There are some test changes.
    - equality-in-canonical-query.rs: Minor output changes, and the error
      count reduces by one because the "no errors encountered even though
      `span_delayed_bug` issued" message is no longer counted as an error.
    - rpit_tait_equality_in_canonical_query.rs: Ditto.
    - storage-live.rs: The query stack disappears because these delayed bugs
      are now printed at the end, rather than when they are created.
    - storage-return.rs, span_delayed_bug.rs: now need
      `-Zeagerly-emit-delayed-bugs` because they need the delayed bugs
      emitted immediately to preserve behaviour.
    nnethercote committed Jan 12, 2024
    Configuration menu
    Copy the full SHA
    f1ac541 View commit details
    Browse the repository at this point in the history