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

Closed

Commits on Jun 12, 2024

  1. Un-unsafe the StableOrd trait

    Whilst incorrect implementations of this trait can cause miscompilation,
    they cannot cause memory unsafety in rustc.
    eggyal committed Jun 12, 2024
    Configuration menu
    Copy the full SHA
    114dd20 View commit details
    Browse the repository at this point in the history

Commits on Jun 18, 2024

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

Commits on Jun 20, 2024

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

Commits on Jun 21, 2024

  1. Fix a span in parse_ty_bare_fn.

    It currently goes one token too far.
    
    Example: line 259 of `tests/ui/abi/compatibility.rs`:
    ```
    test_abi_compatible!(fn_fn, fn(), fn(i32) -> i32);
    ```
    This commit changes the span for the second element from `fn(),` to
    `fn()`, i.e. removes the extraneous comma.
    
    This doesn't affect any tests. I found it while debugging some other
    code. Not a big deal but an easy fix so I figure it worth doing.
    nnethercote committed Jun 21, 2024
    Configuration menu
    Copy the full SHA
    c39b86a View commit details
    Browse the repository at this point in the history

Commits on Jun 22, 2024

  1. Ensure careful consideration is given by impls

    Added an associated `const THIS_IMPLEMENTATION_HAS_BEEN_TRIPLE_CHECKED`
    to the `StableOrd` trait to ensure that implementors carefully consider
    whether the trait's contract is upheld, as incorrect implementations can
    cause miscompilations.
    eggyal committed Jun 22, 2024
    Configuration menu
    Copy the full SHA
    0e73e70 View commit details
    Browse the repository at this point in the history

Commits on Jun 23, 2024

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

Commits on Jun 24, 2024

  1. Do not ICE when suggesting dereferencing closure arg

    Account for `for` lifetimes when constructing closure to see if dereferencing the return value would be valid.
    
    Fix rust-lang#125634, fix rust-lang#124563.
    estebank committed Jun 24, 2024
    Configuration menu
    Copy the full SHA
    a2298a6 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    6521c39 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    553a690 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    26677eb View commit details
    Browse the repository at this point in the history

