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

Closed
wants to merge 29 commits into from

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. Configuration menu
    Copy the full SHA
    b6aea72 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    7251120 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    898bb7f View commit details
    Browse the repository at this point in the history
  7. 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
  8. 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. 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 7, 2024
    Configuration menu
    Copy the full SHA
    d2f3cdb View commit details
    Browse the repository at this point in the history
  9. 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 7, 2024
    Configuration menu
    Copy the full SHA
    f08623e View commit details
    Browse the repository at this point in the history
  10. 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 7, 2024
    Configuration menu
    Copy the full SHA
    0666cbe View commit details
    Browse the repository at this point in the history
  11. 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 7, 2024
    Configuration menu
    Copy the full SHA
    1e3e4a3 View commit details
    Browse the repository at this point in the history
  12. Rollup merge of rust-lang#120596 - GuillaumeGomez:jump-to-def-non-loc…

    …al-link, r=notriddle
    
    [rustdoc] Correctly generate path for non-local items in source code pages
    
    While browsing some crates using the "jump to def" feature, I realized that a lot of items didn't have a link generated. The reason is because we only cache foreign items if they appear in the documented API. This means that for the others, we need to infer them.
    
    r? `@notriddle`
    matthiaskrgr committed Feb 7, 2024
    Configuration menu
    Copy the full SHA
    9bcf9c5 View commit details
    Browse the repository at this point in the history
  13. 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 7, 2024
    Configuration menu
    Copy the full SHA
    55d078e View commit details
    Browse the repository at this point in the history
  14. 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 7, 2024
    Configuration menu
    Copy the full SHA
    e7e77b4 View commit details
    Browse the repository at this point in the history
  15. 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 7, 2024
    Configuration menu
    Copy the full SHA
    cd54a0d View commit details
    Browse the repository at this point in the history