]> git.lizzy.rs Git - rust.git/log
rust.git
2 years agoAuto merge of #98402 - cjgillot:undead, r=michaelwoerister
bors [Fri, 1 Jul 2022 14:43:15 +0000 (14:43 +0000)]
Auto merge of #98402 - cjgillot:undead, r=michaelwoerister

Rewrite dead-code pass to avoid fetching HIR.

This allows to get a more uniform handling of spans, and to simplify the grouping of diagnostics for variants and fields.

2 years agoAuto merge of #98730 - matthiaskrgr:rollup-2c4d4x5, r=matthiaskrgr
bors [Fri, 1 Jul 2022 11:09:35 +0000 (11:09 +0000)]
Auto merge of #98730 - matthiaskrgr:rollup-2c4d4x5, r=matthiaskrgr

Rollup of 10 pull requests

Successful merges:

 - #97629 ([core] add `Exclusive` to sync)
 - #98503 (fix data race in thread::scope)
 - #98670 (llvm-wrapper: adapt for LLVMConstExtractValue removal)
 - #98671 (Fix source sidebar bugs)
 - #98677 (For diagnostic information of Boolean, remind it as use the type: 'bool')
 - #98684 (add test for 72793)
 - #98688 (interpret: add From<&MplaceTy> for PlaceTy)
 - #98695 (use "or pattern")
 - #98709 (Remove unneeded methods declaration for old web browsers)
 - #98717 (get rid of tidy 'unnecessarily ignored' warnings)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoAuto merge of #98752 - matthiaskrgr:rollup-uwimznc, r=matthiaskrgr
bors [Fri, 1 Jul 2022 08:19:29 +0000 (08:19 +0000)]
Auto merge of #98752 - matthiaskrgr:rollup-uwimznc, r=matthiaskrgr

Rollup of 9 pull requests

Successful merges:

 - #98610 (fix `emit_inference_failure_err` ICE)
 - #98640 (Let rust-analyzer ship on stable, non-preview)
 - #98686 (add ice test for 46511)
 - #98727 (rustdoc: filter '_ lifetimes from ty::PolyTraitRef)
 - #98729 (clarify that ExactSizeIterator::len returns the remaining length)
 - #98733 (Request to be notified of MIR changes)
 - #98734 (Update RELEASES.md)
 - #98745 (Add a `--build-dir` flag to rustbuild)
 - #98749 (Add macro_rules! rustdoc change to 1.62 relnotes)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoRollup merge of #98749 - CAD97:patch-3, r=jyn514
Matthias Krüger [Fri, 1 Jul 2022 04:06:00 +0000 (06:06 +0200)]
Rollup merge of #98749 - CAD97:patch-3, r=jyn514

Add macro_rules! rustdoc change to 1.62 relnotes

#96630 was tagged <kbd>relnotes</kbd> but didn't make it into the notes. Given this is a compatibility issue (https://github.com/rust-lang/rust/issues/97030, https://github.com/rust-lang/rust/issues/98735, https://github.com/rust-lang/rust/issues/98743), it probably *should* be retroactively added.

2 years agoRollup merge of #98745 - thomcc:build-dir-arg, r=jyn514
Matthias Krüger [Fri, 1 Jul 2022 04:05:59 +0000 (06:05 +0200)]
Rollup merge of #98745 - thomcc:build-dir-arg, r=jyn514

Add a `--build-dir` flag to rustbuild

This adds an optional `--build-dir <path>` flag to rustbuild (to both the python and rust code in src/bootstrap). If provided, it overrides build directory from the config file (if any was provided).

