bors [Sun, 14 Aug 2022 21:35:16 +0000 (21:35 +0000)]
Auto merge of #100540 - matthiaskrgr:rollup-734hkpt, r=matthiaskrgr
Rollup of 6 pull requests
Successful merges:
- #100249 (Fix HorizonOS regression in FileTimes)
- #100253 (Recover from mutable variable declaration where `mut` is placed before `let`)
- #100482 (Add Duration rounding change to release note)
- #100523 ([rustdoc] remove Clean trait)
- #100524 (Impl `Debug` for some structs of rustbuild)
- #100526 (Add tests for the drop behavior of some control flow constructs)
Matthias Krüger [Sun, 14 Aug 2022 18:16:03 +0000 (20:16 +0200)]
Rollup merge of #100526 - Nilstrieb:tests!, r=Mark-Simulacrum
Add tests for the drop behavior of some control flow constructs
In #100513 it was shown that the drop behaviour of let_chains is not correct currently. Since drop behaviour is something pretty subtle, this adds explicit tests for the drop behavior of `if`, `if let` and `match` to make sure that it does not regress in the future.
The `println!`s were left in to make debugging easier in case something goes wrong, but they are not required for the test.
Matthias Krüger [Sun, 14 Aug 2022 18:16:00 +0000 (20:16 +0200)]
Rollup merge of #100249 - Meziu:master, r=joshtriplett
Fix HorizonOS regression in FileTimes
The changes in #98246 caused a regression for multiple Newlib-based systems. This is just a fix including HorizonOS to the list of targets which require a workaround.
bors [Sun, 14 Aug 2022 14:37:17 +0000 (14:37 +0000)]
Auto merge of #100429 - GuillaumeGomez:merge-html-elements-together, r=notriddle
rustdoc: Merge source code pages HTML elements together
We realized that the HTML generated for the source code pages could be improved quite a lot. This PR is a first pass toward this goal. Some explanations: it merges similar classes elements (even when there are white characters in between).
There is an exception to this: if this is an ident, I also merged it with "unclassified" elements. This part is up to debate and can be very easily removed as the check is performed in one place (in the `can_merge` function).
EDIT: The `ident` is now only kept in the code for the `span` it contains but it is not rendered into the HTML.
So now some numbers:
For these ones, on each page, I run this JS: `document.getElementsByTagName('*').length`. The goal is to count the number of DOM elements. I took some pages that seemed big, but don't hesitate to check some others.
| file name | before this PR | with this PR | diff | without ident | diff |
|-|-|-|-|-|-|
| std/lib.rs.html (source link on std crate page) | 3455 | 2776 | 20.7% | 2387 | 31% |
| alloc/vec/mod.rs.html (source on Vec type page) | 11012 | 8084 | 26.6% | 6682 | 39.4% |
| alloc/string.rs.html (source on String type page) | 10800 | 8214 | 24% | 6712 | 37.9% |
| std/sync/mutex.rs.html (source on Mutex type page) | 2953 | 2403 | 18.7% | 2139 | 27.6% |
You can test it [here](https://rustdoc.crud.net/imperio/merge-html-elements-together/src/std/lib.rs.html).
Nilstrieb [Sun, 14 Aug 2022 12:17:53 +0000 (14:17 +0200)]
Add tests for the drop behavior of some control flow constructs
In #100513 it was shown that the drop behavior of let_chains is not correct
currently. Since drop behavior is something pretty subtle, this adds
explicit tests for the drop behavior of `if`, `if let` and `match` to
make sure that it does not regress in the future.
The `println!`s were left in to make debugging easier in case something
goes wrong, but they are not required for the test.
bors [Sun, 14 Aug 2022 12:06:50 +0000 (12:06 +0000)]
Auto merge of #100525 - Dylan-DPC:rollup-4cp6nu0, r=Dylan-DPC
Rollup of 6 pull requests
Successful merges:
- #99582 (Delay a span bug if we see ty/const generic params during writeback)
- #99861 (orphan check: rationalize our handling of constants)
- #100026 (Add `Iterator::array_chunks` (take N+1))
- #100115 (Suggest removing `let` if `const let` or `let const` is used)
- #100126 (rustc_target: Update some old naming around self contained linking)
- #100487 (`assert_{inhabited,zero_valid,uninit_valid}` intrinsics are safe)
Dylan DPC [Sun, 14 Aug 2022 11:39:16 +0000 (17:09 +0530)]
Rollup merge of #100126 - petrochenkov:screname, r=davidtwco
rustc_target: Update some old naming around self contained linking
The "fallback" naming pre-dates introduction of `-Clink-self-contained`.
Noticed when reviewing https://github.com/rust-lang/rust/pull/99500.
This PR doesn't break any json target spec, but supporting per-linker-flavor startup objects needed by https://github.com/rust-lang/rust/pull/99500 will break them, so maybe next time I'll remove the compatibility names.
Dylan DPC [Sun, 14 Aug 2022 11:39:14 +0000 (17:09 +0530)]
Rollup merge of #100026 - WaffleLapkin:array-chunks, r=scottmcm
Add `Iterator::array_chunks` (take N+1)
A revival of https://github.com/rust-lang/rust/pull/92393.
r? `@Mark-Simulacrum`
cc `@rossmacarthur` `@scottmcm` `@the8472`
I've tried to address most of the review comments on the previous attempt. The only thing I didn't address is `try_fold` implementation, I've left the "custom" one for now, not sure what exactly should it use.
bors [Sun, 14 Aug 2022 06:40:58 +0000 (06:40 +0000)]
Auto merge of #100516 - compiler-errors:rollup-fgrfeb3, r=compiler-errors
Rollup of 8 pull requests
Successful merges:
- #99646 (Only point out a single function parameter if we have a single arg incompatibility)
- #100299 (make `clean::Item::span` return `Option` instead of dummy span)
- #100335 (Rustdoc-Json: Add `Path` type for traits.)
- #100367 (Suggest the path separator when a dot is used on a trait)
- #100431 (Enum variant ctor inherits the stability of the enum variant)
- #100446 (Suggest removing a semicolon after impl/trait items)
- #100468 (Use an extensionless `x` script for non-Windows)
- #100479 (Argument type error improvements)
Failed merges:
- #100483 (Point to generic or arg if it's the self type of unsatisfied projection predicate)
fn main() {
let w = Wrapper::<isize>(1isize);
foo(f, w);
}
```
Which currently errors like:
```
error[E0308]: arguments to this function are incorrect
--> src/main.rs:10:5
|
10 | foo(f, w);
| ^^^ - - expected `i32`, found `isize`
| |
| expected `i32`, found `u32`
|
= note: expected fn pointer `fn(i32)`
found fn item `fn(u32) {f}`
= note: expected struct `Wrapper<i32>`
found struct `Wrapper<isize>`
note: function defined here
--> src/main.rs:4:4
|
4 | fn foo(_: fn(i32), _: Wrapper<i32>) {}
| ^^^ ---------- ---------------
```
Specifically, that double `expected .. found ..` which is very difficult to correlate to the types in the arguments. Also, the fact that "expected `i32`, found `isize`" and the other argument mismatch label don't even really explain what's going on here.
After this PR:
```
error[E0308]: arguments to this function are incorrect
--> $DIR/two-mismatch-notes.rs:10:5
|
LL | foo(f, w);
| ^^^
|
note: expected fn pointer, found fn item
--> $DIR/two-mismatch-notes.rs:10:9
|
LL | foo(f, w);
| ^
= note: expected fn pointer `fn(i32)`
found fn item `fn(u32) {f}`
note: expected struct `Wrapper`, found a different struct `Wrapper`
--> $DIR/two-mismatch-notes.rs:10:12
|
LL | foo(f, w);
| ^
= note: expected struct `Wrapper<i32>`
found struct `Wrapper<isize>`
note: function defined here
--> $DIR/two-mismatch-notes.rs:4:4
|
LL | fn foo(_: fn(i32), _: Wrapper<i32>) {}
| ^^^ ---------- ---------------
error: aborting due to previous error
For more information about this error, try `rustc --explain E0308`.
```
Yeah, it's a bit verbose, but much clearer IMO.
---
Open to discussions about how this could be further improved. Motivated by `@jyn514's` [tweet](https://mobile.twitter.com/joshuayn514/status/1558042020601634816) here.
Michael Goulet [Sun, 14 Aug 2022 04:06:52 +0000 (21:06 -0700)]
Rollup merge of #100468 - cuviper:lazy-x, r=jyn514
Use an extensionless `x` script for non-Windows
#99992 added `x.sh` and `x.ps1`, but this broke my lazy `./xTAB` habit that used to get me to `./x.py`. If we rename `x.sh` to `x`, then I can adjust to `./xSPACE` for the same number of characters typed.
bors [Sun, 14 Aug 2022 01:29:58 +0000 (01:29 +0000)]
Auto merge of #100511 - compiler-errors:rollup-vrte4w5, r=compiler-errors
Rollup of 11 pull requests
Successful merges:
- #100355 (rustdoc: Rename ``@has` FILE PATTERN` to ``@hasraw` FILE PATTERN`)
- #100407 (avoid some int2ptr casts in thread_local_key tests)
- #100434 (Fix HIR pretty printing of let else)
- #100438 (Erase regions better in `promote_candidate`)
- #100445 (adapt test for msan message change)
- #100447 (Remove more Clean trait implementations)
- #100464 (Make `[rust] use-lld=true` work on windows)
- #100475 (Give a helpful diagnostic when the next struct field has an attribute)
- #100490 (wf: correctly `shallow_resolve` consts)
- #100501 (nicer Miri backtraces for from_exposed_addr)
- #100509 (merge two test directories that mean the same thing)
Michael Goulet [Sat, 13 Aug 2022 21:10:13 +0000 (14:10 -0700)]
Rollup merge of #100490 - lcnr:wf-consts, r=jackh726
wf: correctly `shallow_resolve` consts
`shallow_resolve` on `InferConst` is always a noop. this is mostly irrelevant as inference vars should already be resolved at most - if not all - call sites. Haven't actually looked too deeply into whether this was a problem.
Michael Goulet [Sat, 13 Aug 2022 21:10:11 +0000 (14:10 -0700)]
Rollup merge of #100464 - khyperia:lld-icf-on-windows, r=jyn514
Make `[rust] use-lld=true` work on windows
Before, it would fail with "error: ignoring unknown argument '-Wl,--icf=all'"
This option was introduced in https://github.com/rust-lang/rust/pull/99062 (well, technically https://github.com/rust-lang/rust/pull/99680)
See zulip thread: https://rust-lang.zulipchat.com/#narrow/stream/182449-t-compiler.2Fhelp/topic/rust-lld.3A.20error.3A.20ignoring.20unknown.20argument.20'-Wl.2C--icf.3Dall'
Michael Goulet [Sat, 13 Aug 2022 21:10:08 +0000 (14:10 -0700)]
Rollup merge of #100445 - krasimirgg:llvm-16-msan, r=tmiasko
adapt test for msan message change
LLVM commit https://github.com/llvm/llvm-project/commit/057cabd997aeaef136e1e14f2ee645bd5bb197dd removed the function from the msan error message. This adapts our test accordingly.
Found via our experimental rust + llvm @ HEAD bot:
https://buildkite.com/llvm-project/rust-llvm-integrate-prototype/builds/12634#018289fe-b0bc-4bab-89b3-fb1d4e38f6db
Noah Lev [Sat, 13 Aug 2022 04:56:16 +0000 (00:56 -0400)]
rustdoc: Fix incorrect usage of `@!has` and `@!matches`
`@!has` (and `@!matches`) with two arguments used to treat the second
argument as a literal string of HTML code. Now, that feature has been
renamed into `@!hasraw` (and `@!matchesraw`), and the arity-2 `@!has`
version is an error.
These uses thought the second argument was being treated as an XPath, as
with the arity-3 version, but in fact was being treated as literal HTML.
Because these were checking for the *absence* of the string, the tests
silently did nothing -- an XPath string won't ever be showing up in the
test's generated HTML!
Noah Lev [Wed, 10 Aug 2022 04:52:04 +0000 (21:52 -0700)]
Rename `@{has,matches}-literal` to `...text`
Reasons:
1. It's shorter.
2. `@matches-literal` seems to contradict itself: a regex is
intrinsically not a literal match, while it is still a textual match.
bors [Sat, 13 Aug 2022 02:41:27 +0000 (02:41 +0000)]
Auto merge of #100341 - andrewpollack:fuchsia-llvm-libunwind, r=tmandry
Use llvm-libunwind="in-tree" for Fuchsia targets
With updates to Fuchsia CI's Zircon libraries #99833, we can introduce `llvm-libunwind="in-tree"` for Fuchsia targets. This PR restores functionality removed from https://github.com/rust-lang/rust/pull/93604#issuecomment-1136515651.
bors [Fri, 12 Aug 2022 16:32:24 +0000 (16:32 +0000)]
Auto merge of #100456 - Dylan-DPC:rollup-fn17z9f, r=Dylan-DPC
Rollup of 9 pull requests
Successful merges:
- #100022 (Optimize thread ID generation)
- #100030 (cleanup code w/ pointers in std a little)
- #100229 (add -Zextra-const-ub-checks to enable more UB checking in const-eval)
- #100247 (Generalize trait object generic param check to aliases.)
- #100255 (Adding more verbose documentation for `std::fmt::Write`)
- #100366 (errors: don't fail on broken primary translations)
- #100396 (Suggest const and static for global variable)
- #100409 (rustdoc: don't generate DOM element for operator)
- #100443 (Add two let else regression tests)
Dylan DPC [Fri, 12 Aug 2022 15:09:18 +0000 (20:39 +0530)]
Rollup merge of #100443 - est31:let_else_regression_tests, r=Mark-Simulacrum
Add two let else regression tests
Adds a regression test for #94176, as it was fixed by #98574 but doesn't have a regression test. The PR also incorporates a commit from #94012 which added a test for an issue discovered in that PR.
Originally they have been part of #99291, but I've moved them out in the hopes of getting them merged more quickly, as that PR is already open since a month, and so that #99291 can focus on the drop order part of things.
Dylan DPC [Fri, 12 Aug 2022 15:09:17 +0000 (20:39 +0530)]
Rollup merge of #100409 - jsha:highlight-lighter, r=GuillaumeGomez
rustdoc: don't generate DOM element for operator
In our source page highlighting, we were generating `<span class="op">` tags for all "operators", including e.g. `<` `>` around generic parameters, `*`, `&`. This contributed significantly to DOM size, but we don't actually style `.op` except in the ayu theme.
Remove the styles for `.op` in ayu, and stop generating the `<span>`s.
This reduces DOM size of an example page[1] from 265,938 HTML elements to 242,165 elements, a 9% reduction.
Dylan DPC [Fri, 12 Aug 2022 15:09:14 +0000 (20:39 +0530)]
Rollup merge of #100366 - davidtwco:translation-never-fail, r=compiler-errors
errors: don't fail on broken primary translations
If a primary bundle doesn't contain a message then the fallback bundle is used. However, if the primary bundle's message is broken (e.g. it refers to a interpolated variable that the compiler isn't providing) then this would just result in a compiler panic. While there aren't any primary bundles right now, this is the type of issue that could come up once translation is further along.
r? ```@compiler-errors``` (since this comes out of a in-person discussion we had at RustConf)
Dylan DPC [Fri, 12 Aug 2022 15:09:12 +0000 (20:39 +0530)]
Rollup merge of #100247 - cjgillot:verify-dyn-trait-alias-defaults, r=lcnr
Generalize trait object generic param check to aliases.
The current algorithm only checks that `Self` does not appear in defaults for traits. This is not sufficient for trait aliases.
This PR moves the check to trait object elaboration, which sees through trait aliases.
bors [Fri, 12 Aug 2022 13:51:26 +0000 (13:51 +0000)]
Auto merge of #100328 - davidtwco:perf-implications, r=nnethercote
passes: load `defined_lib_features` query less
Hopefully addresses the perf regressions from #99212 (see #99905).
Re-structure the stability checks for library features to avoid calling `defined_lib_features` for any more crates than necessary for each of the implications or local feature attributes that need validation.
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.
LLVM commit https://github.com/llvm/llvm-project/commit/057cabd997aeaef136e1e14f2ee645bd5bb197dd removed the function from the msan error message. This adapts our test accordingly.
Found via our experimental rust + llvm @ HEAD bot:
https://buildkite.com/llvm-project/rust-llvm-integrate-prototype/builds/12634#018289fe-b0bc-4bab-89b3-fb1d4e38f6db