bors [Fri, 12 Aug 2022 09:49:55 +0000 (09:49 +0000)]
Auto merge of #99624 - vincenzopalazzo:macros/unix_error, r=Amanieu
promote debug_assert to assert when possible and useful
This PR fixed a very old issue https://github.com/rust-lang/rust/issues/94705 to clarify and improve the POSIX error checking, and some of the checks are skipped because can have no benefit, but I'm sure that this can open some interesting discussion.
bors [Fri, 12 Aug 2022 06:45:35 +0000 (06:45 +0000)]
Auto merge of #100435 - ehuss:update-cargo, r=ehuss
Update cargo
8 commits in ce40690a5e4e315d3dab0aae1eae69d0252c52ac..efd4ca3dc0b89929dc8c5f5c023d25978d76cb61
2022-08-09 22:32:17 +0000 to 2022-08-12 01:28:28 +0000
- Use `std::thread::scope` to replace crossbeam (rust-lang/cargo#10977)
- [docs] Remove extra "in" from `cargo-test.md` (rust-lang/cargo#10978)
- Enable two windows tests (rust-lang/cargo#10930)
- Improve error msg for get target runner (rust-lang/cargo#10968)
- Ensure rustc-echo-wrapper works with an overridden build.target-dir (rust-lang/cargo#10962)
- Switch back to `available_parallelism` (rust-lang/cargo#10969)
- Only override published resolver when the workspace is different (rust-lang/cargo#10961)
- Add `CARGO_LOG` to "Environment variables Cargo reads" (rust-lang/cargo#10967)
bors [Fri, 12 Aug 2022 02:58:51 +0000 (02:58 +0000)]
Auto merge of #99464 - nikic:llvm-15, r=cuviper
Update to LLVM 15
For preliminary testing. Some LLVM 15 compatibility fixes were applied separately in #99512.
Release timeline:
* LLVM 15 branched on Jul 26.
* The final LLVM 15.0.0 release is scheduled for Sep 6.
* Current nightly (1.65.0) is scheduled for Nov 3.
Changes in this PR (apart from the LLVM update):
* Pass `--set llvm.allow-old-toolchain` for many Docker images. LLVM 16 will require GCC >= 7.1, while LLVM 15 still allows older compilers with an option. Specify the option for builders still using GCC 5.4. #95026 updated some of the used toolchains, but not all.
* Use the `+atomics-32` target feature for thumbv6m.
* Explicitly link libatomic when cross-compiling LLVM to 32-bit target.
* Explicitly disable zstd support, to avoid libzstd.so dependency.
Matthias Krüger [Thu, 11 Aug 2022 20:53:06 +0000 (22:53 +0200)]
Rollup merge of #100350 - jhpratt:stringify-vis, r=cjgillot
Stringify non-shorthand visibility correctly
This makes `stringify!(pub(in crate))` evaluate to `pub(in crate)` rather than `pub(crate)`, matching the behavior before the `crate` shorthand was removed. Further, this changes `stringify!(pub(in super))` to evaluate to `pub(in super)` rather than the current `pub(super)`. If the latter is not desired (it is _technically_ breaking), it can be undone.
Matthias Krüger [Thu, 11 Aug 2022 20:53:02 +0000 (22:53 +0200)]
Rollup merge of #99992 - jyn514:shell-scripts, r=Mark-Simulacrum
Add `x.sh` and `x.ps1` shell scripts
This is a more ambitious version of https://github.com/rust-lang/rust/pull/98716.
It still changes the x.py shebang back to python3, for compatibility with non-Unix systems,
but also adds alternative entrypoints for systems without `python3` installed.
These scripts will be necessary for the rust entrypoint (#94829), so I see
little downside in adding them early.
I'll update the dev-guide to suggest using these instead of x.py once this is merged.
Matthias Krüger [Thu, 11 Aug 2022 20:53:01 +0000 (22:53 +0200)]
Rollup merge of #99511 - RalfJung:raw_eq, r=wesleywiser
make raw_eq precondition more restrictive
Specifically, don't allow comparing pointers that way. Comparing pointers is subtle because you have to talk about what happens to the provenance.
This matches what [Miri already implements](https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=9eb1dfb8a61b5a2d4a7cee43df2717af), and all existing users are fine with this.
If raw_eq on pointers is ever desired, we can adjust the intrinsic spec and Miri implementation as needed, but for now that seems just unnecessary. Also, this is a const intrinsic, and in const, comparing pointers this way is *not possible* -- so if we allow the intrinsic to compare pointers in general, we need to impose an extra restrictions saying that in const-context, pointers are *not* okay.
Matthias Krüger [Thu, 11 Aug 2022 20:52:57 +0000 (22:52 +0200)]
Rollup merge of #99337 - jsha:simplify-highlight, r=GuillaumeGomez
rustdoc: simplify highlight.rs
Split render_with_highlighting, which took many optional parameters, into three functions for specific purposes, which each take a smaller number of mostly required parameters.
Remove some plumbing to pass through an "edition" parameter, which was used solely to avoid highlighting some 2021 Edition keywords in non-2021 code.
I've tested a build of std docs before and after, and this does not change the generated HTML at all.
Followup from https://github.com/rust-lang/rust/pull/91264#discussion_r901151101
bors [Thu, 11 Aug 2022 18:05:55 +0000 (18:05 +0000)]
Auto merge of #100416 - Dylan-DPC:rollup-m344lh1, r=Dylan-DPC
Rollup of 11 pull requests
Successful merges:
- #92744 (Check if enum from foreign crate has any non exhaustive variants when attempting a cast)
- #99110 (Determine match_has_guard from candidates instead of looking up thir table again)
- #100184 (Stabilize ptr_const_cast)
- #100192 ( Remove duplicated temporaries creating during box derefs elaboration)
- #100232 (Do not consider method call receiver as an argument in AST.)
- #100287 (linux: Use `pthread_setname_np` instead of `prctl`)
- #100351 (Use `&mut Diagnostic` instead of `&mut DiagnosticBuilder` unless needed)
- #100370 (Remove more Clean trait implementations)
- #100391 (Improve size assertions)
- #100398 (Improve `-Zhir-stats`)
- #100403 (Improve error messages when running rustdoc GUI tests)
Dylan DPC [Thu, 11 Aug 2022 17:17:07 +0000 (22:47 +0530)]
Rollup merge of #100403 - GuillaumeGomez:improve-messages, r=jsha
Improve error messages when running rustdoc GUI tests
There was already a message on how to install `browser-ui-test`, so nothing to be done there. However, we didn't show how to update its version, so the first commit adds it.
Another pain point was how to fix the unexpected crash in `browser-ui-test` (because of a missing `--no-sandbox`, still no idea why it became mandatory a few months ago on some linux distributions...). It now looks like this:
```console
Running 1 rustdoc-gui (8 concurrently) ...
ERROR: puppeteer failed when trying to create a new page. Please try again with `--no-sandbox`
`browser-ui-test` crashed unexpectedly. Please try again with adding `--test-args --no-sandbox` at the end. For example: `x.py test src/test/rustdoc-gui --test-args --no-sandbox`
Build completed unsuccessfully in 0:00:03
```
Thanks to `@jsha` for suggesting these improvements!
Dylan DPC [Thu, 11 Aug 2022 17:17:02 +0000 (22:47 +0530)]
Rollup merge of #100287 - cuviper:no-linux-prctl, r=Mark-Simulacrum
linux: Use `pthread_setname_np` instead of `prctl`
This function is available on Linux since glibc 2.12, musl 1.1.16, and
uClibc 1.0.20. The main advantage over `prctl` is that it properly
represents the pointer argument, rather than a multi-purpose `long`,
so we're better representing strict provenance (#95496).
Dylan DPC [Thu, 11 Aug 2022 17:16:59 +0000 (22:46 +0530)]
Rollup merge of #100192 - tmiasko:rm-duplicated-locals, r=nagisa
Remove duplicated temporaries creating during box derefs elaboration
Temporaries created with `MirPatch::new_temp` will be declared after
patch application. Remove manually created duplicate declarations.
Removing duplicates exposes another issue. Visitor elaborates
terminator twice and attempts to access new, but not yet available,
local declarations. Remove duplicated call to `visit_terminator`.
bors [Thu, 11 Aug 2022 10:47:48 +0000 (10:47 +0000)]
Auto merge of #100315 - compiler-errors:norm-ct-in-proj, r=lcnr
Keep going if normalized projection has unevaluated consts in `QueryNormalizer`
#100312 was the wrong approach, I think this is the right one.
When normalizing a type, if we see that it's a projection, we currently defer to `tcx.normalize_projection_ty`, which normalizes the projections away but doesn't touch the unevaluated constants. So now we just continue to fold the type if it has unevaluated constants so we make sure to evaluate those too, if we can.
Currently it's reported as either `TraitItem` or `ImplItem`. This commit
changes it to `AssocItem`, because having the report match the type name
is (a) consistent with other types, and (b) the trait/impl split isn't
that important here.
This commit:
- Adds a comment explaining which `visit_*` methods should be
implemented.
- Adds and removes some `visit_*` methods accordingly, improving
coverage, and avoiding some double counting.
bors [Thu, 11 Aug 2022 02:46:32 +0000 (02:46 +0000)]
Auto merge of #100298 - BlackHoleFox:hashmap_keygen_cleanup, r=Mark-Simulacrum
Replace pointer casting in hashmap_random_keys with safe code
The old code was unnecessarily unsafe and relied on the layout of tuples always being the same as an array of the same size (which might be bad with `-Z randomize-layout`)?
The replacement has [identical codegen](https://rust.godbolt.org/z/qxsvdb8nx), so it seems like a reasonable change.
bors [Wed, 10 Aug 2022 18:05:34 +0000 (18:05 +0000)]
Auto merge of #100378 - compiler-errors:rollup-8vzsd92, r=compiler-errors
Rollup of 8 pull requests
Successful merges:
- #100286 (Add support for link-flavor rust-lld for macOS)
- #100317 (Remove logic related to deprecated nvptx-nvidia-cuda (32-bit) target)
- #100339 (Fixes bootstrap panic when running x fmt --check )
- #100348 (Add regression test for #93205)
- #100349 (Refactor: remove a type string comparison)
- #100353 (Fix doc links in core::time::Duration::as_secs)
- #100359 (Special-case references to leafs in valtree pretty-printing)
- #100371 (Inline CStr::from_bytes_with_nul_unchecked::rt_impl)
Michael Goulet [Wed, 10 Aug 2022 16:28:18 +0000 (09:28 -0700)]
Rollup merge of #100286 - Thog:rust-lld-macosx-target, r=petrochenkov
Add support for link-flavor rust-lld for macOS
Also refactor iOS, watchOS and tvOS common code.
The ``-arch`` argument was moved to the ``apple_base`` module instead of the target definitions for macOS.
As ld64 requires ``-syslibroot`` to be passed, ``add_apple_sdk`` was modified accordingly.
bors [Wed, 10 Aug 2022 15:22:26 +0000 (15:22 +0000)]
Auto merge of #100260 - ehuss:compiletest-target-cfg, r=Mark-Simulacrum
compiletest: use target cfg instead of hard-coded tables
This changes compiletest to use `rustc --print=cfg` to dynamically determine the properties of a target when matching `ignore` and `only` rules instead of using hard-coded tables or target-triple parsing (which don't always follow the `<arch><sub>-<vendor>-<sys>-<abi>` pattern). The benefit here is that it will more accurately match the target properties, and not require maintaining these extra tables.
This also adds matching the `target_family` in ignore rules. The primary benefit here is so that `ignore-wasm` works as expected (matching all wasm-like targets). There were already several tests that had `ignore-wasm` in them (which previously had no effect), so it is evident that some people expected that to work. This also adds `ignore-unix/only-unix`.
There is some risk that this changes the behavior from before since the tables aren't quite the same as the target properties. However, I did fairly extensive comparisons to see what would be different. https://gist.github.com/ehuss/5bf7ab347605160cefb6f84ba5ea5f6b contains a full list of differences for all targets for all tests. I do not think any of the affected target/test combinations are things that are actually tested in CI. I tested several of the more unusual test images (test-various, dist-various-1, wasm32), and they seem fine.
A summary of most of the reasons behind the differences:
- wasm64-unknown-unknown wasm32-wasi now match "wasm"
- Targets now match "gnu" because they have target_env=gnu
- aarch64-wrs-vxworks
- armv7-wrs-vxworks-eabihf
- i686-wrs-vxworks
- powerpc-wrs-vxworks
- powerpc64-wrs-vxworks
- x86_64-wrs-vxworks
- wasm64-unknown-unknown now matches wasm64
- x86_64-unknown-none-linuxkernel no longer matches "linux", but will match "gnu" and "none"
- Various arm targets now match "aarch64" or "arm":
- arm64_32-apple-watchos
- armebv7r-none-eabi
- armv6-unknown-freebsd
- armv6-unknown-netbsd-eabihf
- armv6k-nintendo-3ds
- armv7-wrs-vxworks-eabihf
- armv7a-kmc-solid_asp3-eabi
- armv7a-kmc-solid_asp3-eabihf
- armv7a-none-eabi
- armv7a-none-eabihf
- armv7k-apple-watchos
- armv7r-none-eabi
- armv7r-none-eabihf
- Now matches "thumb" and "arm"
- thumbv4t-none-eabi
- thumbv6m-none-eabi
- thumbv7a-pc-windows-msvc
- thumbv7a-uwp-windows-msvc
- thumbv7em-none-eabi
- thumbv7em-none-eabihf
- thumbv7m-none-eabi
- thumbv7neon-linux-androideabi
- thumbv7neon-unknown-linux-gnueabihf
- thumbv7neon-unknown-linux-musleabihf
- thumbv8m.base-none-eabi
- thumbv8m.main-none-eabi
- asmjs-unknown-emscripten now matches "wasm32" because that it is its defined arch
- avr-unknown-gnu-atmega328 now matches "none" (because target_os="none")
- now matches 64bit:
- bpfeb-unknown-none
- bpfel-unknown-none
- sparcv9-sun-solaris
- now matches endian-big:
- m68k-unknown-linux-gnu
- now matches 16bit:
- msp430-none-elf
- now matches 32bit:
- arm64_32-apple-watchos
- now matches riscv32 (and needs-asm-support):
- riscv32gc-unknown-linux-gnu
- riscv32gc-unknown-linux-musl
- riscv32i-unknown-none-elf
- riscv32im-unknown-none-elf
- riscv32imac-unknown-none-elf
- riscv32imac-unknown-xous-elf
- riscv32imc-esp-espidf
- riscv32imc-unknown-none-elf
- riscv64imac-unknown-none-elf
Frank Steffahn [Sun, 3 Jul 2022 18:10:19 +0000 (20:10 +0200)]
Improve crate selection on rustdoc search results page
Resolves all of issue #93240
Reproduces a similar change as #99086, but with improvements
In particular, this PR inlcludes:
* redesigning the crate-search selector so the background color matches its surroundings
* decrease the font of the dropdown menu to a reaonable size
* add a hover effect
* make the color of the arrow theme-dependent, using a surrounding div, with :after pseudo-element
that can then be transformed using CSS filters to approximate the desired color
* fix the text "in" to match the title font
* remove the "for xyz" in the "Results for xyz in [All crates]" title when
searching for search term "xyz"; you can already see what you're searching for
as it's typed in the search bar!
* in line with #99086, handle super-long crate names appropriately without a long <select>
element escaping the screen area; the improvement is that we also keep the title
within a single line now; uses some flex layout shenanigans...
* the margins / paddings are adjusted so the selected label of the <select> fits within
the rest of that title nicely; also some inconsistency in the way that Firefox renders
a <select> with "appearance: none" (roughly 4px more padding left and right of the text
than e.g. Chrome) is worked around, and it now produces a result that looks (essentially)
identical to Chrome
* the color of the help menu and settings menu border in light theme is made to match with
the color of the corresponding buttons, like they do (match) in the ayu theme
* the casing of "All crates" changes to "all crates"
* the new tests from #99086 are temporarily disabled, until they can be adapted later
bors [Wed, 10 Aug 2022 06:09:10 +0000 (06:09 +0000)]
Auto merge of #100356 - matthiaskrgr:rollup-he0vkjc, r=matthiaskrgr
Rollup of 8 pull requests
Successful merges:
- #99573 (Stabilize backtrace)
- #100069 (Add error if link_ordinal used with unsupported link kind)
- #100086 (Add more `// unit-test`s to MIR opt tests)
- #100332 (Rename integer log* methods to ilog*)
- #100334 (Suggest a missing semicolon before an array)
- #100340 (Iterate generics_def_id_map in reverse order to fix P-critical issue)
- #100345 (docs: remove repetition in `is_numeric` function docs)
- #100352 (Update cargo)
Matthias Krüger [Wed, 10 Aug 2022 05:21:40 +0000 (07:21 +0200)]
Rollup merge of #100352 - ehuss:update-cargo, r=ehuss
Update cargo
7 commits in 4fd148c47e733770c537efac5220744945d572ef..ce40690a5e4e315d3dab0aae1eae69d0252c52ac
2022-08-03 15:03:52 +0000 to 2022-08-09 22:32:17 +0000
- Make the `rust-version` error recommend `cargo update --precise -p crate@ver` (rust-lang/cargo#10891)
- resolver docs: link to version requirements syntax full explanation (rust-lang/cargo#10946)
- Bump os_info to 3.5.0 (rust-lang/cargo#10943)
- Mark --timings=html unstable in the document (rust-lang/cargo#10941)
- Mention that aliases are recursive (rust-lang/cargo#10935)
- Test if reserved filenames are allowed in Windows (rust-lang/cargo#10322)
- improve error message for `no such subcommand` (rust-lang/cargo#10924)
Matthias Krüger [Wed, 10 Aug 2022 05:21:39 +0000 (07:21 +0200)]
Rollup merge of #100345 - vincenzopalazzo:macros/is_number_doc, r=joshtriplett
docs: remove repetition in `is_numeric` function docs
In https://github.com/rust-lang/rust/pull/99628 we introduce new docs for the `is_numeric` function, and this is a follow-up PR that removes some unnecessary repetition that may be introduced by some rebasing.
Matthias Krüger [Wed, 10 Aug 2022 05:21:35 +0000 (07:21 +0200)]
Rollup merge of #100086 - JakobDegen:better-tests, r=wesleyweiser
Add more `// unit-test`s to MIR opt tests
I only changed things which are hopefully completely uninteresting. I plan to submit more PRs that cover more files, but those cases will need some more complicated (and hence possibly controversial) changes, so I'll try and submit those in reasonably sized batches.
Matthias Krüger [Wed, 10 Aug 2022 05:21:33 +0000 (07:21 +0200)]
Rollup merge of #99573 - tbodt:stabilize-backtrace, r=yaahc
Stabilize backtrace
This PR stabilizes the std::backtrace module. As of #99431, the std::Error::backtrace item has been removed, and so the rest of the backtrace feature is set to be stabilized.
Previous discussion can be found in #72981, #3156.