Skip to content

Rollup of 6 pull requests - #59684

Merged
bors merged 34 commits into
rust-lang:masterfrom
Centril:rollup-n7pnare
Apr 4, 2019
Merged

Rollup of 6 pull requests#59684
bors merged 34 commits into
rust-lang:masterfrom
Centril:rollup-n7pnare

Conversation

@Centril

Copy link
Copy Markdown
Contributor

Successful merges:

Failed merges:

r? @ghost

matkladand others added 30 commits April 3, 2019 11:41
- libarena
- librustc_allocator
- librustc_borrowck
- librustc_codegen_ssa
- librustc_codegen_utils
- librustc_driver
- librustc_errors
- librustc_incremental
- librustc_metadata
- librustc_passes
- librustc_privacy
- librustc_resolve
- librustc_save_analysis
- librustc_target
- librustc_traits
- libsyntax
- libsyntax_ext
- libsyntax_pos
- libfmt_macros
- librustdoc
When using the `rustfix-coverage` flag, some tests currently fail
because they define a different error-format than `json`.
The current implementation crashes when encountering those tests. Since
we don't care about non-json test output when collecting the coverage
data, we handle those tests by returning an empty `Vec` instead.
…li-obk
Internal lints take 2
cc rust-lang#58701
cc rust-lang#49509
TODO: Add `#![warn(internal)]` to crates (and fix violations)
Crates depending on `rustc_data_structures`
- [x] librustc_resolve
- [x] librustc_driver
- [x] librustc_passes
- [x] librustc_metadata
- [x] librustc_interface
- [x] librustc_save_analysis
- [x] librustc_lint
- [x] librustc
- [x] librustc_incremental
- [x] librustc_codegen_utils
- [x] libarena
- [x] librustc_target
- [x] librustc_allocator
- [x] librustc_privacy
- [x] librustc_traits
- [x] librustc_borrowck
- [x] libsyntax
- [x] librustc_codegen_ssa
- [x] libsyntax_ext
- [x] librustc_errors
- [x] librustc_mir
- [x] libsyntax_pos
- [x] librustc_typeck
Crates with `feature(rustc_private)`
Excluding crates, which are already in the list above. Also excluding tools and tests.
- [ ] ~~libstd~~
- [x] libfmt_macros
- [x] librustdoc
r? @oli-obk
Be more direct about borrow contract
I always was confused by the difference between Borrow and AsRef, despite the fact that I've read all available docs at least a dozen of times.
I finally grokked the difference between the two when I realized the Borrow invariant:
> If you implement Borrow, you **must** make sure that Eq, Ord and Hash implementations are equivalent for borrowed and owned data
My problem was that this invariant is not stated explicitly in documentation, and instead some vague and philosophical notions are used.
So I suggest to mention the requirements of `Borrow` very explicitly: instead of "use Borrow when X and use AsRef when Y", let's phrase this as `Borrow` differs from `AsRef` in `W`, so that's why `Borrow` is for `X` and `AsRef` is for `Y`.
Note that this change could be seen as tightening contract of the Borrow. Let's say Alice has written the following code:
```rust
#[derive(PartialEq, Eq, Hash, PartialOrd, Ord)]
struct Person {
first_name: String,
last_name: String,
}
impl Borrow<str> for Person {
fn borrow(&self) -> &str { self.first_name.as_str() }
}
```
Now Bob uses this `Person` struct, puts it into `HashMap` and tries to look it up using `&str` for the first name. Bob's code naturally fails.
The question is, who is to blame: Alice, who has written the impl, or Bob, who uses the HashMap. If I read the current docs literally, I would say that `Bob` is to blame: `Eq` and `Hash` bounds appear on HashMap, so it is the HashMap which requires that they are consistent. By using a type for which the `Borrow` impl does not yield well-behaved `Eq`, Bob is violating contract of HashMap.
If, as this PR proposes, we unconditionally require that Eq & friends for borrow should be valid, then the blame shifts to Alice, which I think is more reasonable.
closesrust-lang#44868
… r=alexcrichton
Updated the documentation of spin_loop and spin_loop_hint
# Description
- Updated the description of `core::hints::spin_loop`
- Updated the description of `core::async::spin_loop_hint`
Both documentation is rewritten to better reflect when one should prefer using a busy-wait spin-loop (and the `spin_loop` and `spin_loop_hint` functions) over `yield_now`. It also dives a little bit deeper on what the function actually does.
closesrust-lang#55418
…criptions, r=GuillaumeGomez
Updated the environment description in rustc.
# Description
- Updated the "environment" description in the `rustc` man pages
The old wording suggested that all the mentioned flags influenced the output of the compiler,
where this was not the case.
closesrust-lang#59504
Reduce repetition in librustc(_lint) wrt. impl LintPass by using macros
r? @oli-obk
cc @Zoxc
…er_error_formats, r=oli-obk
rustfix coverage: Skip UI tests with non-json error-format
When using the `rustfix-coverage` flag, some tests currently fail
because they define a different error-format than `json`.
The current implementation crashes when encountering those tests. Since
we don't care about non-json test output when collecting the coverage
data, we handle those tests by returning an empty `Vec` instead.
r? @oli-obk
@Centril

Copy link
Copy Markdown
ContributorAuthor

@bors r+ p=6

@bors

bors commented Apr 3, 2019

Copy link
Copy Markdown
Collaborator

📌 Commit 231bd48 has been approved by Centril

@borsbors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Apr 3, 2019
@bors

bors commented Apr 4, 2019

Copy link
Copy Markdown
Collaborator

⌛ Testing commit 231bd48 with merge a5dfdc5...

bors added a commit that referenced this pull request Apr 4, 2019
Rollup of 6 pull requests
Successful merges:
- #59316 (Internal lints take 2)
- #59663 (Be more direct about borrow contract)
- #59664 (Updated the documentation of spin_loop and spin_loop_hint)
- #59666 (Updated the environment description in rustc.)
- #59669 (Reduce repetition in librustc(_lint) wrt. impl LintPass by using macros)
- #59677 (rustfix coverage: Skip UI tests with non-json error-format)
Failed merges:
r? @ghost
@bors

bors commented Apr 4, 2019

Copy link
Copy Markdown
Collaborator

☀️ Test successful - checks-travis, status-appveyor
Approved by: Centril
Pushing a5dfdc5 to master...

@borsbors added the merged-by-bors This PR was explicitly merged by bors. label Apr 4, 2019
@bors
bors merged commit 231bd48 into rust-lang:masterApr 4, 2019
@Centril
Centril deleted the rollup-n7pnare branch April 4, 2019 07:25
@CentrilCentril added the rollup A PR which is a rollup label Oct 2, 2019
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merged-by-borsThis PR was explicitly merged by bors.rollupA PR which is a rollupS-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@Centril@bors@matklad@flip1995@phansch