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 7 pull requests #120679

Closed
wants to merge 22 commits into from

Commits on Jan 28, 2024

  1. Configuration menu
    Copy the full SHA
    c367983 View commit details
    Browse the repository at this point in the history

Commits on Jan 30, 2024

  1. limit the names_possiblilities to less than 3

    Co-authored-by: Urgau <3616612+Urgau@users.noreply.github.com>
    chenyukang and Urgau committed Jan 30, 2024
    Configuration menu
    Copy the full SHA
    0213c87 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    ca243e7 View commit details
    Browse the repository at this point in the history
  3. tidy: wrap regexes with lazy_static

    yes, once_cell better, but ...
    
    this reduces from
    
    ==31349== Total:     1,365,199,543 bytes in 4,774,213 blocks
    ==31349== At t-gmax: 10,975,708 bytes in 66,093 blocks
    ==31349== At t-end:  2,880,947 bytes in 12,332 blocks
    ==31349== Reads:     5,210,008,956 bytes
    ==31349== Writes:    1,280,920,127 bytes
    
    to
    
    ==47796== Total:     821,467,407 bytes in 3,955,595 blocks
    ==47796== At t-gmax: 10,976,209 bytes in 66,100 blocks
    ==47796== At t-end:  2,944,016 bytes in 12,490 blocks
    ==47796== Reads:     4,788,959,023 bytes
    ==47796== Writes:    975,493,639 bytes
    
    miropt-test-tools: remove regex usage
    
    this removes regex usage and slightly refactors ext stripping in one case
    klensy committed Jan 30, 2024
    Configuration menu
    Copy the full SHA
    c10a52e View commit details
    Browse the repository at this point in the history
  4. update ignore crate

     $ cargo update  -p ignore --precise=0.4.22
        Updating crates.io index
        Updating aho-corasick v1.0.2 -> v1.1.2
        Updating bstr v1.5.0 -> v1.9.0
        Updating globset v0.4.10 -> v0.4.14
        Updating ignore v0.4.20 -> v0.4.22
        Updating log v0.4.19 -> v0.4.20
        Updating memchr v2.5.0 -> v2.7.1
          Adding regex-automata v0.4.3
        Updating walkdir v2.3.3 -> v2.4.0
    
    some notable change is BurntSushi/ripgrep#2692
    
    reduces memory usage from
    
    ==47796== Total:     821,467,407 bytes in 3,955,595 blocks
    ==47796== At t-gmax: 10,976,209 bytes in 66,100 blocks
    ==47796== At t-end:  2,944,016 bytes in 12,490 blocks
    ==47796== Reads:     4,788,959,023 bytes
    ==47796== Writes:    975,493,639 bytes
    
    to
    
    ==66633== Total:     791,565,538 bytes in 3,503,144 blocks
    ==66633== At t-gmax: 10,914,511 bytes in 65,997 blocks
    ==66633== At t-end:  395,531 bytes in 941 blocks
    ==66633== Reads:     4,249,388,949 bytes
    ==66633== Writes:    814,119,580 bytes
    
    bump regex to dedupe one regex-syntax
    
    $ cargo update -p regex
        Updating crates.io index
        Updating regex v1.8.4 -> v1.10.2
        Removing regex-syntax v0.7.2
    klensy committed Jan 30, 2024
    Configuration menu
    Copy the full SHA
    a9ba383 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    d34b0fa View commit details
    Browse the repository at this point in the history
  6. Account for unbounded type param receiver in suggestions

    When encountering
    
    ```rust
    fn f<T>(a: T, b: T) -> std::cmp::Ordering {
        a.cmp(&b) //~ ERROR E0599
    }
    ```
    
    output
    
    ```
    error[E0599]: no method named `cmp` found for type parameter `T` in the current scope
      --> $DIR/method-on-unbounded-type-param.rs:2:7
       |
    LL | fn f<T>(a: T, b: T) -> std::cmp::Ordering {
       |      - method `cmp` not found for this type parameter
    LL |     a.cmp(&b)
       |       ^^^ method cannot be called on `T` due to unsatisfied trait bounds
       |
       = help: items from traits can only be used if the type parameter is bounded by the trait
    help: the following traits define an item `cmp`, perhaps you need to restrict type parameter `T` with one of them:
       |
    LL | fn f<T: Ord>(a: T, b: T) -> std::cmp::Ordering {
       |       +++++
    LL | fn f<T: Iterator>(a: T, b: T) -> std::cmp::Ordering {
       |       ++++++++++
    ```
    
    Fix rust-lang#120186.
    estebank committed Jan 30, 2024
    Configuration menu
    Copy the full SHA
    20b1c2a View commit details
    Browse the repository at this point in the history
  7. fix rebase

    estebank committed Jan 30, 2024
    Configuration menu
    Copy the full SHA
    9ccc770 View commit details
    Browse the repository at this point in the history
  8. Account for non-overlapping unmet trait bounds in suggestion

    When a method not found on a type parameter could have been provided by any
    of multiple traits, suggest each trait individually, instead of a single
    suggestion to restrict the type parameter with *all* of them.
    
    Before:
    
    ```
    error[E0599]: the method `cmp` exists for reference `&T`, but its trait bounds were not satisfied
      --> $DIR/method-on-unbounded-type-param.rs:5:10
       |
    LL |     (&a).cmp(&b)
       |          ^^^ method cannot be called on `&T` due to unsatisfied trait bounds
       |
       = note: the following trait bounds were not satisfied:
               `T: Ord`
               which is required by `&T: Ord`
               `&T: Iterator`
               which is required by `&mut &T: Iterator`
               `T: Iterator`
               which is required by `&mut T: Iterator`
    help: consider restricting the type parameters to satisfy the trait bounds
       |
    LL | fn g<T>(a: T, b: T) -> std::cmp::Ordering where T: Iterator, T: Ord {
       |                                           +++++++++++++++++++++++++
    ```
    
    After:
    
    ```
    error[E0599]: the method `cmp` exists for reference `&T`, but its trait bounds were not satisfied
      --> $DIR/method-on-unbounded-type-param.rs:5:10
       |
    LL |     (&a).cmp(&b)
       |          ^^^ method cannot be called on `&T` due to unsatisfied trait bounds
       |
       = note: the following trait bounds were not satisfied:
               `T: Ord`
               which is required by `&T: Ord`
               `&T: Iterator`
               which is required by `&mut &T: Iterator`
               `T: Iterator`
               which is required by `&mut T: Iterator`
       = help: items from traits can only be used if the type parameter is bounded by the trait
    help: the following traits define an item `cmp`, perhaps you need to restrict type parameter `T` with one of them:
       |
    LL | fn g<T: Ord>(a: T, b: T) -> std::cmp::Ordering {
       |       +++++
    LL | fn g<T: Iterator>(a: T, b: T) -> std::cmp::Ordering {
       |       ++++++++++
    ```
    
    Fix rust-lang#108428.
    estebank committed Jan 30, 2024
    Configuration menu
    Copy the full SHA
    5c41409 View commit details
    Browse the repository at this point in the history

