Skip to content

Rollup of 7 pull requests - #72733

Closed
RalfJung wants to merge 48 commits into
rust-lang:masterfrom
RalfJung:rollup-ykyk2m8
Closed

Rollup of 7 pull requests#72733
RalfJung wants to merge 48 commits into
rust-lang:masterfrom
RalfJung:rollup-ykyk2m8

Conversation

@RalfJung

Copy link
Copy Markdown
Member

Successful merges:

Failed merges:

r? @ghost

lcnrand others added 30 commits May 11, 2020 10:29
Miri's pointer_offset_inbounds implementation has been moved into
librustc_mir as ptr_offset_inbounds (to avoid breaking miri on a
nightly update). The comments have been slightly reworked to better
match `offset`'s external documentation about what causes UB.
The intrinsic implementations are taken directly from miri.
Signed-off-by: Joe Richey <joerichey@google.com>
Signed-off-by: Joe Richey <joerichey@google.com>
Signed-off-by: Joe Richey <joerichey@google.com>
Signed-off-by: Joe Richey <joerichey@google.com>
Signed-off-by: Joe Richey <joerichey@google.com>
This is tricky to get right if we want to avoid panicking or wrapping.
Signed-off-by: Joe Richey <joerichey@google.com>
The previous code paniced if offset_bytes == i64::MIN. This commit:
- Properly computes the absoulte value to avoid this panic
- Adds a test for this edge case
Signed-off-by: Joe Richey <joerichey@google.com>
Detect type parameter that might require lifetime constraint.
Do not name `ReVar`s in expected/found output.
Reword text suggesting to check the lifetimes.
estebankand others added 18 commits May 27, 2020 16:28
We now perform the correct checks even if the pointer size differs
between the host and target.
Signed-off-by: Joe Richey <joerichey@google.com>
Tweak impl signature mismatch errors involving `RegionKind::ReVar` lifetimes
Fixrust-lang#66406, fixrust-lang#72106.
```
error: `impl` item signature doesn't match `trait` item signature
--> $DIR/trait-param-without-lifetime-constraint.rs:14:5
|
LL | fn get_relation(&self) -> To;
| ----------------------------- expected `fn(&Article) -> &ProofReader`
...
LL | fn get_relation(&self) -> &ProofReader {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ found `fn(&Article) -> &ProofReader`
|
= note: expected `fn(&Article) -> &ProofReader`
found `fn(&Article) -> &ProofReader`
help: the lifetime requirements from the `impl` do not correspond to the requirements in the `trait`
--> $DIR/trait-param-without-lifetime-constraint.rs:10:31
|
LL | fn get_relation(&self) -> To;
| ^^ consider borrowing this type parameter in the trait
```
r? @nikomatsakis
Make pointer offset methods/intrinsics const
Implements rust-lang#71499 using [the implementations from miri](https://github.com/rust-lang/miri/blob/52f5d202bdcfe8986f0615845f8d1647ab8a2c6a/src/shims/intrinsics.rs#L96-L112).
I added some tests what's allowed and what's UB. Let me know if any other cases should be added.
CC: @RalfJung@oli-obk
linker: Support `-static-pie` and `-static -shared`
This PR adds support for passing linker arguments for creating statically linked position-independent executables and "statically linked" shared libraries.
Therefore it incorporates the majority of rust-lang#70740 except for the linker rerun hack and actually flipping the "`static-pie` is supported" switch for musl targets.
…afe-fn, r=nikomatsakis
Implement RFC 2585: unsafe blocks in unsafe fn
Tracking issue: rust-lang#71668
r? @RalfJung cc @nikomatsakis
…chievink
borrowck `DefId` -> `LocalDefId`
Replaces some `DefId`s which must always be local with `LocalDefId` in `librustc_mir/borrowck`.
cc @marmeladema
Add Peekable::next_if
Prior art:
`rust_analyzer` uses [`Parser::eat`](https://github.com/rust-analyzer/rust-analyzer/blob/50f4ae798b7c54d417ee88455b87fd0477473150/crates/ra_parser/src/parser.rs#L94), which is `next_if` specialized to `|y| self.next_if(|x| x == y)`.
Basically every other parser I've run into in Rust has an equivalent of `Parser::eat`; see for example
- [cranelift](https://github.com/bytecodealliance/wasmtime/blob/94190d57244b26baf36629c88104b0ba516510cf/cranelift/reader/src/parser.rs#L498)
- [rcc](https://github.com/jyn514/rcc/blob/a8159c3904a0c950fbba817bf9109023fad69033/src/parse/mod.rs#L231)
- [crunch](https://github.com/Kixiron/crunch-lang/blob/8521874fab8a7d62bfa7dea8bd1da94b63e31be8/crates/crunch-parser/src/parser/mod.rs#L213-L241)
Possible extensions: A specialization of `next_if` to using `Eq::eq`. The only difficulty here is the naming - maybe `next_if_eq`?
Alternatives:
- Instead of `func: impl FnOnce(&I::Item) -> bool`, use `func: impl FnOnce(I::Item) -> Option<I::Item>`. This has the advantage that `func` can move the value if necessary, but means that there is no guarantee `func` will return the same value it was given.
- Instead of `fn next_if(...) -> Option<I::Item>`, use `fn next_if(...) -> bool`. This makes the common case of `iter.next_if(f).is_some()` easier, but makes the unusual case impossible.
Bikeshedding on naming:
- `next_if` could be renamed to `consume_if` (to match `eat`, but a little more formally)
- `next_if_eq` could be renamed to `consume`. This is more concise but less self-explanatory if you haven't written a lot of parsers.
- Both of the above, but with `consume` replaced by `eat`.
@RalfJung

Copy link
Copy Markdown
MemberAuthor

@rustbot modify labels: +rollup
@bors r+ rollup=never p=7

@bors

bors commented May 29, 2020

Copy link
Copy Markdown
Collaborator

📌 Commit 783cfb1 has been approved by RalfJung

@rustbotrustbot added the rollup A PR which is a rollup label May 29, 2020
@borsbors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label May 29, 2020
@bors

bors commented May 29, 2020

Copy link
Copy Markdown
Collaborator

⌛ Testing commit 783cfb1 with merge 12268b84def96542ba9482cac43b1c300a537f74...

@Dylan-DPC-zz

Copy link
Copy Markdown

Closing this and rolling a bigger one because the queue is long

@bors r-

@borsbors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels May 29, 2020
@RalfJung

Copy link
Copy Markdown
MemberAuthor

Okay. This one had PR CI pass at least. :D (and the two previous attempts failed in PR CI, identifying two faulty PRs in the queue)

@RalfJung
RalfJung deleted the rollup-ykyk2m8 branch May 29, 2020 15:01
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

rollupA PR which is a rollupS-waiting-on-authorStatus: This is awaiting some action (such as code changes or more information) from the author.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

12 participants

@RalfJung@bors@Dylan-DPC-zz@rustbot@lcnr@pickfire@petrochenkov@josephlr@jyn514@LeSeulArtichaut@estebank@nikomatsakis