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 9 pull requests #120767

Merged
merged 30 commits into from
Feb 8, 2024
Merged

Rollup of 9 pull requests #120767

merged 30 commits into from
Feb 8, 2024

Commits on Jan 25, 2024

  1. Add tests

    Nadrieril committed Jan 25, 2024
    Configuration menu
    Copy the full SHA
    3ea464f View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    96ff1a4 View commit details
    Browse the repository at this point in the history
  3. Clarify the binding dance

    Nadrieril committed Jan 25, 2024
    Configuration menu
    Copy the full SHA
    e902878 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    09d4613 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    0825ad3 View commit details
    Browse the repository at this point in the history

Commits on Feb 5, 2024

  1. Configuration menu
    Copy the full SHA
    16cbdd0 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    e65abc0 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    1a3214b View commit details
    Browse the repository at this point in the history
  4. Add test.

    cjgillot committed Feb 5, 2024
    Configuration menu
    Copy the full SHA
    c151ed4 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    6fbd761 View commit details
    Browse the repository at this point in the history

Commits on Feb 6, 2024

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

Commits on Feb 7, 2024

  1. Configuration menu
    Copy the full SHA
    363b098 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    a61019b View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    3e8c8d8 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    0a50dba View commit details
    Browse the repository at this point in the history
  5. add test for pretty printing trait objects

    Lukas Markeffsky committed Feb 7, 2024
    Configuration menu
    Copy the full SHA
    fd92021 View commit details
    Browse the repository at this point in the history
  6. improve pretty printing for trait objects

    Lukas Markeffsky committed Feb 7, 2024
    Configuration menu
    Copy the full SHA
    18e5bbf View commit details
    Browse the repository at this point in the history
  7. address review comments and add more tests

    Lukas Markeffsky committed Feb 7, 2024
    Configuration menu
    Copy the full SHA
    c636c7a View commit details
    Browse the repository at this point in the history
  8. Add tests

    Nadrieril committed Feb 7, 2024
    Configuration menu
    Copy the full SHA
    970f46c View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    9dca6be View commit details
    Browse the repository at this point in the history

