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 #118768

Closed
wants to merge 25 commits into from

Commits on Dec 8, 2023

  1. Extend tidy alphabetical checking to tests/.

    This is desired for rust-lang#118702.
    nnethercote committed Dec 8, 2023
    Configuration menu
    Copy the full SHA
    5d16c54 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    d2d742c View commit details
    Browse the repository at this point in the history
  3. coverage: Add CoverageKind::SpanMarker for including extra spans in…

    … MIR
    
    There are cases where coverage instrumentation wants to show a span for some
    syntax element, but there is no MIR node that naturally carries that span, so
    the instrumentor can't see it.
    
    MIR building can now use this new kind of coverage statement to deliberately
    include those spans in MIR, attached to a dummy statement that has no other
    effect.
    Zalathar committed Dec 8, 2023
    Configuration menu
    Copy the full SHA
    44b47aa View commit details
    Browse the repository at this point in the history
  4. coverage: Use SpanMarker to mark continue expressions.

    This replaces the previous workaround, which was to inject a dummy `Assign`
    statement.
    Zalathar committed Dec 8, 2023
    Configuration menu
    Copy the full SHA
    9816635 View commit details
    Browse the repository at this point in the history
  5. coverage: Use SpanMarker to mark the full condition of if !

    When MIR is built for an if-not expression, the `!` part of the condition
    doesn't correspond to any MIR statement, so coverage instrumentation normally
    can't see it.
    
    We can fix that by deliberately injecting a dummy statement whose sole purpose
    is to associate that span with its enclosing block.
    Zalathar committed Dec 8, 2023
    Configuration menu
    Copy the full SHA
    d90fd02 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    e0cd805 View commit details
    Browse the repository at this point in the history
  7. coverage: Add #[track_caller] to the span generator's unwrap methods

    This should make it easier to investigate unwrap failures in bug reports.
    Zalathar committed Dec 8, 2023
    Configuration menu
    Copy the full SHA
    cec8142 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    e01338a View commit details
    Browse the repository at this point in the history
  9. update target feature following LLVM API change

    LLVM commit llvm/llvm-project@e817966
    renamed the `unaligned-scalar-mem` target feature to `fast-unaligned-access`.
    krasimirgg committed Dec 8, 2023
    Configuration menu
    Copy the full SHA
    b378059 View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    9f0c6f1 View commit details
    Browse the repository at this point in the history
  11. use magenta instead of bold for highlighting

    according to a poll of gay people in my phone, purple is the most popular color to use for highlighting
    
    | color      | percentage |
    | ---------- | ---------- |
    | bold white | 6%         |
    | blue       | 14%        |
    | cyan       | 26%        |
    | purple     | 37%        |
    | magenta    | 17%        |
    
    unfortunately, purple is not supported by 16-color terminals, which rustc apparently wants to support for some reason.
    until we require support for full 256-color terms (e.g. by doing the same feature detection as we currently do for urls), we can't use it.
    
    instead, i have collapsed the purple votes into magenta on the theory that they're close, and also because magenta is pretty.
    jyn514 committed Dec 8, 2023
    Configuration menu
    Copy the full SHA
    96b027f View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    287c77e View commit details
    Browse the repository at this point in the history
  13. Configuration menu
    Copy the full SHA
    8361a72 View commit details
    Browse the repository at this point in the history
  14. More nits

    compiler-errors committed Dec 8, 2023
    Configuration menu
    Copy the full SHA
    d5dcd85 View commit details
    Browse the repository at this point in the history
  15. Configuration menu
    Copy the full SHA
    384a49e View commit details
    Browse the repository at this point in the history
  16. Configuration menu
    Copy the full SHA
    e987812 View commit details
    Browse the repository at this point in the history
  17. Configuration menu
    Copy the full SHA
    7079adb View commit details
    Browse the repository at this point in the history