Commits on Jun 25, 2024

  1. Configuration menu
    Copy the full SHA
    8016940 View commit details
    Browse the repository at this point in the history
  2. Rollup merge of rust-lang#126326 - eggyal:ununsafe-StableOrd, r=micha…

    …elwoerister
    
    Un-unsafe the `StableOrd` trait
    
    Whilst incorrect implementations of this trait can cause miscompilation, they cannot cause memory unsafety in rustc.
    
    [Discussed on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/182449-t-compiler.2Fhelp/topic/Policy.20of.20.60unsafe.60.20within.20the.20compiler).
    
    cc [MCP 533](rust-lang/compiler-team#533), rust-lang#105175, `@michaelwoerister`
    
    r? `@Nilstrieb`
    compiler-errors authored Jun 25, 2024
    Configuration menu
    Copy the full SHA
    83a7b8f View commit details
    Browse the repository at this point in the history
  3. Rollup merge of rust-lang#126618 - mu001999-contrib:dead/enhance, r=p…

    …nkfelix
    
    Mark assoc tys live only if the corresponding trait is live
    
    r? ```@pnkfelix```
    compiler-errors authored Jun 25, 2024
    Configuration menu
    Copy the full SHA
    50c1fda View commit details
    Browse the repository at this point in the history
  4. Rollup merge of rust-lang#126724 - nnethercote:fix-parse_ty_bare_fn-s…

    …pan, r=compiler-errors
    
    Fix a span in `parse_ty_bare_fn`.
    
    It currently goes one token too far.
    
    Example: line 259 of `tests/ui/abi/compatibility.rs`:
    ```
    test_abi_compatible!(fn_fn, fn(), fn(i32) -> i32);
    ```
    This commit changes the span for the second element from `fn(),` to `fn()`, i.e. removes the extraneous comma.
    
    This doesn't affect any tests. I found it while debugging some other code. Not a big deal but an easy fix so I figure it worth doing.
    
    r? `@spastorino`
    compiler-errors authored Jun 25, 2024
    Configuration menu
    Copy the full SHA
    f9a58c6 View commit details
    Browse the repository at this point in the history
  5. Rollup merge of rust-lang#126746 - compiler-errors:no-rpitit, r=oli-obk

    Deny `use<>` for RPITITs
    
    Precise capturing `use<>` syntax is currently a no-op on RPITITs, since GATs have no variance, so all captured lifetimes are captured invariantly.
    
    We don't currently *need* to support `use<>` on RPITITs, since `use<>` is initially intended for migrating RPIT *overcaptures* from edition 2021->2024, but since RPITITs currently capture all in-scope lifetimes, we'll never need to write `use<>` on an RPITIT.
    
    Eventually, though, it would be desirable to support precise capturing on RPITITs, since RPITITs overcapturing by default can be annoying to some folks. But let's separate that (which will likely require some delicate types team work for adding variances to GATs and adjusting the refinement rules) from the stabilization of the feature for edition 2024.
    
    r? oli-obk cc `@traviscross`
    
    Tracking:
    
    - rust-lang#123432
    compiler-errors authored Jun 25, 2024
    Configuration menu
    Copy the full SHA
    0e91505 View commit details
    Browse the repository at this point in the history
  6. Rollup merge of rust-lang#126868 - bvanjoi:fix-126764, r=davidtwco

    not use offset when there is not ends with brace
    
    Fixes rust-lang#126764
    compiler-errors authored Jun 25, 2024
    Configuration menu
    Copy the full SHA
    f841558 View commit details
    Browse the repository at this point in the history
  7. Rollup merge of rust-lang#126884 - estebank:issue-125634, r=Nadrieril

    Do not ICE when suggesting dereferencing closure arg
    
    Account for `for` lifetimes when constructing closure to see if dereferencing the return value would be valid.
    
    Fix rust-lang#125634, fix rust-lang#124563.
    compiler-errors authored Jun 25, 2024
    Configuration menu
    Copy the full SHA
    6c39e85 View commit details
    Browse the repository at this point in the history
  8. Rollup merge of rust-lang#126915 - SparkyPotato:fix-126903, r=compile…

    …r-errors
    
    Don't suggest awaiting in closure patterns
    
    Fixes rust-lang#126903.
    
    For
    ```rust
    async fn do_async() {}
    
    fn main() {
        Some(do_async()).map(|()| {});
    }
    ```
    the error is now
    ```rust
    error[E0308]: mismatched types
     --> src/main.rs:4:27
      |
    4 |     Some(do_async()).map(|()| {});
      |                           ^^
      |                           |
      |                           expected future, found `()`
      |                           expected due to this
      |
      = note: expected opaque type `impl Future<Output = ()>`
                   found unit type `()`
    ```
    
    Ideally, if `main` were to be `async`, it should be
    ```rs
    error[E0308]: mismatched types
     --> src/main.rs:4:27
      |
    4 |     Some(do_async()).map(|()| {});
      |                           ^^
      |                           |
      |                           expected future, found `()`
      |                           expected due to this
      |
      = note: expected opaque type `impl Future<Output = ()>`
                   found unit type `()`
    help: consider `await`ing on the `Future`
      |
    4 |     Some(do_async().await).map(|()| {});
      |                    ++++++
    ```
    However, this would mean `FnCtx::check_pat_top` would have to be called with an `origin_expr` in `rustc_hir_typeck::check::check_fn`, and that expr would have to be somehow plumbed through `FnCtxt::check_expr_closure` and closure signature deduction. I'm willing to work on the plumbing but unsure how to start.
    compiler-errors authored Jun 25, 2024
    Configuration menu
    Copy the full SHA
    7f8ba07 View commit details
    Browse the repository at this point in the history
  9. Rollup merge of rust-lang#126916 - ferrocene:hoverbear/riscv64gc-gnu-…

    …specify-linker, r=Kobzol
    
    Specify target specific linker for `riscv64gc-gnu` job
    
    In rust-lang#125669 I updated the `riscv64gc-gnu` job to be more in line with other jobs, like the `armhf-gnu` one.
    
    I missed something important, though! Since the `riscv64gc-unknown-linux-gnu` builds go through a cross compiler, invoking `cc` is not correct! That would invoke the `x86_64-unknown-linux-gnu` linker, instead of the `riscv64gc-unknown-linux-gnu` linker.
    
    While developing rust-lang#125669 I assumed this line would have been sufficient, however it was not:
    
    https://github.com/rust-lang/rust/blob/553a69030e5a086eb3841d020db8c9c463948c72/src/ci/docker/host-x86_64/disabled/riscv64gc-gnu/Dockerfile#L27-L28
    
    Unfortunately, without the linker set, `cc` is invoked, and the following linker error occurs:
    
    <details>
    
    <summary>Long output</summary>
    
    ```
    2024-06-21T14:37:54.4786899Z === HAYSTACK ===
    2024-06-21T14:37:54.4787240Z error: linking with `cc` failed: exit status: 1
    2024-06-21T14:37:54.4787589Z   |
    2024-06-21T14:37:54.4806781Z   = note: LC_ALL="C" PATH="/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/bin:/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/bin:/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" VSLANG="1033" "cc" "/tmp/rustc7Ju6va/symbols.o" "inaccessible/tmp/program.program.45572bc5f2b14090-cgu.0.rcgu.o" "inaccessible/tmp/program.dv9uftjrq86w5xa7l2eo7g9l7.rcgu.o" "-Wl,--as-needed" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/run-make/inaccessible-temp-dir/inaccessible-temp-dir/rmake_out" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libstd-bb9ed017b7d70437.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libpanic_unwind-5b34ef68c22a7b9b.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libobject-4b9224407e296f51.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libmemchr-1eaaa8d74bbe0b36.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libaddr2line-b34292f7086867e9.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libgimli-1927540c5dff6690.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/librustc_demangle-ab493befe3742702.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libstd_detect-41195694489636c4.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libhashbrown-6905da49c8a1542a.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/librustc_std_workspace_alloc-bbc6290f03f92349.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libminiz_oxide-7a4683d4a82cf47c.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libadler-071583516cdbce90.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libunwind-d84b176d2f4c1334.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libcfg_if-92b7de0160f87442.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/liblibc-cff1533ea7c26263.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/liballoc-49e374c13f9e6132.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/librustc_std_workspace_core-9389dcc15b2f7f7b.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libcore-46f0fa14905fdc5c.rlib" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib/libcompiler_builtins-20e1af401f90cd1c.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/riscv64gc-unknown-linux-gnu/lib" "-o" "program" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs"
    2024-06-21T14:37:54.4823900Z   = note: /usr/bin/ld: inaccessible/tmp/program.program.45572bc5f2b14090-cgu.0.rcgu.o: Relocations in generic ELF (EM: 243)
    2024-06-21T14:37:54.4825032Z           /usr/bin/ld: inaccessible/tmp/program.program.45572bc5f2b14090-cgu.0.rcgu.o: Relocations in generic ELF (EM: 243)
    2024-06-21T14:37:54.4826130Z           /usr/bin/ld: inaccessible/tmp/program.program.45572bc5f2b14090-cgu.0.rcgu.o: Relocations in generic ELF (EM: 243)
    2024-06-21T14:37:54.4827200Z           /usr/bin/ld: inaccessible/tmp/program.program.45572bc5f2b14090-cgu.0.rcgu.o: Relocations in generic ELF (EM: 243)
    2024-06-21T14:37:54.4828279Z           /usr/bin/ld: inaccessible/tmp/program.program.45572bc5f2b14090-cgu.0.rcgu.o: Relocations in generic ELF (EM: 243)
    2024-06-21T14:37:54.4829365Z           /usr/bin/ld: inaccessible/tmp/program.program.45572bc5f2b14090-cgu.0.rcgu.o: Relocations in generic ELF (EM: 243)
    2024-06-21T14:37:54.4830474Z           /usr/bin/ld: inaccessible/tmp/program.program.45572bc5f2b14090-cgu.0.rcgu.o: Relocations in generic ELF (EM: 243)
    2024-06-21T14:37:54.4831554Z           /usr/bin/ld: inaccessible/tmp/program.program.45572bc5f2b14090-cgu.0.rcgu.o: Relocations in generic ELF (EM: 243)
    2024-06-21T14:37:54.4833002Z           /usr/bin/ld: inaccessible/tmp/program.program.45572bc5f2b14090-cgu.0.rcgu.o: Relocations in generic ELF (EM: 243)
    2024-06-21T14:37:54.4834116Z           /usr/bin/ld: inaccessible/tmp/program.program.45572bc5f2b14090-cgu.0.rcgu.o: Relocations in generic ELF (EM: 243)
    2024-06-21T14:37:54.4835237Z           /usr/bin/ld: inaccessible/tmp/program.program.45572bc5f2b14090-cgu.0.rcgu.o: error adding symbols: file in wrong format
    2024-06-21T14:37:54.4835971Z           collect2: error: ld returned 1 exit status
    2024-06-21T14:37:54.4836449Z
    2024-06-21T14:37:54.4836584Z
    2024-06-21T14:37:54.4836744Z error: aborting due to 1 previous error
    2024-06-21T14:37:54.4836983Z
    2024-06-21T14:37:54.4836990Z
    2024-06-21T14:37:54.4837083Z === NEEDLE ===
    2024-06-21T14:37:54.4837518Z failed to find or create the directory specified by `--temps-dir`
    2024-06-21T14:37:54.4838250Z thread 'main' panicked at /checkout/tests/run-make/inaccessible-temp-dir/rmake.rs:35:14:
    2024-06-21T14:37:54.4838801Z needle was not found in haystack
    2024-06-21T14:37:54.4839270Z note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    2024-06-21T14:37:54.4840125Z thread 'main' panicked at /checkout/tests/run-make/inaccessible-temp-dir/rmake.rs:27:5:
    2024-06-21T14:37:54.4840759Z called `Result::unwrap()` on an `Err` value: Any { .. }
    2024-06-21T14:37:54.4841194Z ------------------------------------------
    ```
    
    </details>
    
    By setting `--set target.riscv64gc-unknown-linux-gnu.linker=riscv64-linux-gnu-gcc` the correct linker is invoked.
    
    ## Testing
    
    > [!NOTE]
    > `riscv64gc-unknown-linux-gnu` is a [**Tier 2 with Host Tools** platform](https://doc.rust-lang.org/beta/rustc/platform-support.html), all tests may not necessarily pass! This change should only make fix existing broken tests (like `inaccessible-temp-dir`) while introducing no new breakage.
    
    You can test out the job locally:
    
    ```sh
    mv src/ci/docker/host-x86_64/disabled/riscv64gc-gnu src/ci/docker/host-x86_64/riscv64gc-gnu
    DEPLOY=1 ./src/ci/docker/run.sh riscv64gc-gnu
    ```
    compiler-errors authored Jun 25, 2024
    Configuration menu
    Copy the full SHA
    72965db View commit details
    Browse the repository at this point in the history
  10. Rollup merge of rust-lang#126926 - Zalathar:candidate-per-arm, r=Nadr…

    …ieril
    
    Tweak a confusing comment in `create_match_candidates`
    
    This comment was accurate at the time it was written, but various later changes reshuffled things in ways that caused the existing comment to become confusing.
    
    I've therefore tried to clarify that *these* candidates are 1:1 with match arms, while also warning that that isn't the case in general.
    compiler-errors authored Jun 25, 2024
    Configuration menu
    Copy the full SHA
    a765000 View commit details
    Browse the repository at this point in the history