Commits on Feb 8, 2024

  1. Add SubdiagnosticMessageOp as a trait alias.

    It avoids a lot of repetition.
    nnethercote committed Feb 8, 2024
    Configuration menu
    Copy the full SHA
    6b175a8 View commit details
    Browse the repository at this point in the history
  2. Rollup merge of rust-lang#119592 - petrochenkov:unload, r=compiler-er…

    …rors
    
    resolve: Unload speculatively resolved crates before freezing cstore
    
    Name resolution sometimes loads additional crates to improve diagnostics (e.g. suggest imports).
    Not all of these diagnostics result in errors, sometimes they are just warnings, like in rust-lang#117772.
    
    If additional crates loaded speculatively stay and gets listed by things like `query crates` then they may produce further errors like duplicated lang items, because lang items from speculatively loaded crates are as good as from non-speculatively loaded crates.
    They can probably do things like adding unintended impls from speculatively loaded crates to method resolution as well.
    The extra crates will also get into the crate's metadata as legitimate dependencies.
    
    In this PR I remove the speculative crates from cstore when name resolution is finished and cstore is frozen.
    This is better than e.g. filtering away speculative crates in `query crates` because things like `DefId`s referring to these crates and leaking to later compilation stages can produce ICEs much easier, allowing to detect them.
    
    The unloading could potentially be skipped if any errors were reported (to allow using `DefId`s from speculatively loaded crates for recovery), but I didn't do it in this PR because I haven't seen such cases of recovery. We can reconsider later if any relevant ICEs are reported.
    
    Unblocks rust-lang#117772.
    matthiaskrgr committed Feb 8, 2024
    Configuration menu
    Copy the full SHA
    4e11d03 View commit details
    Browse the repository at this point in the history
  3. Rollup merge of rust-lang#120103 - compiler-errors:concrete-afits, r=…

    …oli-obk
    
    Make it so that async-fn-in-trait is compatible with a concrete future in implementation
    
    There's no technical reason why an AFIT like `async fn foo()` cannot be satisfied with an implementation signature like `fn foo() -> Pin<Box<dyn Future<Output = ()> + 'static>>`.
    
    We rejected this previously because we were uncertain about how AFITs worked with refinement, but I don't believe this needs to be a restriction any longer.
    
    r? oli-obk
    matthiaskrgr committed Feb 8, 2024
    Configuration menu
    Copy the full SHA
    9ec5960 View commit details
    Browse the repository at this point in the history
  4. Rollup merge of rust-lang#120206 - petrochenkov:somehir, r=compiler-e…

    …rrors
    
    hir: Make sure all `HirId`s have corresponding HIR `Node`s
    
    And then remove `tcx.opt_hir_node(hir_id)` in favor of `tcx.hir_node(hir_id)`.
    matthiaskrgr committed Feb 8, 2024
    Configuration menu
    Copy the full SHA
    bf2ba86 View commit details
    Browse the repository at this point in the history
  5. Rollup merge of rust-lang#120214 - Nadrieril:fix-120210, r=pnkfelix

    match lowering: consistently lower bindings deepest-first
    
    Currently when lowering match expressions to MIR, we do a funny little dance with the order of bindings. I attempt to explain it in the third commit: we handle refutable (i.e. needing a test) patterns differently than irrefutable ones. This leads to inconsistencies, as reported in rust-lang#120210. The reason we need a dance at all is for situations like:
    
    ```rust
    fn foo1(x: NonCopyStruct) {
        let y @ NonCopyStruct { copy_field: z } = x;
        // the above should turn into
        let z = x.copy_field;
        let y = x;
    }
    ```
    
    Here the `y ```````@```````` binding will move out of `x`, so we need to copy the field first.
    
    I believe that the inconsistency came about when we fixed rust-lang#69971, and didn't notice that the fix didn't extend to refutable patterns. My guess then is that ordering bindings by "deepest-first, otherwise source order" is a sound choice. This PR implements that (at least I hope, match lowering is hard to follow 🥲).
    
    Fixes rust-lang#120210
    
    r? ```````@oli-obk``````` since you merged the original fix to rust-lang#69971
    cc ```````@matthewjasper```````
    matthiaskrgr committed Feb 8, 2024
    Configuration menu
    Copy the full SHA
    7fb36f2 View commit details
    Browse the repository at this point in the history
  6. Rollup merge of rust-lang#120688 - cjgillot:gvn-partial-move, r=oli-obk

    GVN: also turn moves into copies with projections
    
    Fixes rust-lang#120613
    matthiaskrgr committed Feb 8, 2024
    Configuration menu
    Copy the full SHA
    65aa9ea View commit details
    Browse the repository at this point in the history
  7. Rollup merge of rust-lang#120702 - bvanjoi:fix-120444, r=notriddle

    docs: also check the inline stmt during redundant link check
    
    Fixes rust-lang#120444
    
    This issue was brought about by querying `root::webdavfs::A`, a key that doesn't exist in `doc_link_resolutions`. To avoid a panic, I've altered the gating mechanism to allow this lint pass to be skipped.
    
    I'm not certain if this is the best solution. An alternative approach might be to leverage other info from the name resolutions instead of `doc_link_resolutions`. After all, all we need is to get the resolution from a combination of `(module, name)`. However, I believe they would yield the same outcome, both skipping this lint.
    matthiaskrgr committed Feb 8, 2024
    Configuration menu
    Copy the full SHA
    fec3235 View commit details
    Browse the repository at this point in the history
  8. Rollup merge of rust-lang#120727 - Nadrieril:tweak-int-reporting, r=c…

    …ompiler-errors
    
    exhaustiveness: Prefer "`0..MAX` not covered" to "`_` not covered"
    
    There was an exception when reporting integer ranges as missing, it's been there for as long as I can remember. This PR removes it. I think it's nicer to report "`0..MAX` not covered" than "`_` not covered". This also makes it consistent with enums, where we report individual enum variants in this case (as showcased in the rest of the `empty-match.rs` test).
    
    r? ``@estebank``
    matthiaskrgr committed Feb 8, 2024
    Configuration menu
    Copy the full SHA
    5157190 View commit details
    Browse the repository at this point in the history
  9. Rollup merge of rust-lang#120734 - nnethercote:SubdiagnosticMessageOp…

    …, r=compiler-errors
    
    Add `SubdiagnosticMessageOp` as a trait alias.
    
    It avoids a lot of repetition.
    
    r? matthewjasper
    matthiaskrgr committed Feb 8, 2024
    Configuration menu
    Copy the full SHA
    87e1e05 View commit details
    Browse the repository at this point in the history
  10. Rollup merge of rust-lang#120739 - lukas-code:pp-dyn-assoc, r=compile…

    …r-errors
    
    improve pretty printing for associated items in trait objects
    
    * Don't print a binder in front of associated items, because it's not valid syntax.
      * e.g. print `dyn for<'a> Trait<'a, Assoc = &'a u8>` instead of `dyn for<'a> Trait<'a, for<'a> Assoc = &'a u8>`.
    * Don't print associated items that are implied by a supertrait bound.
      * e.g. if we have `trait Sub: Super<Assoc = u8> {}`, then just print `dyn Sub` instead of `dyn Sub<Assoc = u8>`.
    
    I've added the test in the first commit, so you can see the diff of the compiler output in the second commit.
    matthiaskrgr committed Feb 8, 2024
    Configuration menu
    Copy the full SHA
    a059dd8 View commit details
    Browse the repository at this point in the history