Commits on Feb 4, 2024

  1. Make Diagnostic::is_error return false for Level::FailureNote.

    It doesn't affect behaviour, but makes sense with (a) `FailureNote` having
    `()` as its emission guarantee, and (b) in `Level` the `is_error` levels
    now are all listed before the non-`is_error` levels.
    nnethercote committed Feb 4, 2024
    Configuration menu
    Copy the full SHA
    e8c3cbf View commit details
    Browse the repository at this point in the history
  2. Tighten the assertion in downgrade_to_delayed_bug.

    I.e. `Bug` and `Fatal` level diagnostics are never downgraded.
    nnethercote committed Feb 4, 2024
    Configuration menu
    Copy the full SHA
    5dd0431 View commit details
    Browse the repository at this point in the history
  3. Refactor emit_diagnostic.

    - Combine two different blocks involving
      `diagnostic.level.get_expectation_id()` into one.
    - Combine several `if`s involving `diagnostic.level` into a single
      `match`.
    
    This requires reordering some of the operations, but this has no
    functional effect.
    nnethercote committed Feb 4, 2024
    Configuration menu
    Copy the full SHA
    c367386 View commit details
    Browse the repository at this point in the history
  4. Split Level::DelayedBug in two.

    The two kinds of delayed bug have quite different semantics so a
    stronger conceptual separation is nice. (`is_error` is a good example,
    because the two kinds have different behaviour.)
    
    The commit also moves the `DelayedBug` variant after `Error` in `Level`,
    to reflect the fact that it's weaker than `Error` -- it might trigger an
    error but also might not. (The pre-existing `downgrade_to_delayed_bug`
    function also reflects the notion that delayed bugs are lower/after
    normal errors.)
    
    Plus it condenses some of the comments on `Level` into a table, for
    easier reading, and introduces `can_be_top_or_sub` to indicate which
    levels can be used in top-level diagnostics vs. subdiagnostics.
    
    Finally, it renames `DiagCtxtInner::span_delayed_bugs` as
    `DiagCtxtInner::delayed_bugs`. The `span_` prefix is unnecessary because
    some delayed bugs don't have a span.
    nnethercote committed Feb 4, 2024
    Configuration menu
    Copy the full SHA
    59e0bc2 View commit details
    Browse the repository at this point in the history