My reason for wanting this is that I often will make a change, save, and then go run `x.py check` or `x.py test` (or something). Because I've saved, vscode will start doing its thing in the background, but this will take the file lock, preventing `x.py` from running until vscode finishes whatever it's doing (since the manually invoked x.py won't be able to acquire said file lock). This is annoying, because I'd rather the command I explicitly invoke *not* wait for r-a to complete, as r-a's check is conceptually a background task (and one which can take quite some time to complete).

Anyway, while there are likely other ways this could be handled, if you have the disk space an easy way is to just have vscode be configured to use a different build directory, and then they never have to block each-other.

This can currently be arranged without this patch, by maintaining two `config.toml`s, one of which has a different build dir, and just exists to be passed into the overridden check command in vscode.

Unfortunately, this has the downside of requiring I maintain two `config.toml`s and keep them (at least somewhat) in sync, aside from the build dir. I dislike for several reasons, not the least of which because I know myself well enough to know that these will inevitably get out of sync and confuse me in the future (perhaps this case would be different since I've thought about it enough to write this patch? Who knows, I'd rather not find out).

Either way, it would be much easier for me to have a way for *only* the build directory to differ, which this patch provides by way of a new flag.  I suggested this to `@jyn514` who indicated it sounded reasonable so long as it didn't add too much complexity, which I think I've achieved, but he can be the judge.

Anyway, with this patch I can just use something like `["python3", "x.py", "check", "--build-dir", "build-vscode", "--json-output"]` as the overridden check command to rust-analyzer, and do not need to futz with any additional `config.toml`s. Which is very nice!

I've tested this manually, and can confirm that it works. I'm not sure if it needs automated tests, or where I should add them if so.

r? `@jyn514` (who has had to put up with my complaints about this... many times. <3)

2 years agoRollup merge of #98734 - tmiasko:uninhabited-calls-release-notes, r=Mark-Simulacrum
Matthias Krüger [Fri, 1 Jul 2022 04:05:58 +0000 (06:05 +0200)]
Rollup merge of #98734 - tmiasko:uninhabited-calls-release-notes, r=Mark-Simulacrum

Update RELEASES.md

Clarify that flow sensitive checks now understand that *visibly*
uninhabited call expressions never return.

The change influences checks of reachable and unreachable code alike,
not just dead code like previous wording would imply.

cc ``@Kixunil``

2 years agoRollup merge of #98733 - celinval:patch-1, r=Mark-Simulacrum
Matthias Krüger [Fri, 1 Jul 2022 04:05:57 +0000 (06:05 +0200)]
Rollup merge of #98733 - celinval:patch-1, r=Mark-Simulacrum

Request to be notified of MIR changes

Adding myself (celinval) to be notified of PRs that changes the MIR.

2 years agoRollup merge of #98729 - the8472:exactsize-docs, r=thomcc
Matthias Krüger [Fri, 1 Jul 2022 04:05:56 +0000 (06:05 +0200)]
Rollup merge of #98729 - the8472:exactsize-docs, r=thomcc

clarify that ExactSizeIterator::len returns the remaining length

fixes #98721

2 years agoRollup merge of #98727 - notriddle:notriddle/issue-98697, r=GuillaumeGomez
Matthias Krüger [Fri, 1 Jul 2022 04:05:55 +0000 (06:05 +0200)]
Rollup merge of #98727 - notriddle:notriddle/issue-98697, r=GuillaumeGomez

rustdoc: filter '_ lifetimes from ty::PolyTraitRef

Fixes #98697

2 years agoRollup merge of #98686 - matthiaskrgr:test-46511, r=compiler-errors
Matthias Krüger [Fri, 1 Jul 2022 04:05:54 +0000 (06:05 +0200)]
Rollup merge of #98686 - matthiaskrgr:test-46511, r=compiler-errors

add ice test for 46511

Fixes #46511

r? ``@compiler-errors``

2 years agoRollup merge of #98640 - cuviper:stable-rust-analyzer, r=Mark-Simulacrum
Matthias Krüger [Fri, 1 Jul 2022 04:05:53 +0000 (06:05 +0200)]
Rollup merge of #98640 - cuviper:stable-rust-analyzer, r=Mark-Simulacrum

Let rust-analyzer ship on stable, non-preview

The consensus on rust-lang/rust-analyzer#12432 seems to be that we are ready for `rust-analyzer` to ship as a rustup component on the beta and stable channels. This won't always be the preferred distribution method, e.g. the VS Code extension will probably still independently update to its weekly releases, but it's still useful to have a component that follows the release train with the rest of the Rust toolchain. So this removes the nightly-only gating on the bundled component, and removes the "-preview" suffix as well by the usual renaming mechanism.

cc ``@rust-lang/wg-rls-2`` ``@rust-lang/release``

2 years agoRollup merge of #98610 - lcnr:emit_inference_failure_err-ice, r=estebank
Matthias Krüger [Fri, 1 Jul 2022 04:05:52 +0000 (06:05 +0200)]
Rollup merge of #98610 - lcnr:emit_inference_failure_err-ice, r=estebank

fix `emit_inference_failure_err` ICE

fixes #98598

this fix doesn't make me too happy, but :shrug:

2 years agoAdd macro_rules! rustdoc change to 1.62 relnotes
Christopher Durham [Fri, 1 Jul 2022 02:18:43 +0000 (22:18 -0400)]
Add macro_rules! rustdoc change to 1.62 relnotes

2 years agoAuto merge of #98706 - flip1995:clippyup, r=Dylan-DPC
bors [Fri, 1 Jul 2022 01:30:37 +0000 (01:30 +0000)]
Auto merge of #98706 - flip1995:clippyup, r=Dylan-DPC

Update Clippy

r? `@Manishearth`

2 years agoAdd a `--build-dir` flag to rustbuild
Thom Chiovoloni [Thu, 30 Jun 2022 22:50:48 +0000 (15:50 -0700)]
Add a `--build-dir` flag to rustbuild

2 years agoRequest to be notified of MIR changes
Celina G. Val [Thu, 30 Jun 2022 18:18:56 +0000 (11:18 -0700)]
Request to be notified of MIR changes

Adding myself (celinval) to be notified of PRs that changes the MIR.

2 years agoRollup merge of #98717 - RalfJung:make-tidy-less-annoying, r=jyn514
Matthias Krüger [Thu, 30 Jun 2022 17:55:57 +0000 (19:55 +0200)]
Rollup merge of #98717 - RalfJung:make-tidy-less-annoying, r=jyn514

get rid of tidy 'unnecessarily ignored' warnings

I think these warnings are quite pointless: when I say `allow(foo)` in my code, that doesn't necessarily mean that I expect `foo` to happen -- it just means that I am okay with `foo` happening.

For example, having to add and remove `ignore-tidy-linelength` as the longest line in the file keeps growing and shrinking is just annoying and doesn't benefit anyone, IMO. This usually incurs *two* CI roundtrips: first CI tells you that line lengths in your test file are ignored unnecessarily, so you go and remove that attribute; then CI tells you that now your line numbers changed, so you re-bless your tests (often takes >5min if parts of rustc need rebuilding because `./x.py fmt` changed something somewhere). That's just a lot of wasted effort and time and patience.

2 years agoRollup merge of #98709 - GuillaumeGomez:rm-decl-for-old-browsers, r=Dylan-DPC
Matthias Krüger [Thu, 30 Jun 2022 17:55:56 +0000 (19:55 +0200)]
Rollup merge of #98709 - GuillaumeGomez:rm-decl-for-old-browsers, r=Dylan-DPC

Remove unneeded methods declaration for old web browsers

All these methods were not defined for IE mostly. But since we don't support it anymore, no need to keep them around.

cc ```@jsha```
r? ```@notriddle```

2 years agoRollup merge of #98695 - tshepang:or-pattern, r=compiler-errors
Matthias Krüger [Thu, 30 Jun 2022 17:55:55 +0000 (19:55 +0200)]
Rollup merge of #98695 - tshepang:or-pattern, r=compiler-errors

use "or pattern"

2 years agoRollup merge of #98688 - RalfJung:from-mplace, r=oli-obk
Matthias Krüger [Thu, 30 Jun 2022 17:55:54 +0000 (19:55 +0200)]
Rollup merge of #98688 - RalfJung:from-mplace, r=oli-obk

interpret: add From<&MplaceTy> for PlaceTy

We have a similar instance for `&MPlaceTy` to `OpTy`. Also add the same for `&mut`.

This avoids having to write `&(*place).into()`, which we have a few times here and at least twice in Miri (and it comes up again in my current patch).

r? ```@oli-obk```

2 years agoRollup merge of #98684 - matthiaskrgr:ice-test-72793, r=oli-obk
Matthias Krüger [Thu, 30 Jun 2022 17:55:54 +0000 (19:55 +0200)]
Rollup merge of #98684 - matthiaskrgr:ice-test-72793, r=oli-obk

add test for 72793

Fixes #72793

r? ````@oli-obk````

2 years agoRollup merge of #98677 - lyming2007:issue-98492-fix, r=lcnr
Matthias Krüger [Thu, 30 Jun 2022 17:55:53 +0000 (19:55 +0200)]
Rollup merge of #98677 - lyming2007:issue-98492-fix, r=lcnr

For diagnostic information of Boolean, remind it as use the type: 'bool'

Fixes #98492.

It helps programmers coming from other languages
modified:   compiler/rustc_resolve/src/late/diagnostics.rs

2 years agoRollup merge of #98671 - GuillaumeGomez:source-sidebar-fixes, r=notriddle
Matthias Krüger [Thu, 30 Jun 2022 17:55:52 +0000 (19:55 +0200)]
Rollup merge of #98671 - GuillaumeGomez:source-sidebar-fixes, r=notriddle

Fix source sidebar bugs

This PR fixes the following two bugs:

![Screenshot from 2022-06-29 14-39-58](https://user-images.githubusercontent.com/3050060/176449070-3e3762da-2bfe-4acf-8eb0-34f6eb4c94ed.png)
![Screenshot from 2022-06-29 15-05-09](https://user-images.githubusercontent.com/3050060/176449073-b164820b-bd71-4b1a-990c-bba4e5fce196.png)

I added regression tests to prevent them to happen again.

I think we should backport it to beta as well.

You can test it [here](https://rustdoc.crud.net/imperio/source-sidebar-fixes/src/std/lib.rs.html).

cc ```@jsha```
r? ```@notriddle```

2 years agoRollup merge of #98670 - krasimirgg:llvm-15-LLVMConstExtractValue, r=nikic
Matthias Krüger [Thu, 30 Jun 2022 17:55:52 +0000 (19:55 +0200)]
Rollup merge of #98670 - krasimirgg:llvm-15-LLVMConstExtractValue, r=nikic

llvm-wrapper: adapt for LLVMConstExtractValue removal

`LLVMConstExtractValue` was removed recently from LLVM: https://github.com/llvm/llvm-project/commit/5548e807b5777fdda167b6795e0e05432a6163f1.

This adapts llvm-wrapper to use the new alternative where available, following https://rust-lang.zulipchat.com/#narrow/stream/187780-t-compiler.2Fwg-llvm/topic/LLVMConstExtractValue.20removal.

2 years agoRollup merge of #98503 - RalfJung:scope-race, r=m-ou-se
Matthias Krüger [Thu, 30 Jun 2022 17:55:51 +0000 (19:55 +0200)]
Rollup merge of #98503 - RalfJung:scope-race, r=m-ou-se

fix data race in thread::scope

Puts the `ScopeData` into an `Arc` so it sticks around as long as we need it.
This means one extra `Arc::clone` per spawned scoped thread, which I hope is fine.

Fixes https://github.com/rust-lang/rust/issues/98498
r? `````@m-ou-se`````

2 years agoRollup merge of #97629 - guswynn:exclusive_struct, r=m-ou-se
Matthias Krüger [Thu, 30 Jun 2022 17:55:50 +0000 (19:55 +0200)]
Rollup merge of #97629 - guswynn:exclusive_struct, r=m-ou-se

[core] add `Exclusive` to sync

(discussed here: https://rust-lang.zulipchat.com/#narrow/stream/219381-t-libs/topic/Adding.20.60SyncWrapper.60.20to.20std)

`Exclusive` is a wrapper that exclusively allows mutable access to the inner value if you have exclusive access to the wrapper. It acts like a compile time mutex, and hold an unconditional `Sync` implementation.

## Justification for inclusion into std
- This wrapper unblocks actual problems:
  - The example that I hit was a vector of `futures::future::BoxFuture`'s causing a central struct in a script to be non-`Sync`. To work around it, you either write really difficult code, or wrap the futures in a needless mutex.
- Easy to maintain: this struct is as simple as a wrapper can get, and its `Sync` implementation has very clear reasoning
- Fills a gap: `&/&mut` are to `RwLock` as `Exclusive` is to `Mutex`

## Public Api
```rust
// core::sync
#[derive(Default)]
struct Exclusive<T: ?Sized> { ... }

impl<T: ?Sized> Sync for Exclusive {}

impl<T> Exclusive<T> {
    pub const fn new(t: T) -> Self;
    pub const fn into_inner(self) -> T;
}

impl<T: ?Sized> Exclusive<T> {
    pub const fn get_mut(&mut self) -> &mut T;
    pub const fn get_pin_mut(Pin<&mut self>) -> Pin<&mut T>;
    pub const fn from_mut(&mut T) -> &mut Exclusive<T>;
    pub const fn from_pin_mut(Pin<&mut T>) -> Pin<&mut Exclusive<T>>;
}

impl<T: Future> Future for Exclusive { ... }

impl<T> From<T> for Exclusive<T> { ... }
impl<T: ?Sized> Debug for Exclusive { ... }
```

## Naming
This is a big bikeshed, but I felt that `Exclusive` captured its general purpose quite well.

## Stability and location
As this is so simple, it can be in `core`. I feel that it can be stabilized quite soon after it is merged, if the libs teams feels its reasonable to add. Also, I don't really know how unstable feature work in std/core's codebases, so I might need help fixing them

## Tips for review
The docs probably are the thing that needs to be reviewed! I tried my best, but I'm sure people have more experience than me writing docs for `Core`

### Implementation:
The API is mostly pulled from https://docs.rs/sync_wrapper/latest/sync_wrapper/struct.SyncWrapper.html (which is apache 2.0 licenesed), and the implementation is trivial:
- its an unsafe justification for pinning
- its an unsafe justification for the `Sync` impl (mostly reasoned about by ````@danielhenrymantilla```` here: https://github.com/Actyx/sync_wrapper/pull/2)
- and forwarding impls, starting with derivable ones and `Future`

2 years agoclarify that ExactSizeIterator::len returns the remaining length
The 8472 [Thu, 30 Jun 2022 17:45:36 +0000 (19:45 +0200)]
clarify that ExactSizeIterator::len returns the remaining length

2 years agorustdoc: filter '_ lifetimes from ty::PolyTraitRef
Michael Howell [Thu, 30 Jun 2022 17:35:50 +0000 (10:35 -0700)]
rustdoc: filter '_ lifetimes from ty::PolyTraitRef

Fixes #98697

2 years agoFlip RustAnalyzer to stable=true
Josh Stone [Thu, 30 Jun 2022 17:07:48 +0000 (10:07 -0700)]
Flip RustAnalyzer to stable=true

2 years agoFor diagnostic information of Boolean, remind it as use the type: 'bool'
Yiming Lei [Wed, 29 Jun 2022 16:09:34 +0000 (09:09 -0700)]
For diagnostic information of Boolean, remind it as use the type: 'bool'
It helps programmers coming from other languages
modified:   compiler/rustc_resolve/src/late/diagnostics.rs

modified:   src/test/ui/lint/recommend-literal.rs
modified:   src/test/ui/lint/recommend-literal.stderr

modified:   compiler/rustc_resolve/src/late/diagnostics.rs
modified:   src/test/ui/lint/recommend-literal.rs
modified:   src/test/ui/lint/recommend-literal.stderr

modified:   compiler/rustc_resolve/src/late/diagnostics.rs
modified:   src/test/ui/lint/recommend-literal.rs
modified:   src/test/ui/lint/recommend-literal.stderr

2 years agoget rid of some tidy 'unnecessarily ignored' warnings
Ralf Jung [Thu, 30 Jun 2022 15:23:51 +0000 (11:23 -0400)]
get rid of some tidy 'unnecessarily ignored' warnings

2 years agoAdd test to ensure that scroll position is kept when opening/closing source sidebar
Guillaume Gomez [Wed, 29 Jun 2022 21:21:46 +0000 (23:21 +0200)]
Add test to ensure that scroll position is kept when opening/closing source sidebar

2 years agoFix scroll when source sidebar is open on mobile
Guillaume Gomez [Wed, 29 Jun 2022 21:21:26 +0000 (23:21 +0200)]
Fix scroll when source sidebar is open on mobile

2 years agoadd issue number to fixme
lcnr [Thu, 30 Jun 2022 13:53:17 +0000 (15:53 +0200)]
add issue number to fixme

2 years agoadd logging to `write_resolution`
lcnr [Thu, 30 Jun 2022 12:48:49 +0000 (14:48 +0200)]
add logging to `write_resolution`

2 years agollvm-wrapper: adapt for LLVMConstExtractValue removal
Krasimir Georgiev [Wed, 29 Jun 2022 14:00:40 +0000 (14:00 +0000)]
llvm-wrapper: adapt for LLVMConstExtractValue removal

2 years agoRemove unneeded methods declaration for old web browsers
Guillaume Gomez [Thu, 30 Jun 2022 11:23:13 +0000 (13:23 +0200)]
Remove unneeded methods declaration for old web browsers

2 years agoUpdate Cargo.lock
Philipp Krones [Thu, 30 Jun 2022 09:35:55 +0000 (11:35 +0200)]
Update Cargo.lock

2 years agoAuto merge of #98377 - davidv1992:add-lifetimes-to-argument-temporaries, r=oli-obk
bors [Thu, 30 Jun 2022 09:20:52 +0000 (09:20 +0000)]
Auto merge of #98377 - davidv1992:add-lifetimes-to-argument-temporaries, r=oli-obk

Added llvm lifetime annotations to function call argument temporaries.

The goal of this change is to ensure that llvm will do stack slot
optimization on these temporaries. This ensures that in code like:
```rust
const A: [u8; 1024] = [0; 1024];

fn copy_const() {
    f(A);
    f(A);
}
```
we only use 1024 bytes of stack space, instead of 2048 bytes.

I am new to developing for the rust compiler, and as such not entirely sure, but I believe this should be sufficient to close #98156.

Also, this does not contain a test case to ensure this keeps working, primarily because I am not sure how to go about testing this. I would love some suggestions as to how that could be approached.

2 years agoMerge commit '0cb0f7636851f9fcc57085cf80197a2ef6db098f' into clippyup
Philipp Krones [Thu, 30 Jun 2022 08:50:09 +0000 (10:50 +0200)]
Merge commit '0cb0f7636851f9fcc57085cf80197a2ef6db098f' into clippyup

2 years agoAuto merge of #9069 - flip1995:rustup, r=flip1995
bors [Thu, 30 Jun 2022 08:32:54 +0000 (08:32 +0000)]
Auto merge of #9069 - flip1995:rustup, r=flip1995

Rustup

r? `@ghost`

changelog: none

2 years agoBump Clippy version -> 0.1.64
Philipp Krones [Thu, 30 Jun 2022 08:29:22 +0000 (10:29 +0200)]
Bump Clippy version -> 0.1.64

2 years agoBump nightly version -> 2022-06-30
Philipp Krones [Thu, 30 Jun 2022 08:28:58 +0000 (10:28 +0200)]
Bump nightly version -> 2022-06-30

2 years agoFix dogfood
Philipp Krones [Thu, 30 Jun 2022 08:28:04 +0000 (10:28 +0200)]
Fix dogfood

2 years agoMerge remote-tracking branch 'upstream/master' into rustup
Philipp Krones [Thu, 30 Jun 2022 08:27:25 +0000 (10:27 +0200)]
Merge remote-tracking branch 'upstream/master' into rustup

2 years agoAuto merge of #98698 - RalfJung:miri, r=RalfJung
bors [Thu, 30 Jun 2022 06:37:48 +0000 (06:37 +0000)]
Auto merge of #98698 - RalfJung:miri, r=RalfJung

update Miri

Fixes https://github.com/rust-lang/rust/issues/98599
r? `@ghost`

2 years agoAuto merge of #9068 - tamaroning:fix-typo-2022-6-30, r=giraffate,xFrednet
bors [Thu, 30 Jun 2022 06:18:19 +0000 (06:18 +0000)]
Auto merge of #9068 - tamaroning:fix-typo-2022-6-30, r=giraffate,xFrednet

fix typo in Clippy Lints page

https://rust-lang.github.io/rust-clippy/master/#significant_drop_in_scrutinee

changelog: none

2 years agoUpdate large_const_arrays.rs
tamaron [Thu, 30 Jun 2022 04:21:17 +0000 (13:21 +0900)]
Update large_const_arrays.rs

2 years agoAuto merge of #8666 - Jarcho:while_let_loop_7913, r=dswij
bors [Thu, 30 Jun 2022 04:04:08 +0000 (04:04 +0000)]
Auto merge of #8666 - Jarcho:while_let_loop_7913, r=dswij

Don't lint `while_let_loop` when significant drop order would change

fixes #7226
fixes #7913
fixes #5717

For #5717 it may not stay fully fixed. This is only completely fixed right now due to all the allowed drop impls have `#[may_dangle]` on their drop impls. This may get changed in the future based on how significant drops are determined, but the example listed with `RefCell` shouldn't break.

changelog: Don't lint `while_let_loop` when the order of significant drops would change

2 years agoAuto merge of #98649 - RalfJung:guardians-of-mir, r=oli-obk
bors [Thu, 30 Jun 2022 03:50:35 +0000 (03:50 +0000)]
Auto merge of #98649 - RalfJung:guardians-of-mir, r=oli-obk

move MIR syntax into a dedicated file and ping some people whenever it changes

Adding or changing MIR operations/statements/whatever should be under significant scrutiny wrt their wider impact, specified semantics, and so on. So let's start by putting all that into a dedicated file and pinging some people whenever that file changes.

This PR only moves definitions around, and then fiddles with imports until it all works again.

2 years agofix
tamaron [Thu, 30 Jun 2022 02:59:23 +0000 (11:59 +0900)]
fix

2 years agoupdate Miri
Ralf Jung [Thu, 30 Jun 2022 02:14:03 +0000 (22:14 -0400)]
update Miri

2 years agouse "or pattern"
Tshepang Mbambo [Thu, 30 Jun 2022 01:05:51 +0000 (03:05 +0200)]
use "or pattern"

2 years agoAuto merge of #98691 - matthiaskrgr:rollup-ymsa64p, r=matthiaskrgr
bors [Thu, 30 Jun 2022 01:02:24 +0000 (01:02 +0000)]
Auto merge of #98691 - matthiaskrgr:rollup-ymsa64p, r=matthiaskrgr

Rollup of 6 pull requests

Successful merges:

 - #96727 (Make TAIT behave exactly like RPIT)
 - #98681 (rustdoc-json: Make default value of blanket impl assoc types work)
 - #98682 (add tests for ICE 94432)
 - #98683 (add test for ice 68875)
 - #98685 (Replace `sort_modules_alphabetically` boolean with enum)
 - #98687 (add test for 47814)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoUpdate RELEASES.md
Tomasz Miąsko [Thu, 30 Jun 2022 00:00:00 +0000 (00:00 +0000)]
Update RELEASES.md

Clarify that flow sensitive checks now understand that *visibly*
uninhabited call expressions never return.

The change influences checks of reachable and unreachable code alike,
not just dead code like previous wording would imply.

2 years agofix doc issues
Ralf Jung [Wed, 29 Jun 2022 23:18:30 +0000 (19:18 -0400)]
fix doc issues

2 years agoRollup merge of #98687 - matthiaskrgr:test_47814, r=compiler-errors
Matthias Krüger [Wed, 29 Jun 2022 22:23:55 +0000 (00:23 +0200)]
Rollup merge of #98687 - matthiaskrgr:test_47814, r=compiler-errors

add test for 47814

not sure if the issue should actually get closed though, hm

r? ``@compiler-errors``

2 years agoRollup merge of #98685 - camelid:sorting-flag, r=GuillaumeGomez
Matthias Krüger [Wed, 29 Jun 2022 22:23:54 +0000 (00:23 +0200)]
Rollup merge of #98685 - camelid:sorting-flag, r=GuillaumeGomez

Replace `sort_modules_alphabetically` boolean with enum

This fixes the long-standing FIXME there and makes the code easier to
understand. The reference to modules in both the old and new names seems
potentially wrong since I believe it applies to all items.

r? ``@GuillaumeGomez``

2 years agoRollup merge of #98683 - matthiaskrgr:ice-test-68875, r=compiler-errors
Matthias Krüger [Wed, 29 Jun 2022 22:23:53 +0000 (00:23 +0200)]
Rollup merge of #98683 - matthiaskrgr:ice-test-68875, r=compiler-errors

add test for ice 68875

Fixes #68875

2 years agoRollup merge of #98682 - matthiaskrgr:test-94432, r=compiler-errors
Matthias Krüger [Wed, 29 Jun 2022 22:23:52 +0000 (00:23 +0200)]
Rollup merge of #98682 - matthiaskrgr:test-94432, r=compiler-errors

add tests for ICE 94432

Fixes #94432

2 years agoRollup merge of #98681 - Enselic:rustdoc-json-default-assoc-type-blanket-impl, r...
Matthias Krüger [Wed, 29 Jun 2022 22:23:51 +0000 (00:23 +0200)]
Rollup merge of #98681 - Enselic:rustdoc-json-default-assoc-type-blanket-impl, r=GuillaumeGomez

rustdoc-json: Make default value of blanket impl assoc types work

Closes #98658

r? ``@GuillaumeGomez``

``@rustbot`` labels +A-rustdoc-json

2 years agoRollup merge of #96727 - oli-obk:no_expect, r=lcnr
Matthias Krüger [Wed, 29 Jun 2022 22:23:50 +0000 (00:23 +0200)]
Rollup merge of #96727 - oli-obk:no_expect, r=lcnr

Make TAIT behave exactly like RPIT

fixes https://github.com/rust-lang/rust/issues/96552

This makes type-alias-impl-trait behave like return-position-impl-trait. Unfortunately it also causes some cases to stop compiling due to "needing type annotations" and makes panicking cause fallback for the hidden type to `()`.

All of these are addressable, but we should probably address them for RPIT and TAIT together

r? ``@lcnr``

2 years agoAuto merge of #98520 - RalfJung:invalid, r=compiler-errors
bors [Wed, 29 Jun 2022 22:21:43 +0000 (22:21 +0000)]
Auto merge of #98520 - RalfJung:invalid, r=compiler-errors

interpret: adjust error from constructing an invalid value

2 years agoUpdate browser-ui-test version to 0.9.7
Guillaume Gomez [Wed, 29 Jun 2022 21:20:21 +0000 (23:20 +0200)]
Update browser-ui-test version to 0.9.7

2 years agointerpret: add From<&MplaceTy> for PlaceTy
Ralf Jung [Wed, 29 Jun 2022 21:07:24 +0000 (17:07 -0400)]
interpret: add From<&MplaceTy> for PlaceTy

2 years agoadd test for 47814
Matthias Krüger [Wed, 29 Jun 2022 20:27:18 +0000 (22:27 +0200)]
add test for 47814

not sure if the issue should actually get closed though, hm

r? @compiler-errors

2 years agoadd ice test for 46511
Matthias Krüger [Wed, 29 Jun 2022 20:16:36 +0000 (22:16 +0200)]
add ice test for 46511

Fixes #46511

2 years agoReplace `sort_modules_alphabetically` boolean with enum
Noah Lev [Wed, 29 Jun 2022 20:04:43 +0000 (13:04 -0700)]
Replace `sort_modules_alphabetically` boolean with enum

This fixes the long-standing FIXME there and makes the code easier to
understand. The reference to modules in both the old and new names seems
potentially wrong since I believe it applies to all items.

2 years agoping more people
Ralf Jung [Wed, 29 Jun 2022 12:58:26 +0000 (08:58 -0400)]
ping more people

Co-authored-by: David Wood <agile.lion3441@fuligin.ink>
2 years agomove MIR syntax into a dedicated file and ping some people whenever it changes
Ralf Jung [Wed, 29 Jun 2022 00:05:23 +0000 (20:05 -0400)]
move MIR syntax into a dedicated file and ping some people whenever it changes

2 years agoadd test for 72793
Matthias Krüger [Wed, 29 Jun 2022 19:55:10 +0000 (21:55 +0200)]
add test for 72793

Fixes #72793

r? @oli-obk

2 years agoadd test for ice 68875
Matthias Krüger [Wed, 29 Jun 2022 19:38:42 +0000 (21:38 +0200)]
add test for ice 68875

Fixes #68875

2 years agoadd tests for ICE 94432
Matthias Krüger [Wed, 29 Jun 2022 19:30:19 +0000 (21:30 +0200)]
add tests for ICE 94432

Fixes #94432

2 years agorustdoc-json: Make default value of blanket impl assoc types work
Martin Nordholts [Wed, 29 Jun 2022 18:34:56 +0000 (20:34 +0200)]
rustdoc-json: Make default value of blanket impl assoc types work

2 years agoAuto merge of #98680 - matthiaskrgr:rollup-1bkrrn9, r=matthiaskrgr
bors [Wed, 29 Jun 2022 18:42:19 +0000 (18:42 +0000)]
Auto merge of #98680 - matthiaskrgr:rollup-1bkrrn9, r=matthiaskrgr

Rollup of 10 pull requests

Successful merges:

 - #98434 (Ensure that `static_crt` is set in the bootstrapper whenever using `cc-rs` to get a compiler command line.)
 - #98636 (Triagebot: Fix mentions word wrapping.)
 - #98642 (Fix #98260)
 - #98643 (Improve pretty printing of valtrees for references)
 - #98646 (rustdoc: fix bugs in main.js popover help and settings)
 - #98647 (Update cargo)
 - #98652 (`alloc`: clean and ensure `no_global_oom_handling`  builds are warning-free)
 - #98660 (Unbreak stage1 tests via ignore-stage1 in `proc-macro/invalid-punct-ident-1.rs`.)
 - #98665 (Use verbose help for deprecation suggestion)
 - #98668 (Avoid some `&str` to `String` conversions with `MultiSpan::push_span_label`)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoRollup merge of #98668 - TaKO8Ki:avoid-many-&str-to-string-conversions, r=Dylan-DPC
Matthias Krüger [Wed, 29 Jun 2022 18:35:07 +0000 (20:35 +0200)]
Rollup merge of #98668 - TaKO8Ki:avoid-many-&str-to-string-conversions, r=Dylan-DPC

Avoid some `&str` to `String` conversions with `MultiSpan::push_span_label`

This patch removes some`&str` to `String` conversions with `MultiSpan::push_span_label`.

2 years agoRollup merge of #98665 - ChrisDenton:deprecated-suggestion, r=compiler-errors
Matthias Krüger [Wed, 29 Jun 2022 18:35:06 +0000 (20:35 +0200)]
Rollup merge of #98665 - ChrisDenton:deprecated-suggestion, r=compiler-errors

Use verbose help for deprecation suggestion

Fixes #98631

r? `@compiler-errors`

2 years agoRollup merge of #98660 - eddyb:invalid-punct-stage1, r=lqd
Matthias Krüger [Wed, 29 Jun 2022 18:35:05 +0000 (20:35 +0200)]
Rollup merge of #98660 - eddyb:invalid-punct-stage1, r=lqd

Unbreak stage1 tests via ignore-stage1 in `proc-macro/invalid-punct-ident-1.rs`.

#98188 broke `./x.py test --stage 1` (which I thought we ran in PR CI, cc `@rust-lang/infra)` i.e. the default `./x.py test` in dev checkouts, as the panic in `src/test/ui/proc-macro/invalid-punct-ident-1.rs` moved from the server (`rustc`) to the client (proc macro), and that means it's now affected by #59998.

I made the test look like `src/test/ui-fulldeps/issue-76270-panic-in-libproc-macro.rs` tho I'm a bit confused why that one is in `src/test/ui-fulldeps`, it should still work in `src/test/ui`, no? (cc `@Aaron1011)`

2 years agoRollup merge of #98652 - ojeda:warning-free-no_global_oom_handling, r=joshtriplett
Matthias Krüger [Wed, 29 Jun 2022 18:35:04 +0000 (20:35 +0200)]
Rollup merge of #98652 - ojeda:warning-free-no_global_oom_handling, r=joshtriplett

`alloc`: clean and ensure `no_global_oom_handling`  builds are warning-free

Rust 1.62.0 introduced a couple new `unused_imports` warnings
in `no_global_oom_handling` builds, making a total of 5 warnings.

<details>

```txt
warning: unused import: `Unsize`
 --> library/alloc/src/boxed/thin.rs:6:33
  |
6 | use core::marker::{PhantomData, Unsize};
  |                                 ^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused import: `from_fn`
  --> library/alloc/src/string.rs:51:18
   |
51 | use core::iter::{from_fn, FusedIterator};
   |                  ^^^^^^^

warning: unused import: `core::ops::Deref`
  --> library/alloc/src/vec/into_iter.rs:12:5
   |
12 | use core::ops::Deref;
   |     ^^^^^^^^^^^^^^^^

warning: associated function `shrink` is never used
   --> library/alloc/src/raw_vec.rs:424:8
    |
424 |     fn shrink(&mut self, cap: usize) -> Result<(), TryReserveError> {
    |        ^^^^^^
    |
    = note: `#[warn(dead_code)]` on by default

warning: associated function `forget_remaining_elements` is never used
   --> library/alloc/src/vec/into_iter.rs:126:19
    |
126 |     pub(crate) fn forget_remaining_elements(&mut self) {
    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^
```

</details>

This PR cleans them and ensures no new ones are introduced
so that projects compiling `alloc` without infallible allocations
do not see them (and may want to enable `-Dwarnings`).

The couple `dead_code` ones may be reverted when some fallible
allocation support starts using them.

2 years agoRollup merge of #98647 - ehuss:update-cargo, r=ehuss
Matthias Krüger [Wed, 29 Jun 2022 18:35:03 +0000 (20:35 +0200)]
Rollup merge of #98647 - ehuss:update-cargo, r=ehuss

Update cargo

2 commits in a5e08c4703f202e30cdaf80ca3e7c00baa59c496..dbff32b27893b899ae2397f3d56d1be111041d56
2022-06-23 20:12:03 +0000 to 2022-06-24 19:25:13 +0000
- Fetch GitHub commits by long hash more efficiently (rust-lang/cargo#10079)
- refactor(test): Clarify asserts are for UI (rust-lang/cargo#10778)

2 years agoRollup merge of #98646 - notriddle:notriddle/main.js, r=GuillaumeGomez
Matthias Krüger [Wed, 29 Jun 2022 18:35:02 +0000 (20:35 +0200)]
Rollup merge of #98646 - notriddle:notriddle/main.js, r=GuillaumeGomez

rustdoc: fix bugs in main.js popover help and settings

2 years agoRollup merge of #98643 - voidc:valtree-ref-pretty, r=lcnr
Matthias Krüger [Wed, 29 Jun 2022 18:35:01 +0000 (20:35 +0200)]
Rollup merge of #98643 - voidc:valtree-ref-pretty, r=lcnr

Improve pretty printing of valtrees for references

This implements the changes outlined in https://github.com/rust-lang/rust/issues/66451#issuecomment-1168859638.

r? `@lcnr`
Fixes #66451

2 years agoRollup merge of #98642 - yanchen4791:issue-98260-fix, r=spastorino
Matthias Krüger [Wed, 29 Jun 2022 18:35:00 +0000 (20:35 +0200)]
Rollup merge of #98642 - yanchen4791:issue-98260-fix, r=spastorino

Fix #98260

Fixes https://github.com/rust-lang/rust/issues/98260

2 years agoRollup merge of #98636 - ehuss:mentions-wrapping, r=Mark-Simulacrum
Matthias Krüger [Wed, 29 Jun 2022 18:34:59 +0000 (20:34 +0200)]
Rollup merge of #98636 - ehuss:mentions-wrapping, r=Mark-Simulacrum

Triagebot: Fix mentions word wrapping.

I forgot that GitHub's markdown treats newlines as hard breaks. This was causing some ugly-looking word wrapping in the triagebot mention messages. This fixes it so that the lines are not hard-wrapped.

2 years agoRollup merge of #98434 - dpaoliello:staticcrt, r=jyn514
Matthias Krüger [Wed, 29 Jun 2022 18:34:58 +0000 (20:34 +0200)]
Rollup merge of #98434 - dpaoliello:staticcrt, r=jyn514

Ensure that `static_crt` is set in the bootstrapper whenever using `cc-rs` to get a compiler command line.

When attempting to build rustc with LLVM on Windows, I noticed that the CRT flag provided to the C and C++ Compilers was inconsistent:

```
"-DCMAKE_C_FLAGS=-nologo -MT -Brepro" "-DCMAKE_CXX_FLAGS=-nologo -MD -Brepro"
```

Since the bootstrapper also sets the various `LLVM_USE_CRT` variables, this resulted in cl.exe reporting a bunch of warnings:

```
cl : Command line warning D9025 : overriding '/MD' with '/MT'
```

The root cause for this is that `cc_detect::find` was creating a `cc::Build` twice, but didn't set `static_crt` the second time.

It's possible that this what is also causing #81381

2 years agoDon't lint `while_let_loop` when drop order would change
Jason Newcomb [Fri, 8 Apr 2022 17:21:04 +0000 (13:21 -0400)]
Don't lint `while_let_loop` when drop order would change

2 years agoExtract util functions from `redundant_pattern_match`
Jason Newcomb [Fri, 8 Apr 2022 16:55:48 +0000 (12:55 -0400)]
Extract util functions from `redundant_pattern_match`

2 years agofix stderr by hand since that test is not run on my system
Ralf Jung [Mon, 27 Jun 2022 03:21:38 +0000 (23:21 -0400)]
fix stderr by hand since that test is not run on my system

2 years agointerpret: adjust error from constructing an invalid value
Ralf Jung [Sun, 26 Jun 2022 03:46:51 +0000 (23:46 -0400)]
interpret: adjust error from constructing an invalid value

2 years agoAuto merge of #9043 - dswij:9037-test, r=Manishearth
bors [Wed, 29 Jun 2022 15:09:37 +0000 (15:09 +0000)]
Auto merge of #9043 - dswij:9037-test, r=Manishearth

`extra_unused_lifetimes` add FP test case emitting from derived attributes.

Add test to cover for #9014 which is fixed in #9037.

changelog: [`extra_unused_lifetimes`] Add FP test case emitting from derived attributes.

---

Seeing the FP from the test:

```sh
$ git revert -m 1 1d1ae10876d3eaa5c982dd3daa083b7c2fc363b9
$ TESTNAME=extra_unused_lifetime cargo uitest
```

2 years agoAuto merge of #98669 - Dylan-DPC:rollup-8uzhcip, r=Dylan-DPC
bors [Wed, 29 Jun 2022 15:05:29 +0000 (15:05 +0000)]
Auto merge of #98669 - Dylan-DPC:rollup-8uzhcip, r=Dylan-DPC

Rollup of 7 pull requests

Successful merges:

 - #98415 (Migrate some `rustc_borrowck` diagnostics to `SessionDiagnostic`)
 - #98479 (Add `fetch_not` method on `AtomicBool`)
 - #98499 (Erase regions in New Abstract Consts)
 - #98516 (library: fix uefi va_list type definition)
 - #98554 (Fix box with custom allocator in miri)
 - #98607 (Clean up arg mismatch diagnostic, generalize tuple wrap suggestion)
 - #98625 (emit Retag for compound types with reference fields)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoAdd test for source sidebar toggle
Guillaume Gomez [Wed, 29 Jun 2022 13:30:01 +0000 (15:30 +0200)]
Add test for source sidebar toggle

2 years agoFix display of toggle on expanded source sidebar
Guillaume Gomez [Wed, 29 Jun 2022 13:28:16 +0000 (15:28 +0200)]
Fix display of toggle on expanded source sidebar

2 years agoAuto merge of #8981 - PrestonFrom:more_details_for_significant_drop_lint, r=flip1995
bors [Wed, 29 Jun 2022 13:23:21 +0000 (13:23 +0000)]
Auto merge of #8981 - PrestonFrom:more_details_for_significant_drop_lint, r=flip1995

Add details about how significant drop in match scrutinees can cause deadlocks

Adds more details about how a significant drop in a match scrutinee can cause a deadlock and include link to documentation.

changelog: Add more details to significant drop lint to explicitly show how temporaries in match scrutinees can cause deadlocks.

2 years agoUpdate/add tests for source sidebar in mobile mode
Guillaume Gomez [Wed, 29 Jun 2022 13:15:53 +0000 (15:15 +0200)]
Update/add tests for source sidebar in mobile mode

2 years agoFix height for the source sidebar in mobile mode
Guillaume Gomez [Wed, 29 Jun 2022 13:15:40 +0000 (15:15 +0200)]
Fix height for the source sidebar in mobile mode

2 years agoRollup merge of #98625 - RalfJung:retag, r=oli-obk
Dylan DPC [Wed, 29 Jun 2022 12:29:37 +0000 (17:59 +0530)]
Rollup merge of #98625 - RalfJung:retag, r=oli-obk

emit Retag for compound types with reference fields

I want to add an option to Miri to do retagging inside reference fields. But that means we first have to even emit `Retag` for types that *contain* references (rather than being of reference types). :)

Stacked Borrows originally did that, but we stopped doing it when hitting bunch of issues in the standard library. However I have since realized that we actually do emit `noalias` for newtypes references, which means for soundness we should recurse into fields. Also it'd probably be bad news if newtypes lose out on optimizations (and they don't, for anything else). I want to add an option for that to Miri so that we can start experimenting with those semantics.

r? ``@oli-obk``

2 years agoRollup merge of #98607 - compiler-errors:tuple-wrap-suggestion, r=oli-obk
Dylan DPC [Wed, 29 Jun 2022 12:29:36 +0000 (17:59 +0530)]
Rollup merge of #98607 - compiler-errors:tuple-wrap-suggestion, r=oli-obk

Clean up arg mismatch diagnostic, generalize tuple wrap suggestion

This is based on top of #97542, so just look at the last commit which contains the relevant changes.

1. Remove `final_arg_types` which was one of the last places we were using raw (`usize`) indices instead of typed indices in the arg mismatch suggestion code.
2. Improve the tuple wrap suggestion, now we suggest things like `call(a, b, c, d)` -> `call(a, (b, c), d)` :smiley_cat:
3. Folded in fix #98645

2 years agoRollup merge of #98554 - DrMeepster:box_unsizing_is_not_special, r=RalfJung
Dylan DPC [Wed, 29 Jun 2022 12:29:35 +0000 (17:59 +0530)]
Rollup merge of #98554 - DrMeepster:box_unsizing_is_not_special, r=RalfJung

Fix box with custom allocator in miri

This should fix the failures in https://github.com/rust-lang/miri/pull/2072 and https://github.com/rust-lang/rust/pull/98510.

cc ```@RalfJung```

2 years agoRollup merge of #98516 - dlrobertson:uefi_va_list, r=joshtriplett
Dylan DPC [Wed, 29 Jun 2022 12:29:34 +0000 (17:59 +0530)]
Rollup merge of #98516 - dlrobertson:uefi_va_list, r=joshtriplett

library: fix uefi va_list type definition

For uefi the `va_list` should always be the void pointer variant.

Related to: https://github.com/rust-lang/rust/issues/44930