I refactored the code:
- Removed handling of methods, as it felt entirely unnecessary
- Removed clippy utils (obviously...)
- Used some shiny compiler features
(let-else is very handy for lints :eyes:)
- I also renamed the lint to `for_loop_over_fallibles` (note: no `s`).
I'm not sure what's the naming convention here, so maybe I'm wrong.
Michael Howell [Sun, 9 Oct 2022 01:15:00 +0000 (18:15 -0700)]
Rollup merge of #102661 - chrysn-pull-requests:rustdoc-effect-of-fundamental, r=notriddle
rustdoc: Document effect of fundamental types
This was implemented in https://github.com/rust-lang/rust/pull/96565, but not documented. But it's a useful feature for everyone who implements own wrapper (especially wrappers-around-pointers) types, so that they can behave like pointers (and stdlib wrappers) do -- so here goes a mention in the unstable section of the rustdoc book.
(That is where I initially looked to find tricks for making my own wrapper types be transparent to documentation).
Michael Howell [Sun, 9 Oct 2022 01:14:59 +0000 (18:14 -0700)]
Rollup merge of #99818 - aliemjay:fix-closure-normalize, r=jackh726
don't ICE when normalizing closure input tys
We were ICEing while rendering diagnostics because `universe_causes` is expected to track every universe created in the typeck's infcx.
`normalize_and_add_constraints` doesn't update `universe_causes`
when creating new universes, causing an ICE. Remove it!
Add spans to better track normalization constraints.
Fix couple places where `universe_causes` is not updated correctly to
track newly added universes.
Fixes #102800
~Fixess #99665~ (UPDATE: no longer true; the issue has a different failure path than when this PR was created and should be fixed by #101708, but the changes in this PR are still correct and should prevent potential future ICEs)
bors [Sat, 8 Oct 2022 21:43:25 +0000 (21:43 +0000)]
Auto merge of #102819 - matthiaskrgr:rollup-xwnvofc, r=matthiaskrgr
Rollup of 7 pull requests
Successful merges:
- #99194 (Fix gdb-cmd for rust-gdbgui)
- #99880 (`EscapeAscii` is not an `ExactSizeIterator`)
- #102524 (rustdoc: remove weird `<a href="#">` wrapper around unsafe triangle)
- #102581 (Make the `config.src` handling for downloadable bootstrap more conservative)
- #102604 (Improve readability of bootstrap's README)
- #102723 (test: run-make: skip when cross-compiling)
- #102815 (rustdoc: remove mobile topbar from source pages instead of hiding it)
Matthias Krüger [Sat, 8 Oct 2022 21:32:04 +0000 (23:32 +0200)]
Rollup merge of #102723 - pcc:run-make-cc, r=Mark-Simulacrum
test: run-make: skip when cross-compiling
This test fails when targeting aarch64 Android. Instead of adding yet another architecture here (and one that's increasingly more common as the host), let's replace the growing list of architectures with ignore-cross-compile.
Matthias Krüger [Sat, 8 Oct 2022 21:32:03 +0000 (23:32 +0200)]
Rollup merge of #102581 - jyn514:src-detection, r=Mark-Simulacrum
Make the `config.src` handling for downloadable bootstrap more conservative
In particular, this supports build directories within an unrelated git repository. Fixes https://github.com/rust-lang/rust/issues/102562.
As a side effect, it will fall back to the old logic when the source directory is being built from a tarball within an unrelated git repository. However, that second case is unsupported and untested; we reserve the right to break it in the future.
`@cr1901` can you confirm this fixes your problem?
cc `@kleisauke,` I believe this will also fix your issue (although your use case still isn't supported).
Matthias Krüger [Sat, 8 Oct 2022 21:32:03 +0000 (23:32 +0200)]
Rollup merge of #102524 - notriddle:notriddle/unsafe-function, r=GuillaumeGomez
rustdoc: remove weird `<a href="#">` wrapper around unsafe triangle
This DOM cleanup changes the color of the triangle, from blue to black, but since it's still a different color from the link it's next to, it should still be noticeable.
Matthias Krüger [Sat, 8 Oct 2022 21:32:01 +0000 (23:32 +0200)]
Rollup merge of #99194 - simlay:simlay/update-rust-gdbgui-gdb-args-to-gdb-cmd, r=Mark-Simulacrum
Fix gdb-cmd for rust-gdbgui
With https://github.com/cs01/gdbgui/pull/198, the way that gdbgui arguments were specified changed. I've tested this with program generated from `cargo new --bin` and it worked as gdbgui should.
Michael Howell [Fri, 30 Sep 2022 20:32:33 +0000 (13:32 -0700)]
rustdoc: remove weird `<a href="#">` wrapper around unsafe triangle
This DOM cleanup changes the color of the triangle, from blue to black, but
since it's still a different color from the link it's next to, it should
still be noticeable.
bors [Sat, 8 Oct 2022 14:58:11 +0000 (14:58 +0000)]
Auto merge of #102809 - matthiaskrgr:rollup-qq62vuv, r=matthiaskrgr
Rollup of 8 pull requests
Successful merges:
- #101520 (Allow transmutes between the same types after erasing lifetimes)
- #102675 (Remove `mir::CastKind::Misc`)
- #102778 (Fix MIR inlining of asm_unwind)
- #102785 (Remove `DefId` from some `SelectionCandidate` variants)
- #102788 (Update rustc-dev-guide)
- #102789 (Update browser UI test version)
- #102797 (rustdoc: remove no-op CSS `.rightside { position: initial }`)
- #102798 (rustdoc: add main-heading and example-wrap link CSS to big selector)
Matthias Krüger [Sat, 8 Oct 2022 12:38:20 +0000 (14:38 +0200)]
Rollup merge of #102788 - joshtriplett:bump-rustc-dev-guide, r=ehuss
Update rustc-dev-guide
- .gitattributes: Mark minified javascript as binary to filter greps
- fix very minor punctuation typo
- diagnostic structs: derive on enum (#1477)
- Update running tests with the new flags (#1476)
- Rename typeck to hir_analysis (#1475)
- fix typo and make paragraph consistent (#1474)
- Update about-this-guide.md
- Link to the correct page in "about this guide"
- Update r-a config suggestions
- don't refer to the compile-time interpreter as "Miri" (#1471)
- UPDATE - Diagnostic docs to reflect renamed traits and macros in rustc PR#101558
- Update mdbook and its extensions versions
- Remove unmaintained action
- Update some actions versions
- Fix some typos
Update motivated in large part by the most recent commit, to fix `git
grep`.
Matthias Krüger [Sat, 8 Oct 2022 12:38:18 +0000 (14:38 +0200)]
Rollup merge of #101520 - oli-obk:transmute_lifetimes, r=compiler-errors
Allow transmutes between the same types after erasing lifetimes
r? ````@compiler-errors```` on the impl
fixes #101081
See discussion in the issue and at https://rust-lang.zulipchat.com/#narrow/stream/326866-t-types.2Fnominated/topic/.23101081.3A.20Regression.20transmuting.20.60RwLockReadGuard.3CT.3A.20.3FSized.3E.E2.80.A6
I think this may need lang team signoff as its implications may go beyond the jurisdiction of T-types
bors [Sat, 8 Oct 2022 11:53:25 +0000 (11:53 +0000)]
Auto merge of #100720 - camsteffen:representable, r=cjgillot
Rewrite representability
* Improve placement of `Box` in the suggestion
* Multiple items in a cycle emit 1 error instead of an error for each item in the cycle
* Introduce `representability` query to avoid traversing an item every time it is used.
* Also introduce `params_in_repr` query to avoid traversing generic items every time it is used.
bors [Sat, 8 Oct 2022 03:50:07 +0000 (03:50 +0000)]
Auto merge of #99505 - joboet:futex_once, r=thomcc
std: use futex in `Once`
Now that we have efficient locks, let's optimize the rest of `sync` as well. This PR adds a futex-based implementation for `Once`, which drastically simplifies the implementation compared to the generic version, which is provided as fallback for platforms without futex (Windows only supports them on newer versions, so it uses the fallback for now).
Instead of storing a linked list of waiters, the new implementation adds another state (`QUEUED`), which is set when there are waiting threads. These now use `futex_wait` on that state and are woken by the running thread when it finishes and notices the `QUEUED` state, thereby avoiding unnecessary calls to `futex_wake_all`.
bors [Fri, 7 Oct 2022 20:50:51 +0000 (20:50 +0000)]
Auto merge of #102091 - RalfJung:const_err, r=oli-obk
make const_err a hard error
This lint has been deny-by-default with future incompat wording since [Rust 1.51](https://github.com/rust-lang/rust/pull/80394) and the stable release of this week starts showing it in cargo's future compat reports. I can't wait to finally get rid of at least some of the mess in our const-err-reporting-code. ;)
bors [Fri, 7 Oct 2022 17:37:39 +0000 (17:37 +0000)]
Auto merge of #102787 - Dylan-DPC:rollup-fvbb4t9, r=Dylan-DPC
Rollup of 6 pull requests
Successful merges:
- #102300 (Use a macro to not have to copy-paste `ConstFnMutClosure::new(&mut fold, NeverShortCircuit::wrap_mut_2_imp)).0` everywhere)
- #102475 (unsafe keyword: trait examples and unsafe_op_in_unsafe_fn update)
- #102760 (Avoid repeated re-initialization of the BufReader buffer)
- #102764 (Check `WhereClauseReferencesSelf` after all other object safety checks)
- #102779 (Fix `type_of` ICE)
- #102780 (run Miri CI when std::sys changes)
Josh Triplett [Fri, 7 Oct 2022 16:38:34 +0000 (17:38 +0100)]
Update rustc-dev-guide
- .gitattributes: Mark minified javascript as binary to filter greps
- fix very minor punctuation typo
- diagnostic structs: derive on enum (#1477)
- Update running tests with the new flags (#1476)
- Rename typeck to hir_analysis (#1475)
- fix typo and make paragraph consistent (#1474)
- Update about-this-guide.md
- Link to the correct page in "about this guide"
- Update r-a config suggestions
- don't refer to the compile-time interpreter as "Miri" (#1471)
- UPDATE - Diagnostic docs to reflect renamed traits and macros in rustc PR#101558
- Update mdbook and its extensions versions
- Remove unmaintained action
- Update some actions versions
- Fix some typos
Update motivated in large part by the most recent commit, to fix `git
grep`.
Dylan DPC [Fri, 7 Oct 2022 16:35:31 +0000 (22:05 +0530)]
Rollup merge of #102764 - compiler-errors:issue-102762, r=jackh726
Check `WhereClauseReferencesSelf` after all other object safety checks
This fixes the ICE because it causes us to detect another *non-lint* `MethodViolationCode` first, instead of breaking on `WhereClauseReferencesSelf`.
We could also approach this issue by instead returning a vector of *all* of the `MethodViolationCode`s, and just reporting the first one we see, but treating it as a hard error if we return both `WhereClauseReferencesSelf` and some other violation code -- let me know if this is desired.
We accidentally removed this in https://github.com/rust-lang/rust/pull/98748. It looks so redundant. But it isn't.
The default `Read::read_buf` will defensively initialize the whole buffer, if any of it is indicated to be uninitialized. In uses where reads from the wrapped `Read` impl completely fill the `BufReader`, `initialized` and `filled` are the same, and this extra member isn't required. But in the reported issue, the `BufReader` wraps a `Read` impl which will _never_ fill the whole buffer. So the default `Read::read_buf` implementation repeatedly re-initializes the extra space in the buffer.
This adds back the extra `initialized` member, which ensures that the default `Read::read_buf` only zero-initialized the buffer once, and I've tried to add a comment which explains this whole situation.
Dylan DPC [Fri, 7 Oct 2022 16:35:30 +0000 (22:05 +0530)]
Rollup merge of #102475 - RalfJung:unsafe, r=dtolnay
unsafe keyword: trait examples and unsafe_op_in_unsafe_fn update
Having a safe `fn` in an `unsafe trait` vs an `unsafe fn` in a safe `trait` are pretty different situations, but the distinction is subtle and can confuse even seasoned Rust developers. So let's have explicit examples of both. I also removed the existing `unsafe trait` example since it was rather strange.
Also the `unsafe_op_in_unsafe_fn` lint can help disentangle the two sides of `unsafe`, so update the docs to account for that.
bors [Fri, 7 Oct 2022 13:54:55 +0000 (13:54 +0000)]
Auto merge of #101632 - camsteffen:refactor-infer-err, r=lcnr
Remove `TypeckResults` from `InferCtxt`
`InferCtxt` currently has `in_progress_typeck_results` which is only used for some diagnostics during typeck. It adds a lifetime which propagates through a lot of code. This PR moves that field into a new helper struct `TypeErrCtxt`.
bors [Fri, 7 Oct 2022 07:31:53 +0000 (07:31 +0000)]
Auto merge of #102767 - matthiaskrgr:rollup-vcbt81v, r=matthiaskrgr
Rollup of 6 pull requests
Successful merges:
- #102577 (Warn about Visual Studio Code branding confusion)
- #102720 (do not reverse the expected type and found type for ObligationCauseCo…)
- #102744 (rustdoc: remove unused CSS `.content .item-list`)
- #102747 (rustdoc: remove unused CSS `.docblock a:not(.srclink)`)
- #102748 (Disable compressed debug sections on i586-gnu)
- #102761 (let-else: test else block with non-never uninhabited type)
Matthias Krüger [Fri, 7 Oct 2022 05:28:12 +0000 (07:28 +0200)]
Rollup merge of #102761 - est31:let_else_uninhabited_test, r=compiler-errors
let-else: test else block with non-never uninhabited type
let else currently does not allow uninhabited types for the `else` block that aren't `!`. One can maybe think about relaxing this in the future, but if it is done, it should be an explicit choice and not an unexpected side effect of e.g. a refactor. Thus, I'm extending a test that will fail if the behaviour changes.
Matthias Krüger [Fri, 7 Oct 2022 05:28:11 +0000 (07:28 +0200)]
Rollup merge of #102748 - cuviper:i586-gnu-uncompress, r=pietroalbini
Disable compressed debug sections on i586-gnu
Compressed debug is enabled by default for gas (assembly) on Linux/x86
targets, and we started building our own in #102530, but that made our
`compiler_builtins` incompatible with binutils < 2.32. Add an explicit
option to disable that in our crosstool-ng config. Fixes #102703.
Now that rustdoc toggles have been switched to `<details>`, there shouldn't be any need to put things inside docblock containers just to give them disclosure toggles.
Matthias Krüger [Fri, 7 Oct 2022 05:28:10 +0000 (07:28 +0200)]
Rollup merge of #102744 - notriddle:notriddle/content-item-list, r=GuillaumeGomez
rustdoc: remove unused CSS `.content .item-list`
When these rules were added in 4fd061c426902b0904c65e64a3780b21f9ab3afb (yeah, that's the very first commit of rustdoc_ng), `.item-list` was a `<ul>`, and this would override the default style for that tag.
Matthias Krüger [Fri, 7 Oct 2022 05:28:09 +0000 (07:28 +0200)]
Rollup merge of #102577 - kornelski:non-code-visual-studio, r=wesleywiser
Warn about Visual Studio Code branding confusion
VS Code is a popular companion for Rust, but Microsoft's branding is confusing, and users [may not understand](https://users.rust-lang.org/t/complie-error-when-i-run-rustc/82127) they also need the *other* VS.
bors [Fri, 7 Oct 2022 03:35:02 +0000 (03:35 +0000)]
Auto merge of #101988 - petrochenkov:flavor2, r=lqd
rustc_target: Refactor internal linker flavors
In accordance with the design from https://github.com/rust-lang/rust/pull/96827#issuecomment-1208441595
`lld_flavor` and `linker_is_gnu` fields are removed from internal target specs, but still parsed from JSON specs using compatibility layer introduced in https://github.com/rust-lang/rust/pull/100552.
r? `@lqd`