]> git.lizzy.rs Git - rust.git/log
rust.git
22 months agoRollup merge of #100552 - petrochenkov:flavorcompat, r=lqd
Guillaume Gomez [Fri, 2 Sep 2022 09:34:49 +0000 (11:34 +0200)]
Rollup merge of #100552 - petrochenkov:flavorcompat, r=lqd

rustc_target: Add a compatibility layer to separate internal and user-facing linker flavors

I want to do some refactorings in `rustc_target` - merge `lld_flavor` and `linker_is_gnu` into `linker_flavor`, support combination gcc+lld (https://github.com/rust-lang/rust/pull/96827).
This PR adds some compatibility infra that makes that possible without making any changes to user-facing interfaces - `-Clinker-flavor` values and json target specs. (For json target specs this infra may eventually go away since they are not very stable.)

The second commit does some light refactoring of internal linker flavors (applies changes from https://github.com/petrochenkov/rust/commit/53eca42973b7e379b9fa0469c33f08680b57c35f that don't require mass-editing target specs).

22 months agoRollup merge of #100147 - Bryanskiy:private-in-public, r=petrochenkov
Guillaume Gomez [Fri, 2 Sep 2022 09:34:48 +0000 (11:34 +0200)]
Rollup merge of #100147 - Bryanskiy:private-in-public, r=petrochenkov

optimization of access level table construction

Refactoring which was mentioned in #87487

22 months agoRollup merge of #99583 - shepmaster:provider-plus-plus, r=yaahc
Guillaume Gomez [Fri, 2 Sep 2022 09:34:46 +0000 (11:34 +0200)]
Rollup merge of #99583 - shepmaster:provider-plus-plus, r=yaahc

Add additional methods to the Demand type

This adds on to the original tracking issue #96024

r? `````@yaahc`````

22 months agoRollup merge of #97739 - a2aaron:let_underscore, r=estebank
Guillaume Gomez [Fri, 2 Sep 2022 09:34:45 +0000 (11:34 +0200)]
Rollup merge of #97739 - a2aaron:let_underscore, r=estebank

Uplift the `let_underscore` lints from clippy into rustc.

This PR resolves #97241.

This PR adds three lints from clippy--`let_underscore_drop`, `let_underscore_lock`, and `let_underscore_must_use`, which are meant to capture likely-incorrect uses of `let _ = ...` bindings (in particular, doing this on a type with a non-trivial `Drop` causes the `Drop` to occur immediately, instead of at the end of the scope. For a type like `MutexGuard`, this effectively releases the lock immediately, which is almost certainly the wrong behavior)

In porting the lints from clippy I had to copy over a bunch of utility functions from `clippy_util` that these lints also relied upon. Is that the right approach?

Note that I've set the `must_use` and `drop` lints to Allow by default and set `lock` to Deny by default (this matches the same settings that clippy has). In talking with `@estebank` he informed me to do a Crater run (I am not sure what type of Crater run to request here--I think it's just "check only"?)

On the linked issue, there's some discussion about using `must_use` and `Drop` together as a heuristic for when to warn--I did not implement this yet.

r? `@estebank`

22 months agoAuto merge of #100935 - cuviper:upgrade-android-ci, r=Mark-Simulacrum
bors [Fri, 2 Sep 2022 05:32:57 +0000 (05:32 +0000)]
Auto merge of #100935 - cuviper:upgrade-android-ci, r=Mark-Simulacrum

ci: Upgrade android containers from ubuntu:16.04 to 22.04

The main goal of updating to 22.04 is to get away from `llvm.allow-old-toolchain`.
These containers are not building LLVM for android, so only the host version matters.
A side benefit is that they can also use the system `cmake` instead of building one.

22 months agoAuto merge of #100395 - Dylan-DPC:rollup-ajrwo1s, r=Dylan-DPC
bors [Fri, 2 Sep 2022 03:16:32 +0000 (03:16 +0000)]
Auto merge of #100395 - Dylan-DPC:rollup-ajrwo1s, r=Dylan-DPC

Rollup of 7 pull requests

Successful merges:

 - #92744 (Check if enum from foreign crate has any non exhaustive variants when attempting a cast)
 - #99337 (rustdoc: simplify highlight.rs)
 - #100007 (Never inline Windows dtor access)
 - #100030 (cleanup code w/ pointers in std a little)
 - #100192 ( Remove duplicated temporaries creating during box derefs elaboration)
 - #100247 (Generalize trait object generic param check to aliases.)
 - #100374 (Improve crate selection on rustdoc search results page)

Failed merges:

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

22 months agoAuto merge of #101248 - RalfJung:miri, r=RalfJung
bors [Fri, 2 Sep 2022 00:53:50 +0000 (00:53 +0000)]
Auto merge of #101248 - RalfJung:miri, r=RalfJung

update Miri

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

22 months agoAuto merge of #101295 - matthiaskrgr:rollup-046o38p, r=matthiaskrgr
bors [Thu, 1 Sep 2022 22:12:32 +0000 (22:12 +0000)]
Auto merge of #101295 - matthiaskrgr:rollup-046o38p, r=matthiaskrgr

Rollup of 14 pull requests

Successful merges:

 - #94467 (Add `special_module_name` lint)
 - #100852 (Use `getuid` to check instead of `USER` env var in rustbuild)
 - #101072 (bootstrap: Add llvm-has-rust-patches target option)
 - #101190 (Make docs formulation more consistent for NonZero{int})
 - #101245 (Remove unneeded where whitespace)
 - #101251 (Fix  bad target name in Walkthrough)
 - #101254 (rustdoc: remove unused `.docblock .impl-items` CSS)
 - #101256 (Fixes/adjustments to Fuchsia doc walkthrough)
 - #101270 (Update outdated comment about output capturing in print_to.)
 - #101271 (Fix filename of armv4t-none-eabi.md)
 - #101274 (Fix typo in comment)
 - #101279 (Fix doc_auto_cfg for impl blocks in different modules with different `cfg`)
 - #101285 (Do not suggest adding `move` to closure when `move` is already used)
 - #101292 (rustdoc: remove unneeded CSS `.content table td:first-child > a`)

Failed merges:

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

22 months agoupdate Miri
Ralf Jung [Thu, 1 Sep 2022 20:59:05 +0000 (22:59 +0200)]
update Miri

22 months agoRollup merge of #101292 - rust-lang:notriddle/rustdoc-table-first-child, r=GuillaumeGomez
Matthias Krüger [Thu, 1 Sep 2022 19:37:23 +0000 (21:37 +0200)]
Rollup merge of #101292 - rust-lang:notriddle/rustdoc-table-first-child, r=GuillaumeGomez

rustdoc: remove unneeded CSS `.content table td:first-child > a`

This rule was added in c1c6175e62189f8f0e6479bff7bac0e59a95a406 to benefit the module items table. However, the module items table stopped using table tags when 6020c79ddeafe8d9760b27c14c39da81bac9b4a6 switched us over to grid layout.

22 months agoRollup merge of #101285 - TaKO8Ki:do-not-suggest-adding-move-when-closure-is-already...
Matthias Krüger [Thu, 1 Sep 2022 19:37:21 +0000 (21:37 +0200)]
Rollup merge of #101285 - TaKO8Ki:do-not-suggest-adding-move-when-closure-is-already-marked-as-move, r=oli-obk

Do not suggest adding `move` to closure when `move` is already used

Fixes #101227

22 months agoRollup merge of #101279 - GuillaumeGomez:doc_auto_cfg_nested_impl, r=notriddle
Matthias Krüger [Thu, 1 Sep 2022 19:37:20 +0000 (21:37 +0200)]
Rollup merge of #101279 - GuillaumeGomez:doc_auto_cfg_nested_impl, r=notriddle

Fix doc_auto_cfg for impl blocks in different modules with different `cfg`

Fixes #101129.

Just like reexports, impl blocks don't necessarily share the same "space" as the item they implement so we need to merge attributes from its parents as well.

r? `@notriddle`

22 months agoRollup merge of #101274 - aDotInTheVoid:comment-typo, r=TaKO8Ki
Matthias Krüger [Thu, 1 Sep 2022 19:37:19 +0000 (21:37 +0200)]
Rollup merge of #101274 - aDotInTheVoid:comment-typo, r=TaKO8Ki

Fix typo in comment

22 months agoRollup merge of #101271 - QuinnPainter:patch-1, r=Dylan-DPC
Matthias Krüger [Thu, 1 Sep 2022 19:37:17 +0000 (21:37 +0200)]
Rollup merge of #101271 - QuinnPainter:patch-1, r=Dylan-DPC

Fix filename of armv4t-none-eabi.md

The filename differed from the link in SUMMARY.md, causing it to 404.

22 months agoRollup merge of #101270 - m-ou-se:update-comment, r=joshtriplett
Matthias Krüger [Thu, 1 Sep 2022 19:37:16 +0000 (21:37 +0200)]
Rollup merge of #101270 - m-ou-se:update-comment, r=joshtriplett

Update outdated comment about output capturing in print_to.

22 months agoRollup merge of #101256 - andrewpollack:fuchsia-docs-adding, r=tmandry
Matthias Krüger [Thu, 1 Sep 2022 19:37:15 +0000 (21:37 +0200)]
Rollup merge of #101256 - andrewpollack:fuchsia-docs-adding, r=tmandry

Fixes/adjustments to Fuchsia doc walkthrough

Small fixes/adjustments missed during #100927

22 months agoRollup merge of #101254 - rust-lang:notriddle/remove-even-more-css, r=jsha
Matthias Krüger [Thu, 1 Sep 2022 19:37:14 +0000 (21:37 +0200)]
Rollup merge of #101254 - rust-lang:notriddle/remove-even-more-css, r=jsha

rustdoc: remove unused `.docblock .impl-items` CSS

The impl-items list stopped being nested inside a docblock since c1b1d6804bfce1aee3a95b3cbff3eaeb15bad9a4

22 months agoRollup merge of #101251 - diminishedprime:patch-1, r=JohnTitor
Matthias Krüger [Thu, 1 Sep 2022 19:37:12 +0000 (21:37 +0200)]
Rollup merge of #101251 - diminishedprime:patch-1, r=JohnTitor

Fix  bad target name in Walkthrough

Walkthrough currently say:

```
rustup target add aarch_64-fuchsia
```
but should say

```
rustup target add aarch64-fuchsia
```

22 months agoRollup merge of #101245 - GuillaumeGomez:remove-unneeded-where-whitespace, r=notriddle
Matthias Krüger [Thu, 1 Sep 2022 19:37:11 +0000 (21:37 +0200)]
Rollup merge of #101245 - GuillaumeGomez:remove-unneeded-where-whitespace, r=notriddle

Remove unneeded where whitespace

It fixes these two bugs:

![Screenshot from 2022-08-31 18-14-40](https://user-images.githubusercontent.com/3050060/187727950-94657419-abfa-454c-9d27-004280fbcb45.png)
![Screenshot from 2022-08-31 18-14-49](https://user-images.githubusercontent.com/3050060/187727956-21d1b39d-62d7-4e7b-8f6f-631ceda67a19.png)

It's a relic from a very old time (this commit: https://github.com/rust-lang/rust/commit/bfd01b7f40ae2cbfe9acbc1d10e79ffe16870df8).

You can test the result [here](https://rustdoc.crud.net/imperio/remove-unneeded-where-whitespace/lib2/struct.WhereWhitespace.html).

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

22 months agoRollup merge of #101190 - yjhn:patch-1, r=Mark-Simulacrum
Matthias Krüger [Thu, 1 Sep 2022 19:37:10 +0000 (21:37 +0200)]
Rollup merge of #101190 - yjhn:patch-1, r=Mark-Simulacrum

Make docs formulation more consistent for NonZero{int}

Use third person, as it is used for other `std` documentation.

22 months agoRollup merge of #101072 - tmandry:llvm-is-vanilla, r=Mark-Simulacrum
Matthias Krüger [Thu, 1 Sep 2022 19:37:09 +0000 (21:37 +0200)]
Rollup merge of #101072 - tmandry:llvm-is-vanilla, r=Mark-Simulacrum

bootstrap: Add llvm-has-rust-patches target option

This is so you can check out an upstream commit in src/llvm-project and
have everything just work.

This simplifies the logic in `is_rust_llvm` a bit; it doesn't need to
check for download-ci-llvm because we would have already errored if both
that and llvm-config were specified on the host platform.

22 months agoRollup merge of #100852 - Samyak2:samyak/100459, r=Mark-Simulacrum
Matthias Krüger [Thu, 1 Sep 2022 19:37:08 +0000 (21:37 +0200)]
Rollup merge of #100852 - Samyak2:samyak/100459, r=Mark-Simulacrum

Use `getuid` to check instead of `USER` env var in rustbuild

This makes it consistent with `x.py` as changed in #95671

Fixes #100459

22 months agoRollup merge of #94467 - ibraheemdev:master, r=pnkfelix
Matthias Krüger [Thu, 1 Sep 2022 19:37:07 +0000 (21:37 +0200)]
Rollup merge of #94467 - ibraheemdev:master, r=pnkfelix

Add `special_module_name` lint

Declaring `lib` as a module is one of the most common beginner mistakes when trying to setup a binary and library target in the same crate. `special_module_name` lints against it, as well as `mod main;`
```
warning: found module declaration for main.rs
  --> $DIR/special_module_name.rs:4:1
   |
LL | mod main;
   | ^^^^^^^^^
   |
   = note: a binary crate cannot be used as library

warning: found module declaration for lib.rs
  --> $DIR/special_module_name.rs:1:1
   |
LL | mod lib;
   | ^^^^^^^^
   |
   = note: `#[warn(special_module_name)]` on by default
   = note: lib.rs is the root of this crate's library target
   = help: to refer to it from other targets, use the library's name as the path
   ```

Note that the help message is not the best in that it doesn't provide an example of an import path (`the_actual_crate_name::`), and doesn't check whether the current file is part of a library/binary target to provide more specific error messages. I'm not sure where this lint would have to be run to access that information.

22 months agoAuto merge of #98960 - cjgillot:entry-kind, r=estebank
bors [Thu, 1 Sep 2022 19:31:14 +0000 (19:31 +0000)]
Auto merge of #98960 - cjgillot:entry-kind, r=estebank

Remove EntryKind from metadata.

This PR continues the refactor of metadata emission to be more systematic, iterating on definitions and filtering based on each definition's `DefKind`. This allows to remove the large `EntryKind` enum, replaced by linear tables in metadata.

22 months agorustdoc: remove unneeded CSS `.content table td:first-child > a`
Michael Howell [Thu, 1 Sep 2022 17:25:23 +0000 (10:25 -0700)]
rustdoc: remove unneeded CSS `.content table td:first-child > a`

This rule was added in c1c6175e62189f8f0e6479bff7bac0e59a95a406 to benefit
the module items table. However, the module items table stopped using table
tags when 6020c79ddeafe8d9760b27c14c39da81bac9b4a6 switched us over to grid
layout.

22 months agoAuto merge of #101239 - oli-obk:tracing_cleanup, r=estebank
bors [Thu, 1 Sep 2022 16:25:32 +0000 (16:25 +0000)]
Auto merge of #101239 - oli-obk:tracing_cleanup, r=estebank

Tracing cleanup

r? `@ghost`

22 months agoAdjust stderr file
Oli Scherer [Wed, 31 Aug 2022 14:46:51 +0000 (14:46 +0000)]
Adjust stderr file

22 months agotracing::instrument cleanup
Oli Scherer [Tue, 28 Jun 2022 15:18:07 +0000 (15:18 +0000)]
tracing::instrument cleanup

22 months agoAlways import all tracing macros for the entire crate instead of piecemeal by module
Oli Scherer [Wed, 31 Aug 2022 13:09:26 +0000 (13:09 +0000)]
Always import all tracing macros for the entire crate instead of piecemeal by module

22 months agoDirectly use the `instrument` macro instead of its full path
Oli Scherer [Wed, 31 Aug 2022 13:01:10 +0000 (13:01 +0000)]
Directly use the `instrument` macro instead of its full path

22 months agodo not suggest adding `move` to closure when `move` is already used
Takayuki Maeda [Thu, 1 Sep 2022 14:50:51 +0000 (23:50 +0900)]
do not suggest adding `move` to closure when `move` is already used

22 months agorustc_target: Refactor internal linker flavors slightly
Vadim Petrochenkov [Sun, 14 Aug 2022 21:31:31 +0000 (00:31 +0300)]
rustc_target: Refactor internal linker flavors slightly

Remove one unstable user-facing linker flavor (l4-bender)

22 months agorustc_target: Add a compatibility layer to separate internal and user-facing linker...
Vadim Petrochenkov [Sun, 14 Aug 2022 17:28:34 +0000 (20:28 +0300)]
rustc_target: Add a compatibility layer to separate internal and user-facing linker flavors

22 months agoAuto merge of #100606 - cuviper:upgrade-linux-ci, r=Mark-Simulacrum
bors [Thu, 1 Sep 2022 13:21:03 +0000 (13:21 +0000)]
Auto merge of #100606 - cuviper:upgrade-linux-ci, r=Mark-Simulacrum

ci: Upgrade non-dist Linux testers from ubuntu:16.04 to 22.04

The main goal of updating to 22.04 is to get away from `llvm.allow-old-toolchain`.
A side benefit is that they can also use the system `cmake` instead of building one.

22 months agoAdd regression test for #101129
Guillaume Gomez [Thu, 1 Sep 2022 12:31:41 +0000 (14:31 +0200)]
Add regression test for #101129

22 months agoCorrectly merge impl block cfg attributes with its parents
Guillaume Gomez [Thu, 1 Sep 2022 12:31:27 +0000 (14:31 +0200)]
Correctly merge impl block cfg attributes with its parents

22 months agoFix typo in comment
Nixon Enraght-Moony [Thu, 1 Sep 2022 11:09:42 +0000 (12:09 +0100)]
Fix typo in comment

22 months agoAuto merge of #100958 - mikebenfield:workaround, r=nikic
bors [Thu, 1 Sep 2022 10:30:10 +0000 (10:30 +0000)]
Auto merge of #100958 - mikebenfield:workaround, r=nikic

compiler/rustc_codegen_ssa/src/mir/place.rs: Remove LLVM bug workaround

This memset was inserted as a workaround to Rust issue #34427, which was
an LLVM bug that apparently no longer manifests.

22 months agoFix filename of armv4t-none-eabi.md
Quinn Painter [Thu, 1 Sep 2022 09:23:15 +0000 (10:23 +0100)]
Fix filename of armv4t-none-eabi.md

The filename differed from the link in SUMMARY.md, causing it to 404.

22 months agoUpdate outdated comment about output capturing in print_to.
Mara Bos [Thu, 1 Sep 2022 09:20:08 +0000 (11:20 +0200)]
Update outdated comment about output capturing in print_to.

22 months agoAuto merge of #100869 - nnethercote:replace-ThinVec, r=spastorino
bors [Thu, 1 Sep 2022 08:01:06 +0000 (08:01 +0000)]
Auto merge of #100869 - nnethercote:replace-ThinVec, r=spastorino

Replace `rustc_data_structures::thin_vec::ThinVec` with `thin_vec::ThinVec`

`rustc_data_structures::thin_vec::ThinVec` looks like this:
```
pub struct ThinVec<T>(Option<Box<Vec<T>>>);
```
It's just a zero word if the vector is empty, but requires two
allocations if it is non-empty. So it's only usable in cases where the
vector is empty most of the time.

This commit removes it in favour of `thin_vec::ThinVec`, which is also
word-sized, but stores the length and capacity in the same allocation as
the elements. It's good in a wider variety of situation, e.g. in enum
variants where the vector is usually/always non-empty.

The commit also:
- Sorts some `Cargo.toml` dependency lists, to make additions easier.
- Sorts some `use` item lists, to make additions easier.
- Changes `clean_trait_ref_with_bindings` to take a
  `ThinVec<TypeBinding>` rather than a `&[TypeBinding]`, because this
  avoid some unnecessary allocations.

r? `@spastorino`

22 months agoAuto merge of #100707 - dzvon:fix-typo, r=davidtwco
bors [Thu, 1 Sep 2022 05:39:58 +0000 (05:39 +0000)]
Auto merge of #100707 - dzvon:fix-typo, r=davidtwco

Fix a bunch of typo

This PR will fix some typos detected by [typos].

I only picked the ones I was sure were spelling errors to fix, mostly in
the comments.

[typos]: https://github.com/crate-ci/typos

22 months agoAuto merge of #100537 - petrochenkov:piccheck, r=oli-obk
bors [Thu, 1 Sep 2022 03:13:46 +0000 (03:13 +0000)]
Auto merge of #100537 - petrochenkov:piccheck, r=oli-obk

rustc_target: Add some more target spec sanity checking

22 months agoTweaks to fuchsia doc walkthrough
Andrew Pollack [Wed, 31 Aug 2022 23:49:48 +0000 (23:49 +0000)]
Tweaks to fuchsia doc walkthrough

22 months agoAuto merge of #100210 - mystor:proc_macro_diag_struct, r=eddyb
bors [Thu, 1 Sep 2022 00:26:53 +0000 (00:26 +0000)]
Auto merge of #100210 - mystor:proc_macro_diag_struct, r=eddyb

proc_macro/bridge: send diagnostics over the bridge as a struct

This removes some RPC when creating and emitting diagnostics, and
simplifies the bridge slightly.

After this change, there are no remaining methods which take advantage
of the support for `&mut` references to objects in the store as
arguments, meaning that support for them could technically be removed if
we wanted. The only remaining uses of immutable references into the
store are `TokenStream` and `SourceFile`.

r? `@eddyb`

22 months agorustdoc: remove unused `.docblock .impl-items` CSS
Michael Howell [Wed, 31 Aug 2022 17:06:48 +0000 (10:06 -0700)]
rustdoc: remove unused `.docblock .impl-items` CSS

The impl-items list stopped being nested inside a docblock since c1b1d6804bfce1aee3a95b3cbff3eaeb15bad9a4

22 months agoAuto merge of #101249 - matthiaskrgr:rollup-wahnoz8, r=matthiaskrgr
bors [Wed, 31 Aug 2022 21:45:18 +0000 (21:45 +0000)]
Auto merge of #101249 - matthiaskrgr:rollup-wahnoz8, r=matthiaskrgr

Rollup of 10 pull requests

Successful merges:

 - #100787 (Pretty printing give proper error message without panic)
 - #100838 (Suggest moving redundant generic args of an assoc fn to its trait)
 - #100844 (migrate rustc_query_system to use SessionDiagnostic)
 - #101140 (Update Clippy)
 - #101161 (Fix uintended diagnostic caused by `drain(..)`)
 - #101165 (Use more `into_iter` rather than `drain(..)`)
 - #101229 (Link “? operator” to relevant chapter in The Book)
 - #101230 (lint: avoid linting diag functions with diag lints)
 - #101236 (Avoid needless buffer zeroing in `std::sys::windows::fs`)
 - #101240 (Fix a typo on `wasm64-unknown-unknown` doc)

Failed merges:

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

22 months agoFix bad target name in Walkthrough
Matt Hamrick [Wed, 31 Aug 2022 20:21:47 +0000 (13:21 -0700)]
Fix  bad target name in Walkthrough

Walkthrough currently say:

```
rustup target add aarch_64-fuchsia
```
but should say

```
rustup target add aarch64-fuchsia
```

22 months agoRollup merge of #101240 - JohnTitor:JohnTitor-patch-1, r=ehuss
Matthias Krüger [Wed, 31 Aug 2022 19:30:18 +0000 (21:30 +0200)]
Rollup merge of #101240 - JohnTitor:JohnTitor-patch-1, r=ehuss

Fix a typo on `wasm64-unknown-unknown` doc

22 months agoRollup merge of #101236 - thomcc:winfs-nozero, r=ChrisDenton
Matthias Krüger [Wed, 31 Aug 2022 19:30:17 +0000 (21:30 +0200)]
Rollup merge of #101236 - thomcc:winfs-nozero, r=ChrisDenton

Avoid needless buffer zeroing in `std::sys::windows::fs`

Followup to https://github.com/rust-lang/rust/pull/101171 and https://github.com/rust-lang/rust/pull/101193. This finishes up avoiding buffer zeroing pointed out in https://github.com/rust-lang/rust/pull/100729#issuecomment-1220055311 (thanks!)

r? `@ChrisDenton`

22 months agoRollup merge of #101230 - davidtwco:translation-internal-lint-no-self-lint, r=fee1...
Matthias Krüger [Wed, 31 Aug 2022 19:30:16 +0000 (21:30 +0200)]
Rollup merge of #101230 - davidtwco:translation-internal-lint-no-self-lint, r=fee1-dead

lint: avoid linting diag functions with diag lints

Functions annotated with `#[rustc_lint_diagnostics]` are used by the diagnostic migration lints to know when to lint, but functions that are annotated with this attribute shouldn't themselves be linted.

cc #100717 https://github.com/rust-lang/rust/pull/101041#discussion_r959303706

22 months agoRollup merge of #101229 - mgeisler:link-try-operator, r=thomcc
Matthias Krüger [Wed, 31 Aug 2022 19:30:15 +0000 (21:30 +0200)]
Rollup merge of #101229 - mgeisler:link-try-operator, r=thomcc

Link “? operator” to relevant chapter in The Book

Before, the text simply asked people to use a symbol which is hard to
search for. Now the text links back to the chapter on error
propagation in The Book. That should help people find the relevant
keywords for further searches.

22 months agoRollup merge of #101165 - ldm0:drain_to_iter, r=cjgillot
Matthias Krüger [Wed, 31 Aug 2022 19:30:13 +0000 (21:30 +0200)]
Rollup merge of #101165 - ldm0:drain_to_iter, r=cjgillot

Use more `into_iter` rather than `drain(..)`

Clearer semantic.

22 months agoRollup merge of #101161 - ldm0:ldm_fix_diagnostic, r=cjgillot
Matthias Krüger [Wed, 31 Aug 2022 19:30:12 +0000 (21:30 +0200)]
Rollup merge of #101161 - ldm0:ldm_fix_diagnostic, r=cjgillot

Fix uintended diagnostic caused by `drain(..)`

Calling `drain(..)` makes later `suggestable_variants.is_empty()` always true, which makes the diagnostics unintended.

22 months agoRollup merge of #101140 - Jarcho:clippyup, r=Jarcho
Matthias Krüger [Wed, 31 Aug 2022 19:30:11 +0000 (21:30 +0200)]
Rollup merge of #101140 - Jarcho:clippyup, r=Jarcho

Update Clippy

r? ```@Manishearth```

22 months agoRollup merge of #100844 - evopen:migrate-diag, r=davidtwco
Matthias Krüger [Wed, 31 Aug 2022 19:30:09 +0000 (21:30 +0200)]
Rollup merge of #100844 - evopen:migrate-diag, r=davidtwco

migrate rustc_query_system to use SessionDiagnostic

issues:
* variable list is not supported in fluent
* ~~cannot have two sub diagnostic with the same tag (eg. 2 .note or 2 .help)~~

allow multiple tag with SessionSubdiagnostic derive

22 months agoRollup merge of #100838 - hkmatsumoto:move-gen-args-to-trait-when-appropriate, r...
Matthias Krüger [Wed, 31 Aug 2022 19:30:08 +0000 (21:30 +0200)]
Rollup merge of #100838 - hkmatsumoto:move-gen-args-to-trait-when-appropriate, r=davidtwco

Suggest moving redundant generic args of an assoc fn to its trait

Closes #89064

22 months agoRollup merge of #100787 - chenyukang:fix-100770-pretty-crash, r=petrochenkov
Matthias Krüger [Wed, 31 Aug 2022 19:30:07 +0000 (21:30 +0200)]
Rollup merge of #100787 - chenyukang:fix-100770-pretty-crash, r=petrochenkov

Pretty printing give proper error message without panic

Fixes #100770

22 months agoAuto merge of #100085 - RalfJung:op-ty-len, r=oli-obk
bors [Wed, 31 Aug 2022 18:42:49 +0000 (18:42 +0000)]
Auto merge of #100085 - RalfJung:op-ty-len, r=oli-obk

interpret: use new OpTy::len for Len rvalue

This avoids a `force_allocation`.

22 months agoAdd rustdoc GUI test
Guillaume Gomez [Wed, 31 Aug 2022 16:13:59 +0000 (18:13 +0200)]
Add rustdoc GUI test

22 months agoUpdate rustdoc tests
Guillaume Gomez [Wed, 31 Aug 2022 15:05:46 +0000 (17:05 +0200)]
Update rustdoc tests

22 months agoRemove unneeded extra whitespace before where clause
Guillaume Gomez [Wed, 31 Aug 2022 15:05:38 +0000 (17:05 +0200)]
Remove unneeded extra whitespace before where clause

22 months agoUse `CountIsStart` in clippy
Jason Newcomb [Wed, 31 Aug 2022 13:33:32 +0000 (09:33 -0400)]
Use `CountIsStart` in clippy

22 months agoFix a typo on `wasm64-unknown-unknown` doc
Yuki Okushi [Wed, 31 Aug 2022 13:27:37 +0000 (22:27 +0900)]
Fix a typo on `wasm64-unknown-unknown` doc

22 months agoMerge commit 'f51aade56f93175dde89177a92e3669ebd8e7592' into clippyup
Jason Newcomb [Wed, 31 Aug 2022 13:24:45 +0000 (09:24 -0400)]
Merge commit 'f51aade56f93175dde89177a92e3669ebd8e7592' into clippyup

22 months agofix a clippy test
Ralf Jung [Wed, 31 Aug 2022 13:24:40 +0000 (15:24 +0200)]
fix a clippy test

22 months agointerpret: use new OpTy::len for Len rvalue
Ralf Jung [Wed, 3 Aug 2022 00:52:15 +0000 (20:52 -0400)]
interpret: use new OpTy::len for Len rvalue

This avoids a `force_allocation`

22 months agoAuto merge of #101238 - RalfJung:rollup-bzcmobj, r=RalfJung
bors [Wed, 31 Aug 2022 13:01:38 +0000 (13:01 +0000)]
Auto merge of #101238 - RalfJung:rollup-bzcmobj, r=RalfJung

Rollup of 7 pull requests

Successful merges:

 - #90946 (Ignore `reference`s in "Type::inner_def_id")
 - #100730 (Migrate rustc_monomorphize to use SessionDiagnostic)
 - #100753 (translations(rustc_session): migrates `rustc_session` to use `SessionDiagnostic` - Pt. 1)
 - #100831 (Migrate `symbol_mangling` module to new diagnostics structs)
 - #101204 (rustdoc: Resugar async fn return type in `clean`, not `html`)
 - #101216 (Use in-page links for sanitizer docs.)
 - #101237 (fix into_iter on ZST)

Failed merges:

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

22 months agolint: avoid linting diag functions with diag lints
David Wood [Wed, 31 Aug 2022 11:06:22 +0000 (12:06 +0100)]
lint: avoid linting diag functions with diag lints

Functions annotated with `#[rustc_lint_diagnostics]` are used by the
diagnostic migration lints to know when to lint, but functions that are
annotated with this attribute shouldn't themselves be linted.

Signed-off-by: David Wood <david.wood@huawei.com>
22 months agoRollup merge of #101237 - RalfJung:into-iter-zst, r=thomcc
Ralf Jung [Wed, 31 Aug 2022 12:29:55 +0000 (14:29 +0200)]
Rollup merge of #101237 - RalfJung:into-iter-zst, r=thomcc

fix into_iter on ZST

Fixes https://github.com/rust-lang/rust/issues/101235
Thanks to `@ChrisDenton` for [spotting the problem](https://github.com/rust-lang/rust/pull/100819#pullrequestreview-1091755930).

22 months agoRollup merge of #101216 - ehuss:sanitizer-links, r=JohnTitor
Ralf Jung [Wed, 31 Aug 2022 12:29:54 +0000 (14:29 +0200)]
Rollup merge of #101216 - ehuss:sanitizer-links, r=JohnTitor

Use in-page links for sanitizer docs.

This updates the sanitizer documentation page so that the links in the summary at the top jump to the relevant sections within the page instead of leading away to a different site. I think this makes it a little easier to navigate this page which has gotten quite long.

This also fixes the broken link for MemTagSanitizer which was not defined.  It also adds MemTagSanitizer to the external summary list at the bottom of the page.

22 months agoRollup merge of #101204 - aDotInTheVoid:async-resugar-in-clean, r=GuillaumeGomez
Ralf Jung [Wed, 31 Aug 2022 12:29:54 +0000 (14:29 +0200)]
Rollup merge of #101204 - aDotInTheVoid:async-resugar-in-clean, r=GuillaumeGomez

rustdoc: Resugar async fn return type in `clean`, not `html`

This way it also happens for json output.

Fixes #101199

r? ``@GuillaumeGomez``

22 months agoRollup merge of #100831 - JhonnyBillM:migrate-symbol-mangling-to-diagnostics-structs...
Ralf Jung [Wed, 31 Aug 2022 12:29:53 +0000 (14:29 +0200)]
Rollup merge of #100831 - JhonnyBillM:migrate-symbol-mangling-to-diagnostics-structs, r=davidtwco

Migrate `symbol_mangling` module to new diagnostics structs

22 months agoRollup merge of #100753 - LuisCardosoOliveira:translation-migrate-session, r=davidtwco
Ralf Jung [Wed, 31 Aug 2022 12:29:52 +0000 (14:29 +0200)]
Rollup merge of #100753 - LuisCardosoOliveira:translation-migrate-session, r=davidtwco

translations(rustc_session): migrates `rustc_session` to use `SessionDiagnostic` - Pt. 1

## Description

This is the first PR for the migration of the module `rustc_session`. You can follow my progress [here](https://github.com/rust-lang/rust/issues/100717#issuecomment-1220279883).

The PR migrates the files `cgu_reuse_tracker` and `parse.rs` to use `SessionDiagnostic `.

22 months agoRollup merge of #100730 - CleanCut:diagnostics-rustc_monomorphize, r=davidtwco
Ralf Jung [Wed, 31 Aug 2022 12:29:51 +0000 (14:29 +0200)]
Rollup merge of #100730 - CleanCut:diagnostics-rustc_monomorphize, r=davidtwco

Migrate rustc_monomorphize to use SessionDiagnostic

### Description

- Migrates diagnostics in `rustc_monomorphize` to use `SessionDiagnostic`
- Adds an `impl IntoDiagnosticArg for PathBuf`

### TODO / Help!
- [x] I'm having trouble figuring out how to apply an optional note. 😕  Help!?
  - Resolved. It was bad docs. Fixed in https://github.com/rust-lang/rustc-dev-guide/pull/1437/files
- [x] `errors:RecursionLimit` should be `#[fatal ...]`, but that doesn't exist so it's `#[error ...]` at the moment.
  - Maybe I can switch after this is merged in? --> https://github.com/rust-lang/rust/pull/100694
  - Or maybe I need to manually implement `SessionDiagnostic` instead of deriving it?
- [x] How does one go about converting an error inside of [a call to struct_span_lint_hir](https://github.com/rust-lang/rust/blob/8064a495086c2e63c0ef77e8e82fe3b9b5dc535f/compiler/rustc_monomorphize/src/collector.rs#L917-L927)?
- [x] ~What placeholder do you use in the fluent template to refer to the value in a vector? It seems like [this code](https://github.com/rust-lang/rust/blob/0b79f758c9aa6646606662a6d623a0752286cd17/compiler/rustc_macros/src/diagnostics/diagnostic_builder.rs#L83-L114) ought to have the answer (or something near it)...but I can't figure it out.~ You can't. Punted.

22 months agoRollup merge of #90946 - GuillaumeGomez:def-id-remove-weird-case, r=Manishearth
Ralf Jung [Wed, 31 Aug 2022 12:29:51 +0000 (14:29 +0200)]
Rollup merge of #90946 - GuillaumeGomez:def-id-remove-weird-case, r=Manishearth

Ignore `reference`s in "Type::inner_def_id"

Fixes #90775.

Reopening of #90726.

As discussed on [zulip](https://rust-lang.zulipchat.com/#narrow/stream/266220-rustdoc/topic/rendering.20for.20reference.20primitive.20doc.20page), the reference page shouldn't list these implementations (since they are listed on the types and on the traits in any case). And more generally, you don't implement something on a reference but on something behind a reference. I think it's the important point.

So currently it looks like this:

![Screenshot from 2021-11-16 10-20-41](https://user-images.githubusercontent.com/3050060/141957799-57aeadc5-41f8-45f6-a4a5-33b1eca6a500.png)

With this PR, only the implementations over generics behind a reference are kept.

You can test it [here](https://rustdoc.crud.net/imperio/def-id-remove-weird-case/std/primitive.reference.html).

cc ``@camelid``

22 months agofix into_iter on ZST
Ralf Jung [Wed, 31 Aug 2022 12:21:35 +0000 (14:21 +0200)]
fix into_iter on ZST

22 months agoAvoid needless buffer zeroing in `std::sys::windows::fs`
Thom Chiovoloni [Tue, 30 Aug 2022 13:15:34 +0000 (06:15 -0700)]
Avoid needless buffer zeroing in `std::sys::windows::fs`

22 months agoSessionDiagnostic for QueryOverflow error
Li Yuanheng [Sat, 27 Aug 2022 03:55:38 +0000 (11:55 +0800)]
SessionDiagnostic for QueryOverflow error

22 months agodelete leftover comment
Li Yuanheng [Thu, 25 Aug 2022 15:32:28 +0000 (23:32 +0800)]
delete leftover comment

22 months agouse derive proc macro to impl SessionDiagnostic
Yuanheng Li [Tue, 23 Aug 2022 03:19:38 +0000 (11:19 +0800)]
use derive proc macro to impl SessionDiagnostic

fixes `SessionSubdiagnostic` to accept multiple attributes
emitting list of fluent message remains unresolved

22 months agolink related issue to FIXME
Li Yuanheng [Mon, 22 Aug 2022 23:23:36 +0000 (07:23 +0800)]
link related issue to FIXME

Co-authored-by: David Wood <agile.lion3441@fuligin.ink>
22 months agomigrate rustc_query_system to use SessionDiagnostic
Yuanheng Li [Sun, 21 Aug 2022 13:37:05 +0000 (21:37 +0800)]
migrate rustc_query_system to use SessionDiagnostic

with manual impl SessionDiagnostic

22 months agoadd TestReachabilityVisitor
Bryanskiy [Sun, 14 Aug 2022 14:05:17 +0000 (17:05 +0300)]
add TestReachabilityVisitor

22 months agoaccess_levels.rs refactor
Bryanskiy [Sun, 14 Aug 2022 14:04:30 +0000 (17:04 +0300)]
access_levels.rs refactor

22 months agoCorrect typo
Dezhi Wu [Thu, 18 Aug 2022 08:36:49 +0000 (16:36 +0800)]
Correct typo

22 months agoFix ci checks
Dezhi Wu [Thu, 18 Aug 2022 02:59:16 +0000 (10:59 +0800)]
Fix ci checks

22 months agoFix a bunch of typo
Dezhi Wu [Thu, 18 Aug 2022 02:13:37 +0000 (10:13 +0800)]
Fix a bunch of typo

This PR will fix some typos detected by [typos].

I only picked the ones I was sure were spelling errors to fix, mostly in
the comments.

[typos]: https://github.com/crate-ci/typos

22 months agoAdd regression test for implementations displayed on reference primitive type
Guillaume Gomez [Tue, 30 Aug 2022 18:51:58 +0000 (20:51 +0200)]
Add regression test for implementations displayed on reference primitive type

22 months agoPrint only blanket implementations on reference primitive type
Guillaume Gomez [Tue, 30 Aug 2022 18:21:56 +0000 (20:21 +0200)]
Print only blanket implementations on reference primitive type

22 months agoLink “? operator” to relevant chapter in The Book
Martin Geisler [Wed, 31 Aug 2022 08:35:36 +0000 (10:35 +0200)]
Link “? operator” to relevant chapter in The Book

Before, the text simply asked people to use a symbol which is hard to
search for. Now the text links back to the chapter on error
propagation in The Book. That should help people find the relevant
keywords for further searches.

22 months agoAuto merge of #9397 - Jarcho:trait_dup_order, r=dswij
bors [Wed, 31 Aug 2022 08:07:33 +0000 (08:07 +0000)]
Auto merge of #9397 - Jarcho:trait_dup_order, r=dswij

Fix the emission order of `trait_duplication_in_bounds`

Makes the lint emit in source order rather than whatever order the hash map happens to be in. This is currently blocking the sync into rustc.

changelog: None

22 months agoAuto merge of #101225 - matthiaskrgr:rollup-9s1chas, r=matthiaskrgr
bors [Wed, 31 Aug 2022 07:57:09 +0000 (07:57 +0000)]
Auto merge of #101225 - matthiaskrgr:rollup-9s1chas, r=matthiaskrgr

Rollup of 8 pull requests

Successful merges:

 - #100970 (Allow deriving multipart suggestions)
 - #100984 (Reinstate preloading of some dll imports)
 - #101011 (Use getentropy when possible on all Apple platforms)
 - #101025 (Add tier-3 support for powerpc64 and riscv64 openbsd)
 - #101049 (Remove span fatal from ast lowering)
 - #101100 (Make call suggestions more general and more accurate)
 - #101171 (Fix UB from misalignment and provenance widening in `std::sys::windows`)
 - #101185 (Tweak `WellFormedLoc`s a bit)

Failed merges:

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

22 months agoRollup merge of #101185 - compiler-errors:tweak-wf-locs, r=davidtwco
Matthias Krüger [Wed, 31 Aug 2022 05:58:02 +0000 (07:58 +0200)]
Rollup merge of #101185 - compiler-errors:tweak-wf-locs, r=davidtwco

Tweak `WellFormedLoc`s a bit

Gives a bit tighter spans in returns and generic ty defaults

22 months agoRollup merge of #101171 - thomcc:fix-winfs-ub, r=ChrisDenton
Matthias Krüger [Wed, 31 Aug 2022 05:58:01 +0000 (07:58 +0200)]
Rollup merge of #101171 - thomcc:fix-winfs-ub, r=ChrisDenton

Fix UB from misalignment and provenance widening in `std::sys::windows`

This fixes two types of UB:

1. Reading past the end of a reference in types like `&c::REPARSE_DATA_BUFFER` (see https://github.com/rust-lang/unsafe-code-guidelines/issues/256). This is fixed by using `addr_of!`. I think there are probably a couple more cases where we do this for other structures, and will look into it in a bit.

2. Failing to ensure that a `[u8; N]` on the stack is sufficiently aligned to convert to a `REPARSE_DATA_BUFFER`. ~~This was done by introducing a new `AlignedAs` struct that allows aligning one type to the alignment of another type. I expect there are other places where we have this issue too, or I wouldn't introduce this type, but will get to them after this lands.~~

    ~~Worth noting, it *is* implemented in a way that can cause problems depending on how we fix #81996, but this would be caught by the test I added (and presumably if we decide to fix that in a way that would break this code, we'd also introduce a `#[repr(simple)]` or `#[repr(linear)]` as a replacement for this usage of `#[repr(C)]`).~~

    Edit: None of that is still in the code, I just went with a `Align8` since that's all we'll need for almost everything we want to call.

These are more or less "potential UB" since it's likely at the moment everything works fine, although the alignment not causing issues might just be down to luck (and x86 being forgiving).

~~NB: I've only ensured this check builds, but will run tests soon.~~ All tests pass, including stage2 compiler tests.

r? ``@ChrisDenton``

22 months agoRollup merge of #101100 - compiler-errors:generalize-call-suggestions, r=petrochenkov
Matthias Krüger [Wed, 31 Aug 2022 05:58:00 +0000 (07:58 +0200)]
Rollup merge of #101100 - compiler-errors:generalize-call-suggestions, r=petrochenkov

Make call suggestions more general and more accurate

Cleans up some suggestions that have to do with adding `()` to make typeck happy.

1. Drive-by rename of `expr_t` to `base_ty` since it's the type of the `base_expr`
1. Autoderef until we get to a callable type in `suggest_fn_call`.
1. Don't erroneously suggest calling constructor when a method/field does not exist on it.
1. Suggest calling a method receiver if its function output has a method (e.g. `fn.method()` => `fn().method()`)
1. Extend call suggestions to type parameters, fn pointers, trait objects where possible
1. Suggest calling in operators too (fixes #101054)
1. Use `/* {ty} */` as argument placeholder instead of just `_`, which is confusing and makes suggestions look less like `if let` syntax.

22 months agoRollup merge of #101049 - JeanCASPAR:remove-span_fatal-from-ast_lowering, r=davidtwco
Matthias Krüger [Wed, 31 Aug 2022 05:57:59 +0000 (07:57 +0200)]
Rollup merge of #101049 - JeanCASPAR:remove-span_fatal-from-ast_lowering, r=davidtwco

Remove span fatal from ast lowering

Now the crate `rustc_ast_lowering` is fully migrated to `SessionDiagnostic`.

r? ``@davidtwco``

22 months agoRollup merge of #101025 - semarie:openbsd-archs, r=petrochenkov
Matthias Krüger [Wed, 31 Aug 2022 05:57:58 +0000 (07:57 +0200)]
Rollup merge of #101025 - semarie:openbsd-archs, r=petrochenkov

Add tier-3 support for powerpc64 and riscv64 openbsd

# powerpc64
- MCP for [powerpc64-unknown-openbsd tier-3 support](https://github.com/rust-lang/compiler-team/issues/551)
- only need to add spec definition in rustc_target

# riscv64
- MCP for [riscv64-unknown-openbsd tier-3 support](https://github.com/rust-lang/compiler-team/issues/552)
- add spec definition in rustc_target
- follow freebsd about avoiding linking with `libatomic`

22 months agoRollup merge of #101011 - BlackHoleFox:apple-random-improvements, r=thomcc
Matthias Krüger [Wed, 31 Aug 2022 05:57:56 +0000 (07:57 +0200)]
Rollup merge of #101011 - BlackHoleFox:apple-random-improvements, r=thomcc

Use getentropy when possible on all Apple platforms

As the current code comments say, `SecRandomCopyBytes` is very heavyweight (regardless of purpose) compared to just asking the kernel directly for bytes from its own CSPRNG. We were not previously making an attempt to use the more efficient `getentropy` call on other Apple targets, instead solely using it on macOS. As the function is available on newer versions of Apple's different OSes, this changes the random filling to always attempt it first everywhere, only falling back to the less ideal alternatives after. This also cleans up the multiple Apple `imp` blocks into one.

It also should give a perf improvement, even if its likely unnoticeably small.

Refed XCode header for `getentropy` in the SDK:
```h
int getentropy(void* buffer, size_t size) __OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0) __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
```

r? ``@thomcc``

22 months agoRollup merge of #100984 - ChrisDenton:reinstate-init, r=Mark-Simulacrum
Matthias Krüger [Wed, 31 Aug 2022 05:57:55 +0000 (07:57 +0200)]
Rollup merge of #100984 - ChrisDenton:reinstate-init, r=Mark-Simulacrum

Reinstate preloading of some dll imports

I've now come around to the conclusion that there is a justification for pre-loading the synchronization functions `WaitOnAddress` and `WakeByAddressSingle`. I've found this to have a particularly impact in testing frameworks that may have short lived processes which immediately spawn lots of threads.

Also, because pre-main initializers imply a single-threaded environment, we can switch back to using relaxed atomics which might be a minor perf improvement on some platforms (though I doubt it's particularly notable).

r? ``@Mark-Simulacrum`` and sorry for the churn here.

For convenience I'll summarise previous issues with preloading and the solutions that are included in this PR (if any):

**Issue:** User pre-main initializers may be run before std's
**Solution:** The std now uses initializers that are guaranteed to run earlier than the old initializers. A note is also added that users should not copy std's behaviour if they want to ensure they run their initializers after std.

**Issue:** Miri does not understand pre-main initializers.
**Solution:** For miri only, run the function loading lazily instead.

**Issue:** We should ideally use `LoadLibrary` to get "api-ms-win-core-synch-l1-2-0". Only "ntdll" and "kernel32" are guaranteed to always be loaded.
**Solution:** None. We can't use `LoadLibrary` pre-main. However, in the past `GetModuleHandle` has always worked in practice so this should hopefully not be a problem.

If/when Windows 7 support is dropped, we can finally remove all this for good and just use normal imports.