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

Rollup of 8 pull requests #121415

Merged
merged 29 commits into from
Feb 22, 2024
Merged

Rollup of 8 pull requests #121415

merged 29 commits into from
Feb 22, 2024

Commits on Feb 20, 2024

  1. triagebot: add queue notifications

    Signed-off-by: David Wood <david@davidtw.co>
    davidtwco committed Feb 20, 2024
    Configuration menu
    Copy the full SHA
    e5fa6ec View commit details
    Browse the repository at this point in the history

Commits on Feb 21, 2024

  1. Configuration menu
    Copy the full SHA
    e134102 View commit details
    Browse the repository at this point in the history
  2. Consistently refer to a test's revision instead of cfg

    Compiletest code sometimes refers to a test's revision as its `cfg`. This
    results in two different names for the same thing, one of which is ambiguous
    with other kinds of configuration (such as compiletest's own config).
    
    This patch replaces those occurrences of `cfg` with `revision`.
    Zalathar committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    99fb653 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    544d091 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    ec91209 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    c40261d View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    3a83b27 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    5e0e5b1 View commit details
    Browse the repository at this point in the history
  8. Unify dylib loading between proc macros and codegen backends

    As bonus this makes the errors when failing to load a proc macro more
    informative to match the backend loading errors. In addition it makes it
    slightly easier to patch rustc to work on platforms that don't support
    dynamic linking like wasm.
    bjorn3 committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    f25c90a View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    a17211b View commit details
    Browse the repository at this point in the history
  10. Add an ATB test

    compiler-errors committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    a233b16 View commit details
    Browse the repository at this point in the history
  11. Configuration menu
    Copy the full SHA
    f8fbb70 View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    1e16927 View commit details
    Browse the repository at this point in the history
  13. Configuration menu
    Copy the full SHA
    203b433 View commit details
    Browse the repository at this point in the history
  14. Remove EarlyDiagCtxt::abort_if_errors.

    Its one use isn't necessary, because it's not possible for errors to
    have been emitted at that point.
    nnethercote committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    9919c3d View commit details
    Browse the repository at this point in the history
  15. Adjust the has_errors* methods.

    Currently `has_errors` excludes lint errors. This commit changes it to
    include lint errors.
    
    The motivation for this is that for most places it doesn't matter
    whether lint errors are included or not. But there are multiple places
    where they must be includes, and only one place where they must not be
    included. So it makes sense for `has_errors` to do the thing that fits
    the most situations, and the new `has_errors_excluding_lint_errors`
    method in the one exceptional place.
    
    The same change is made for `err_count`. Annoyingly, this requires the
    introduction of `err_count_excluding_lint_errs` for one place, to
    preserve existing error printing behaviour. But I still think the change
    is worthwhile overall.
    nnethercote committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    46f4983 View commit details
    Browse the repository at this point in the history
  16. Overhaul the handling of errors at the top-level.

    Currently `emit_stashed_diagnostic` is called from four(!) different
    places: `print_error_count`, `DiagCtxtInner::drop`, `abort_if_errors`,
    and `compile_status`.
    
    And `flush_delayed` is called from two different places:
    `DiagCtxtInner::drop` and `Queries`.
    
    This is pretty gross! Each one should really be called from a single
    place, but there's a bunch of entanglements. This commit cleans up this
    mess.
    
    Specifically, it:
    - Removes all the existing calls to `emit_stashed_diagnostic`, and adds
      a single new call in `finish_diagnostics`.
    - Removes the early `flush_delayed` call in `codegen_and_build_linker`,
      replacing it with a simple early return if delayed bugs are present.
    - Changes `DiagCtxtInner::drop` and `DiagCtxtInner::flush_delayed` so
      they both assert that the stashed diagnostics are empty (i.e.
      processed beforehand).
    - Changes `interface::run_compiler` so that any errors emitted during
      `finish_diagnostics` (i.e. late-emitted stashed diagnostics) are
      counted and cannot be overlooked. This requires adding
      `ErrorGuaranteed` return values to several functions.
    - Removes the `stashed_err_count` call in `analysis`. This is possible
      now that we don't have to worry about calling `flush_delayed` early
      from `codegen_and_build_linker` when stashed diagnostics are pending.
    - Changes the `span_bug` case in `handle_tuple_field_pattern_match` to a
      `delayed_span_bug`, because it now can be reached due to the removal
      of the `stashed_err_count` call in `analysis`.
    - Slightly changes the expected output of three tests. If no errors are
      emitted but there are delayed bugs, the error count is no longer
      printed. This is because delayed bugs are now always printed after the
      error count is printed (or not printed, if the error count is zero).
    
    There is a lot going on in this commit. It's hard to break into smaller
    pieces because the existing code is very tangled. It took me a long time
    and a lot of effort to understand how the different pieces interact, and
    I think the new code is a lot simpler and easier to understand.
    nnethercote committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    72b172b View commit details
    Browse the repository at this point in the history
  17. Inline and remove Session::compile_status.

    Because it's now simple enough that it doesn't provide much benefit.
    nnethercote committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    c2512a1 View commit details
    Browse the repository at this point in the history
  18. Refactor run_global_ctxt.

    It currently is infallible and uses `abort_if_errors` and
    `FatalError.raise()` to signal errors. It's easy to instead return a
    `Result<_, ErrorGuaranteed>`, which is the more usual way of doing
    things.
    nnethercote committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    4400644 View commit details
    Browse the repository at this point in the history
  19. Replace unnecessary abort_if_errors.

    Replace `abort_if_errors` calls that are certain to abort -- because
    we emit an error immediately beforehand -- with `FatalErro.raise()`.
    nnethercote committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    4da67ff View commit details
    Browse the repository at this point in the history
  20. Inline and remove abort_on_err.

    It's clumsy and doesn't improve readability.
    nnethercote committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    f16c226 View commit details
    Browse the repository at this point in the history
  21. Rollup merge of rust-lang#121206 - nnethercote:top-level-error-handli…

    …ng, r=oli-obk
    
    Top level error handling
    
    The interactions between the following things are surprisingly complicated:
    - `emit_stashed_diagnostics`,
    - `flush_delayed`,
    - normal return vs `abort_if_errors`/`FatalError.raise()` unwinding in the call to the closure in `interface::run_compiler`.
    
    This PR disentangles it all.
    
    r? `@oli-obk`
    matthiaskrgr committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    5c89029 View commit details
    Browse the repository at this point in the history
  22. Rollup merge of rust-lang#121261 - Zalathar:pending-dups, r=oli-obk

    coverage: Remove `pending_dups` from the span refiner
    
    When extracting coverage spans from a function's MIR, we need to decide how to handle spans that are associated with more than one node (BCB) in the coverage control flow graph.
    
    The existing code for managing those duplicate spans is very subtle and difficult to modify. But by eagerly deduplicating those extracted spans in a much simpler way, we can remove a massive chunk of complexity from the span refiner.
    
    There is a tradeoff here, in that we no longer try to retain *all* nondominating BCBs that have the same span, only the last one in the (semi-arbitrary) dominance ordering. But in practice, this produces very little difference in our coverage tests, and the simplification is so significant that I think it's worthwhile.
    
    ``@rustbot`` label +A-code-coverage
    matthiaskrgr committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    9949bbc View commit details
    Browse the repository at this point in the history
  23. Rollup merge of rust-lang#121336 - davidtwco:triagebot-notifications,…

    … r=wesleywiser
    
    triagebot: add queue notifications
    
    This seems like it could be useful.
    
    r? ``@wesleywiser``
    matthiaskrgr committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    7189985 View commit details
    Browse the repository at this point in the history
  24. Rollup merge of rust-lang#121373 - Zalathar:test-revision, r=oli-obk

    Consistently refer to a test's `revision` instead of `cfg`
    
    Compiletest allows a test file to specify multiple “revisions” (`//@ revisions: foo bar`), with each revision running as a separate test, and having the ability to define revision-specific headers (`//`@[foo]` ignore-blah`) and revision-specific code (`#[cfg(foo)]`).
    
    The code that implements this feature sometimes uses the term “cfg” instead of “revision”. This results in two confusingly-different names for the same concept, one of which is ambiguous with other kinds of configuration (such as compiletest's own config).
    
    This PR replaces those occurrences of `cfg` with `revision`, so that one name is used consistently.
    matthiaskrgr committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    084e232 View commit details
    Browse the repository at this point in the history
  25. Rollup merge of rust-lang#121391 - Nadrieril:fix-liveness, r=compiler…

    …-errors
    
    never patterns: Fix liveness analysis in the presence of never patterns
    
    There's a bunch of code that only looks at the first alternative of an or-pattern, under the assumption that all alternatives have the same set of bindings. This is true except for never pattern alternatives  (e.g. `Ok(x) | Err(!)`), so we skip these. I expect there's other code with this problem, I'll have to check that later.
    
    I don't have tests for this yet because mir lowering causes other issues; I'll have some in the next PR.
    
    r? ``@compiler-errors``
    matthiaskrgr committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    60cb794 View commit details
    Browse the repository at this point in the history
  26. Rollup merge of rust-lang#121392 - bjorn3:unify_dylib_loading, r=petr…

    …ochenkov
    
    Unify dylib loading between proc macros and codegen backends
    
    As bonus this makes the errors when failing to load a proc macro more informative to match the backend loading errors. In addition it makes it slightly easier to patch rustc to work on platforms that don't support dynamic linking like wasm.
    matthiaskrgr committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    64dbc3f View commit details
    Browse the repository at this point in the history
  27. Rollup merge of rust-lang#121399 - psumbera:solaris-strip-debug, r=pe…

    …trochenkov
    
    Solaris linker does not support --strip-debug
    
    Fixes rust-lang#121381
    matthiaskrgr committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    8ab24c9 View commit details
    Browse the repository at this point in the history
  28. Configuration menu
    Copy the full SHA
    35650a4 View commit details
    Browse the repository at this point in the history