Commits on Dec 9, 2023

  1. Rollup merge of rust-lang#118198 - Zalathar:if-not, r=cjgillot

    coverage: Use `SpanMarker` to improve coverage spans for `if !` expressions
    
    Coverage instrumentation works by extracting source code spans from MIR. However, some kinds of syntax are effectively erased during MIR building, so their spans don't necessarily exist anywhere in MIR, making them invisible to the coverage instrumentor (unless we resort to various heuristics and hacks to recover them).
    
    This PR introduces `CoverageKind::SpanMarker`, which is a new variant of `StatementKind::Coverage`. Its sole purpose is to represent spans that would otherwise not appear in MIR, so that the coverage instrumentor can extract them.
    
    When coverage is enabled, the MIR builder can insert these dummy statements as needed, to improve the accuracy of spans used by coverage mappings.
    
    Fixes rust-lang#115468.
    
    ---
    
    ``@rustbot`` label +A-code-coverage
    workingjubilee authored Dec 9, 2023
    Configuration menu
    Copy the full SHA
    8ce6c4a View commit details
    Browse the repository at this point in the history
  2. Rollup merge of rust-lang#118512 - spastorino:add-implied-bounds-rela…

    …ted-tests, r=jackh726
    
    Add tests related to normalization in implied bounds
    
    Getting ``@aliemjay's`` tests from rust-lang#109763, so we can better track what's going on in every different example.
    
    r? ``@jackh726``
    workingjubilee authored Dec 9, 2023
    Configuration menu
    Copy the full SHA
    720bcf0 View commit details
    Browse the repository at this point in the history
  3. Rollup merge of rust-lang#118610 - krasimirgg:llvm-18-dec, r=nikic

    update target feature following LLVM API change
    
    LLVM commit llvm/llvm-project@e817966 renamed* the `unaligned-scalar-mem` target feature to `fast-unaligned-access`.
    
    (*) technically the commit folded two previous features into one, but there are no references to the other one in rust.
    workingjubilee authored Dec 9, 2023
    Configuration menu
    Copy the full SHA
    34273dd View commit details
    Browse the repository at this point in the history
  4. Rollup merge of rust-lang#118666 - Zalathar:body-closure, r=cjgillot

    coverage: Simplify the heuristic for ignoring `async fn` return spans
    
    The code for extracting coverage spans from MIR has a special heuristic for dealing with `async fn`, so that the function's closing brace does not have a confusing double count.
    
    The code implementing that heuristic is currently mixed in with the code for flushing remaining spans after the main refinement loop, making the refinement code harder to understand.
    
    We can solve that by hoisting the heuristic to an earlier stage, after the spans have been extracted and sorted but before they have been processed by the refinement loop.
    
    The coverage tests verify that the heuristic is still effective, so coverage mappings/reports for `async fn` have not changed.
    
    ---
    
    This PR also has the side-effect of fixing the `None some_prev` panic that started appearing after rust-lang#118525.
    
    The old code assumed that `prev` would always be present after the refinement loop. That was only true if the list of collected spans was non-empty, but prior to rust-lang#118525 that didn't seem to come up in practice. After that change, the list of collected spans could be empty in some specific circumstances, leading to panics.
    
    The new code uses an `if let` to inspect `prev`, which correctly does nothing if there is no span present.
    workingjubilee authored Dec 9, 2023
    Configuration menu
    Copy the full SHA
    bf703f6 View commit details
    Browse the repository at this point in the history
  5. Rollup merge of rust-lang#118737 - nnethercote:tidy-alphabetical-in-t…

    …estsa, r=Nilstrieb
    
    Extend tidy alphabetical checking to `tests/`.
    
    This is desired for rust-lang#118702.
    
    r? ``@Nilstrieb``
    workingjubilee authored Dec 9, 2023
    Configuration menu
    Copy the full SHA
    e2b4ba9 View commit details
    Browse the repository at this point in the history
  6. Rollup merge of rust-lang#118756 - jyn514:colors, r=estebank

    use bold magenta instead of bold white for highlighting
    
    according to a poll of gay people in my phone, purple is the most popular color to use for highlighting
    
    | color      | percentage |
    | ---------- | ---------- |
    | bold white | 6%         |
    | blue       | 14%        |
    | cyan       | 26%        |
    | purple     | 37%        |
    | magenta    | 17%        |
    
    unfortunately, purple is not supported by 16-color terminals, which rustc apparently wants to support for some reason.
    until we require support for full 256-color terms (e.g. by doing the same feature detection as we currently do for urls), we can't use it.
    
    instead, i have collapsed the purple votes into magenta on the theory that they're close, and also because magenta is pretty.
    
    before:
    ![image](https://github.com/rust-lang/rust/assets/23638587/9a89eee2-8b89-422e-8554-812827bb2a23)
    
    after:
    ![image](https://github.com/rust-lang/rust/assets/23638587/5bf3a917-8a20-4afd-af3e-f9491d0d57f5)
    
    other colors for comparison:
    blue: ![image](https://github.com/rust-lang/rust/assets/23638587/6f199c7b-d598-4009-8ffc-6b7b1d0d1f8c)
    cyan: ![image](https://github.com/rust-lang/rust/assets/23638587/a77e4fe3-563e-4aa5-ae92-745bb67287d1)
    purple: ![image](https://github.com/rust-lang/rust/assets/23638587/ffe603fb-d811-4106-95a9-4dd4c955924c)
    magenta without bolding: ![image](https://github.com/rust-lang/rust/assets/23638587/cf927e5f-8b25-4dc2-b8e7-32905a11a459)
    
    r? ``@estebank``
    workingjubilee authored Dec 9, 2023
    Configuration menu
    Copy the full SHA
    ebd1b6b View commit details
    Browse the repository at this point in the history
  7. Rollup merge of rust-lang#118762 - compiler-errors:gen-nits, r=eholk

    Some more minor `async gen`-related nits
    
    Tiny tweaks found after `async gen` pr landed
    
    r? eholk
    workingjubilee authored Dec 9, 2023
    Configuration menu
    Copy the full SHA
    5b720b4 View commit details
    Browse the repository at this point in the history
  8. Rollup merge of rust-lang#118764 - compiler-errors:fused-async-iterat…

    …or, r=eholk
    
    Make async generators fused by default
    
    I actually changed my mind about this since the implementation PR landed. I think it's beneficial for `async gen` blocks to be "fused" by default -- i.e., for them to repeatedly return `Poll::Ready(None)` -- rather than panic.
    
    We have [`FusedStream`](https://docs.rs/futures/latest/futures/stream/trait.FusedStream.html) in futures-rs to represent streams with this capability already anyways.
    
    r? eholk
    cc ``@rust-lang/wg-async,`` would like to know if anyone else has opinions about this.
    workingjubilee authored Dec 9, 2023
    Configuration menu
    Copy the full SHA
    8230fd5 View commit details
    Browse the repository at this point in the history