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 10 pull requests #92826

Closed
wants to merge 47 commits into from

Commits on Oct 22, 2021

  1. Try commiting again

    seanchen1991 committed Oct 22, 2021
    Configuration menu
    Copy the full SHA
    59df6c8 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    6a59d0e View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    c6de413 View commit details
    Browse the repository at this point in the history

Commits on Oct 27, 2021

  1. Configuration menu
    Copy the full SHA
    c0f14cb View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    aa853bd View commit details
    Browse the repository at this point in the history
  3. Format doctest

    seanchen1991 committed Oct 27, 2021
    Configuration menu
    Copy the full SHA
    d2f49ee View commit details
    Browse the repository at this point in the history
  4. Fix broken doctest

    seanchen1991 committed Oct 27, 2021
    Configuration menu
    Copy the full SHA
    32bcb81 View commit details
    Browse the repository at this point in the history

Commits on Dec 14, 2021

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

Commits on Dec 16, 2021

  1. Configuration menu
    Copy the full SHA
    689a868 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    5c46002 View commit details
    Browse the repository at this point in the history
  3. Prove obligations to termination instead of ignoring ambiguities.

    Sometimes an obligation depends on a later one, so we can't just process them in order like it was done previously.
    
    This is not a problem in our test suite, but there may be ICEs out there and it will definitely be a problem with lazy TAIT.
    oli-obk committed Dec 16, 2021
    Configuration menu
    Copy the full SHA
    bdeeb07 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    4420cc3 View commit details
    Browse the repository at this point in the history
  5. add a panicking example

    yaahc committed Dec 16, 2021
    Configuration menu
    Copy the full SHA
    078b112 View commit details
    Browse the repository at this point in the history
  6. more docs improvements

    yaahc committed Dec 16, 2021
    Configuration menu
    Copy the full SHA
    9be1cc9 View commit details
    Browse the repository at this point in the history

Commits on Dec 17, 2021

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

Commits on Dec 20, 2021

  1. Configuration menu
    Copy the full SHA
    341d65d View commit details
    Browse the repository at this point in the history
  2. [code coverage] Fix missing dead code in modules that are never called

    The issue here is that the logic used to determine which CGU to put the
    dead function stubs in doesn't handle cases where a module is never
    assigned to a CGU.
    
    The partitioning logic also caused issues in rust-lang#85461 where inline
    functions were duplicated into multiple CGUs resulting in duplicate
    symbols.
    
    This commit fixes the issue by removing the complex logic used to assign
    dead code stubs to CGUs and replaces it with a much simplier model: we
    pick one CGU to hold all the dead code stubs. We pick a CGU which has
    exported items which increases the likelihood the linker won't throw
    away our dead functions and we pick the smallest to minimize the impact
    on compilation times for crates with very large CGUs.
    
    Fixes rust-lang#86177
    Fixes rust-lang#85718
    Fixes rust-lang#79622
    wesleywiser committed Dec 20, 2021
    Configuration menu
    Copy the full SHA
    ef57f24 View commit details
    Browse the repository at this point in the history

Commits on Dec 27, 2021

  1. Address review comments

    wesleywiser committed Dec 27, 2021
    Configuration menu
    Copy the full SHA
    ebc0d0d View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    336c85a View commit details
    Browse the repository at this point in the history

Commits on Dec 28, 2021

  1. Configuration menu
    Copy the full SHA
    544a6bb View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    0f8415b View commit details
    Browse the repository at this point in the history

Commits on Jan 7, 2022

  1. Make rlib metadata strip works with MIPSr6 architecture

    Because MIPSr6 has many differences with previous MIPSr2 arch, the previous rlib metadata stripping code in `rustc_codegen_ssa` is only for MIPSr2/r3/r5 (which share the same elf e_flags).
    This commit fixed this problem. It makes `rustc_codegen_ssa` happy when compiling rustc for MIPSr6 target or hosts.
    Fearyncess committed Jan 7, 2022
    Configuration menu
    Copy the full SHA
    579e8bc View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    11f180f View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    9a337b6 View commit details
    Browse the repository at this point in the history
  4. silence tidy errors

    yaahc committed Jan 7, 2022
    Configuration menu
    Copy the full SHA
    72cb1bd View commit details
    Browse the repository at this point in the history

