Add Ref/RefMut map_split method
As proposed [here](https://internals.rust-lang.org/t/make-refcell-support-slice-splitting/7707).
TLDR: Add a `map_split` method that allows multiple `RefMut`s to exist simultaneously so long as they refer to non-overlapping regions of the original `RefCell`. This is useful for things like the slice `split_at_mut` method.
Add lint for intra link resolution failure
This PR is almost done, just remains this note:
```
note: requested on the command line with `-W intra-link-resolution-failure`
```
I have no idea why my lint is considered as being passed through command line and wasn't able to find where it was set. If anyone has an idea, it'd be very helpful!
cc @QuietMisdreavus
Prevent Windows filesystem races in bootstrap tests
Fixes#51595.
This also makes bootstrap tests run near last in `./x.py test` invocations
since they are unlikely to fail.
r? @petrochenkov
rustdoc: process cross-crate glob re-exports
Turns out, we were deliberately ignoring glob re-exports when they were occurring across crates, even though we were fully processing them for local re-exports. This will at least bring the two into parity.
Fixes https://github.com/rust-lang/rust/issues/51252
Since they are unlikely to fail and are almost never going to fail
except with bootstrap changes (which would be tested locally anyway) it
makes sense to run these tests close to last.
Remove `?` macro separator compatibility note from 1.27 release notes
The implementation has been reverted in https://github.com/rust-lang/rust/pull/51417, so this no longer applies to 1.27.0.
r? @Mark-Simulacrum
rustc: rename ty::maps to ty::query.
Should've never been `maps` but "query system/engine" didn't fully settle from the start.
r? @michaelwoerister or @nikomatsakis
Speed up obligation forest code
Here are the rustc-perf benchmarks that get at least a 1% speedup on one or more of their runs with these patches applied:
```
inflate-check
avg: -8.7% min: -12.1% max: 0.0%
inflate
avg: -5.9% min: -8.6% max: 1.1%
inflate-opt
avg: -1.5% min: -2.0% max: -0.3%
clap-rs-check
avg: -0.6% min: -1.9% max: 0.5%
coercions
avg: -0.2%? min: -1.3%? max: 0.6%?
serde-opt
avg: -0.6% min: -1.0% max: 0.1%
coercions-check
avg: -0.4%? min: -1.0%? max: -0.0%?
```
Refactor: Rename ExistentialPredicate::cmp to ExistentialPredicate::stable_cmp
See https://github.com/rust-lang/rust/pull/51276#discussion_r193549404 for
rationale.
Because stable_cmp takes three arguments and Ord::cmp takes two, I am confident that there is no shadowing happening here.
r? @nikomatsakis
Fix the recent spurious breakage on AppVeyor.
Fixed the spurious error introduced by d2b5b7603b due to a wrongly resolved relative path on AppVeyor.
This only starts to happen today because we just entered the last week of the 6-week cycle.
Removed various update-reference and update-all-references scripts
A PR that addresses #50853 changes that made `update-reference` and `update-all-references` scripts obsolete.
Improve core::task::TaskObj
- Rename `UnsafePoll` to `UnsafeTask` to avoid confusion with `Poll`
- Rename `TaskObj::from_poll_task()` to `TaskObj::new()`
- Rename `TaskObj`'s `poll` and `drop` fields to `poll_fn` and `drop_fn`
- Implement `Future` for `TaskObj`. Reason: It's a custom trait object for a future, so it should implement future
- Remove `unsafe impl Sync` for `TaskObj`. I don't think we need it. Was this safe? `UnsafeTask` only requires to implement `Send`
@cramertj
@aturon
Don't auto-hide inherent impls even if `rustdoc-collapse == true`.
This PR changes the auto-collapse behavior when a page is first loaded:
* Inherent impls will never be collapsed by default (new behavior).
* Trait impls will always be collapsed by default, same as before.
* Other items are collapsed according to localStorage, same as before.
This should be much more useful since there is no hint what the content of a collapsed inherent impl would be (try to collapse everything in https://doc.rust-lang.org/std/vec/struct.Vec.html and guess where a method like `try_reserve` or `splice` would be).
Manually clicking the global [-]/[+] will still collapse/expand everything.
Replace `core::iter::AlwaysOk<T>` by `Result<T, !>`
#43278 has been fixed, so we don't need this struct anymore.
(Actually we don't even need `.unwrap()` thanks to `#![feature(exhaustive_patterns)]`)
Make parse_seq_to_end and parse_path public
(see SergioBenitez/Rocket#660, rust-lang/rust#51265)
Rocket currently uses `parse_seq_to_end` and `parse_path` in its codegen macros. Assuming I tested correctly, this is the minimal set of methods that are currently necessary to build Rocket again. I would be happy to add documentation of this and Rocket's other usages, if desired.