Commits on Feb 5, 2024

  1. cleanup effect var handling

    lcnr committed Feb 5, 2024
    Configuration menu
    Copy the full SHA
    9cd6c68 View commit details
    Browse the repository at this point in the history
  2. Make Emitter::emit_diagnostic consuming.

    All the other `emit`/`emit_diagnostic` methods were recently made
    consuming (e.g. rust-lang#119606), but this one wasn't. But it makes sense to.
    
    Much of this is straightforward, and lots of `clone` calls are avoided.
    There are a couple of tricky bits.
    - `Emitter::primary_span_formatted` no longer takes a `Diagnostic` and
      returns a pair. Instead it takes the two fields from `Diagnostic` that
      it used (`span` and `suggestions`) as `&mut`, and modifies them. This
      is necessary to avoid the cloning of `diag.children` in two emitters.
    - `from_errors_diagnostic` is rearranged so various uses of `diag` occur
      before the consuming `emit_diagnostic` call.
    nnethercote committed Feb 5, 2024
    Configuration menu
    Copy the full SHA
    d9508a1 View commit details
    Browse the repository at this point in the history
  3. Rollup merge of rust-lang#120023 - klensy:tidy-alloc, r=Mark-Simulacrum

    tidy: reduce allocs
    
    this reduces allocs in tidy from (dhat output)
    
    ```
    ==31349== Total:     1,365,199,543 bytes in 4,774,213 blocks
    ==31349== At t-gmax: 10,975,708 bytes in 66,093 blocks
    ==31349== At t-end:  2,880,947 bytes in 12,332 blocks
    ==31349== Reads:     5,210,008,956 bytes
    ==31349== Writes:    1,280,920,127 bytes
    ```
    to
    ```
    ==66633== Total:     791,565,538 bytes in 3,503,144 blocks
    ==66633== At t-gmax: 10,914,511 bytes in 65,997 blocks
    ==66633== At t-end:  395,531 bytes in 941 blocks
    ==66633== Reads:     4,249,388,949 bytes
    ==66633== Writes:    814,119,580 bytes
    ```
    
    by wrapping regex and updating `ignore` (effect probably not only from `ignore`, didn't measured)
    matthiaskrgr committed Feb 5, 2024
    Configuration menu
    Copy the full SHA
    09b9ec0 View commit details
    Browse the repository at this point in the history
  4. Rollup merge of rust-lang#120396 - estebank:method-on-unbounded-type-…

    …param, r=nnethercote
    
    Account for unbounded type param receiver in suggestions
    
    When encountering
    
    ```rust
    fn f<T>(a: T, b: T) -> std::cmp::Ordering {
        a.cmp(&b) //~ ERROR E0599
    }
    ```
    
    output
    
    ```
    error[E0599]: no method named `cmp` found for type parameter `T` in the current scope
      --> $DIR/method-on-unbounded-type-param.rs:2:7
       |
    LL | fn f<T>(a: T, b: T) -> std::cmp::Ordering {
       |      - method `cmp` not found for this type parameter
    LL |     a.cmp(&b)
       |       ^^^ method cannot be called on `T` due to unsatisfied trait bounds
       |
       = help: items from traits can only be used if the type parameter is bounded by the trait
    help: the following traits define an item `cmp`, perhaps you need to restrict type parameter `T` with one of them:
       |
    LL | fn f<T: Ord>(a: T, b: T) -> std::cmp::Ordering {
       |       +++++
    LL | fn f<T: Iterator>(a: T, b: T) -> std::cmp::Ordering {
       |       ++++++++++
    ```
    
    Fix rust-lang#120186.
    matthiaskrgr committed Feb 5, 2024
    Configuration menu
    Copy the full SHA
    cc9d10c View commit details
    Browse the repository at this point in the history
  5. Rollup merge of rust-lang#120435 - chenyukang:yukang-fix-120427-cfg-n…

    …ame, r=Urgau,Nilstrieb
    
    Suggest name value cfg when only value is used for check-cfg
    
    Fixes rust-lang#120427
    r? ``````````@Nilstrieb``````````
    matthiaskrgr committed Feb 5, 2024
    Configuration menu
    Copy the full SHA
    c3f5495 View commit details
    Browse the repository at this point in the history
  6. Rollup merge of rust-lang#120507 - estebank:issue-108428, r=davidtwco

    Account for non-overlapping unmet trait bounds in suggestion
    
    When a method not found on a type parameter could have been provided by any
    of multiple traits, suggest each trait individually, instead of a single
    suggestion to restrict the type parameter with *all* of them.
    
    Before:
    
    ```
    error[E0599]: the method `cmp` exists for reference `&T`, but its trait bounds were not satisfied
      --> $DIR/method-on-unbounded-type-param.rs:5:10
       |
    LL |     (&a).cmp(&b)
       |          ^^^ method cannot be called on `&T` due to unsatisfied trait bounds
       |
       = note: the following trait bounds were not satisfied:
               `T: Ord`
               which is required by `&T: Ord`
               `&T: Iterator`
               which is required by `&mut &T: Iterator`
               `T: Iterator`
               which is required by `&mut T: Iterator`
    help: consider restricting the type parameters to satisfy the trait bounds
       |
    LL | fn g<T>(a: T, b: T) -> std::cmp::Ordering where T: Iterator, T: Ord {
       |                                           +++++++++++++++++++++++++
    ```
    
    After:
    
    ```
    error[E0599]: the method `cmp` exists for reference `&T`, but its trait bounds were not satisfied
      --> $DIR/method-on-unbounded-type-param.rs:5:10
       |
    LL |     (&a).cmp(&b)
       |          ^^^ method cannot be called on `&T` due to unsatisfied trait bounds
       |
       = note: the following trait bounds were not satisfied:
               `T: Ord`
               which is required by `&T: Ord`
               `&T: Iterator`
               which is required by `&mut &T: Iterator`
               `T: Iterator`
               which is required by `&mut T: Iterator`
       = help: items from traits can only be used if the type parameter is bounded by the trait
    help: the following traits define an item `cmp`, perhaps you need to restrict type parameter `T` with one of them:
       |
    LL | fn g<T: Ord>(a: T, b: T) -> std::cmp::Ordering {
       |       +++++
    LL | fn g<T: Iterator>(a: T, b: T) -> std::cmp::Ordering {
       |       ++++++++++
    ```
    
    Fix rust-lang#108428.
    
    Follow up to rust-lang#120396, only last commit is relevant.
    matthiaskrgr committed Feb 5, 2024
    Configuration menu
    Copy the full SHA
    1866d1c View commit details
    Browse the repository at this point in the history
  7. Rollup merge of rust-lang#120520 - nnethercote:rename-good-path, r=ol…

    …i-obk
    
    Some cleanups around diagnostic levels.
    
    Plus some refactoring in and around diagnostic levels and emission. Details in the individual commit logs.
    
    r? `@oli-obk`
    matthiaskrgr committed Feb 5, 2024
    Configuration menu
    Copy the full SHA
    ba7a47f View commit details
    Browse the repository at this point in the history
  8. Rollup merge of rust-lang#120575 - nnethercote:simplify-codegen-diag-…

    …handling, r=estebank
    
    Simplify codegen diagnostic handling
    
    Some nice improvements. Details in the individual commit logs.
    
    r? `@estebank`
    matthiaskrgr committed Feb 5, 2024
    Configuration menu
    Copy the full SHA
    7fc5079 View commit details
    Browse the repository at this point in the history
  9. Rollup merge of rust-lang#120670 - lcnr:effect-var-storage, r=fee1-dead

    cleanup effect var handling
    
    r? types
    matthiaskrgr committed Feb 5, 2024
    Configuration menu
    Copy the full SHA
    937bf02 View commit details
    Browse the repository at this point in the history