Commits on Jan 8, 2022

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

Commits on Jan 9, 2022

  1. Configuration menu
    Copy the full SHA
    5ab40c8 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    e6bc0ac View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    268ae9a View commit details
    Browse the repository at this point in the history
  4. Apply suggestions from code review

    Use "(associated) function" terminology instead of "method".
    
    Co-authored-by: Daniel Henry-Mantilla <[email protected]>
    WaffleLapkin and danielhenrymantilla committed Jan 9, 2022
    Configuration menu
    Copy the full SHA
    96b2f8a View commit details
    Browse the repository at this point in the history
  5. rustc_metadata: Stop passing CrateMetadataRef by reference

    It's already a (fat) reference.
    Double referencing it creates lifetime issues for its methods that want to return iterators.
    petrochenkov committed Jan 9, 2022
    Configuration menu
    Copy the full SHA
    c4471b0 View commit details
    Browse the repository at this point in the history

Commits on Jan 10, 2022

  1. Fix #[rustc_must_implement_one_of]

    This adds the old, pre 90639 `is_implemented` that previously only was
    true if the implementation of the item was from the given impl block and
    not from the trait default.
    WaffleLapkin committed Jan 10, 2022
    Configuration menu
    Copy the full SHA
    f64daff View commit details
    Browse the repository at this point in the history
  2. Ignore unused_mod.rs file in code coverage results

    As discussed in
    rust-lang#92142 (comment),
    tests that contain multiple files order their results differently on
    Windows and Linux which the test runner currently can't handle
    correctly. For now, ignore the "bin" part of the test and only include
    the unused library dependency which is what the test really cares about
    anyway.
    wesleywiser committed Jan 10, 2022
    Configuration menu
    Copy the full SHA
    e9cac4c View commit details
    Browse the repository at this point in the history

Commits on Jan 11, 2022

  1. Add a test for ungated #[rustc_must_implement_one_of]

    This test checks that `#[rustc_must_implement_one_of]` is gated behind
    `#![feature(rustc_attrs)]`.
    WaffleLapkin committed Jan 11, 2022
    Configuration menu
    Copy the full SHA
    4ccfa97 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    4193f2d View commit details
    Browse the repository at this point in the history

Commits on Jan 12, 2022

  1. Update cargo

    ehuss committed Jan 12, 2022
    Configuration menu
    Copy the full SHA
    66f1e32 View commit details
    Browse the repository at this point in the history
  2. std::path::absolute

    ChrisDenton authored and Mark-Simulacrum committed Jan 12, 2022
    Configuration menu
    Copy the full SHA
    232f4b4 View commit details
    Browse the repository at this point in the history
  3. Rollup merge of rust-lang#90001 - Fearyncess:master, r=alexcrichton

    Make rlib metadata strip works with MIPSr6 architecture
    
    Because MIPSr6 has many differences with previous MIPSr2 arch, the previous rlib metadata stripping code in `rustc_codegen_ssa` is only for MIPSr2/r3/r5 (which share the same elf e_flags).
    
    This commit fixed this problem. It makes `rustc_codegen_ssa` happy when compiling rustc for MIPSr6 target or hosts.
    
    e_flags REF: https://github.com/llvm/llvm-project/blob/e356027016c6365b3d8924f54c33e2c63d931492/llvm/include/llvm/BinaryFormat/ELF.h#L562
    matthiaskrgr authored Jan 12, 2022
    Configuration menu
    Copy the full SHA
    4c95c6e View commit details
    Browse the repository at this point in the history
  4. Rollup merge of rust-lang#91673 - ChrisDenton:path-absolute, r=Mark-S…

    …imulacrum
    
    `std::path::absolute`
    
    Implements rust-lang#59117 by adding a `std::path::absolute` function that creates an absolute path without reading the filesystem. This is intended to be a drop-in replacement for [`std::fs::canonicalize`](https://doc.rust-lang.org/std/fs/fn.canonicalize.html) in cases where it isn't necessary to resolve symlinks. It can be used on paths that don't exist or where resolving symlinks is unwanted. It can also be used to avoid circumstances where `canonicalize` might otherwise fail.
    
    On Windows this is a wrapper around [`GetFullPathNameW`](https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getfullpathnamew). On Unix it partially implements the POSIX [pathname resolution](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_13) specification, stopping just short of actually resolving symlinks.
    matthiaskrgr authored Jan 12, 2022
    Configuration menu
    Copy the full SHA
    5d977c1 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    35b66a7 View commit details
    Browse the repository at this point in the history
  6. Rollup merge of rust-lang#91938 - yaahc:error-reporter, r=m-ou-se

    Add `std::error::Report` type
    
    This is a continuation of rust-lang#90174, split into a separate PR since I cannot push to `````@seanchen1991````` 's fork
    matthiaskrgr authored Jan 12, 2022
    Configuration menu
    Copy the full SHA
    9bcfb54 View commit details
    Browse the repository at this point in the history
  7. Rollup merge of rust-lang#92006 - oli-obk:welcome_opaque_types_into_t…

    …he_fold, r=nikomatsakis
    
    Welcome opaque types into the fold
    
    r? `@nikomatsakis` because idk who else to bug on the type_op changes
    
    The commits have explanations in them. The TLDR is that
    
    * 5c46002 stops the "recurse and replace" scheme that replaces opaque types with their canonical inference var by just doing that ahead of time
    * bdeeb07 does not affect anything on master afaict, but since opaque types generate obligations when instantiated, and lazy TAIT instantiates opaque types *everywhere*, we need to properly handle obligations here instead of just hoping no problematic obligations ever come up.
    matthiaskrgr authored Jan 12, 2022
    Configuration menu
    Copy the full SHA
    ccfcf42 View commit details
    Browse the repository at this point in the history
  8. Rollup merge of rust-lang#92142 - wesleywiser:fix_codecoverage_partit…

    …ioning, r=tmandry
    
    [code coverage] Fix missing dead code in modules that are never called
    
    The issue here is that the logic used to determine which CGU to put the dead function stubs in doesn't handle cases where a module is never assigned to a CGU (which is what happens when all of the code in the module is dead).
    
    The partitioning logic also caused issues in rust-lang#85461 where inline functions were duplicated into multiple CGUs resulting in duplicate symbols.
    
    This commit fixes the issue by removing the complex logic used to assign dead code stubs to CGUs and replaces it with a much simpler model: we pick one CGU to hold all the dead code stubs. We pick a CGU which has exported items which increases the likelihood the linker won't throw away our dead functions and we pick the smallest to minimize the impact on compilation times for crates with very large CGUs.
    
    Fixes rust-lang#91661
    Fixes rust-lang#86177
    Fixes rust-lang#85718
    Fixes rust-lang#79622
    
    r? `@tmandry`
    cc `@richkadel`
    
    This PR is not urgent so please don't let it interrupt your holidays! 🎄 🎁
    matthiaskrgr authored Jan 12, 2022
    Configuration menu
    Copy the full SHA
    219c5d3 View commit details
    Browse the repository at this point in the history
  9. Rollup merge of rust-lang#92164 - WaffleLapkin:rustc_must_implement_o…

    …ne_of_attr, r=Aaron1011
    
    Implement `#[rustc_must_implement_one_of]` attribute
    
    This PR adds a new attribute — `#[rustc_must_implement_one_of]` that allows changing the "minimal complete definition" of a trait. It's similar to GHC's minimal `{-# MINIMAL #-}` pragma, though `#[rustc_must_implement_one_of]` is weaker atm.
    
    Such attribute was long wanted. It can be, for example, used in `Read` trait to make transitions to recently added `read_buf` easier:
    ```rust
    #[rustc_must_implement_one_of(read, read_buf)]
    pub trait Read {
        fn read(&mut self, buf: &mut [u8]) -> Result<usize> {
            let mut buf = ReadBuf::new(buf);
            self.read_buf(&mut buf)?;
            Ok(buf.filled_len())
        }
    
        fn read_buf(&mut self, buf: &mut ReadBuf<'_>) -> Result<()> {
            default_read_buf(|b| self.read(b), buf)
        }
    }
    
    impl Read for Ty0 {}
    //^ This will fail to compile even though all `Read` methods have default implementations
    
    // Both of these will compile just fine
    impl Read for Ty1 {
        fn read(&mut self, buf: &mut [u8]) -> Result<usize> { /* ... */ }
    }
    impl Read for Ty2 {
        fn read_buf(&mut self, buf: &mut ReadBuf<'_>) -> Result<()> { /* ... */ }
    }
    ```
    
    For now, this is implemented as an internal attribute to start experimenting on the design of this feature. In the future we may want to extend it:
    - Allow arbitrary requirements like `a | (b & c)`
    - Allow multiple requirements like
      - ```rust
        #[rustc_must_implement_one_of(a, b)]
        #[rustc_must_implement_one_of(c, d)]
        ```
    - Make it appear in rustdoc documentation
    - Change the syntax?
    - Etc
    
    Eventually, we should make an RFC and make this (or rather similar) attribute public.
    
    ---
    
    I'm fairly new to compiler development and not at all sure if the implementation makes sense, but at least it passes tests :)
    matthiaskrgr authored Jan 12, 2022
    Configuration menu
    Copy the full SHA
    faf8d66 View commit details
    Browse the repository at this point in the history
  10. Rollup merge of rust-lang#92277 - petrochenkov:cmrval2, r=jackh726

    rustc_metadata: Stop passing `CrateMetadataRef` by reference (step 1)
    
    It's already a (fat) reference.
    Double referencing it creates lifetime issues for its methods that want to return iterators.
    
    ---
    Extracted from rust-lang#92245 for a perf run.
    The PR changes a lot of symbol names due to function signature changes, so it's hard to do differential profiling, let's spend some machine time instead.
    matthiaskrgr authored Jan 12, 2022
    Configuration menu
    Copy the full SHA
    801a3b6 View commit details
    Browse the repository at this point in the history
  11. Rollup merge of rust-lang#92334 - dtolnay:rustdocmatcher, r=camelid,G…

    …uillaumeGomez
    
    rustdoc: Preserve rendering of macro_rules matchers when possible
    
    Fixes rust-lang#92331. This approach restores the behavior prior to rust-lang#86282 **if** the matcher token held by the compiler **and** the matcher token found in the source code are identical TokenTrees. Thus rust-lang#86208 remains fixed, but without regressing formatting for the vast majority of macros which are not macro-generated.
    matthiaskrgr authored Jan 12, 2022
    Configuration menu
    Copy the full SHA
    770f532 View commit details
    Browse the repository at this point in the history
  12. Rollup merge of rust-lang#92807 - ehuss:update-cargo, r=ehuss

    Update cargo
    
    6 commits in 358e79fe56fe374649275ca7aebaafd57ade0e8d..06b9d31743210b788b130c8a484c2838afa6fc27
    2022-01-04 18:39:45 +0000 to 2022-01-11 23:47:29 +0000
    - Port cargo to clap3 (rust-lang/cargo#10265)
    - feat: support rustflags per profile (rust-lang/cargo#10217)
    - Make bors ignore the PR template so it doesn't end up in merge messages (rust-lang/cargo#10267)
    - Be resilient to most IO error and filesystem loop while walking dirs (rust-lang/cargo#10214)
    - Remove the option to disable pipelining (rust-lang/cargo#10258)
    - Always ask rustc for messages about artifacts, and always process them (rust-lang/cargo#10255)
    matthiaskrgr authored Jan 12, 2022
    Configuration menu
    Copy the full SHA
    89bf361 View commit details
    Browse the repository at this point in the history