]> git.lizzy.rs Git - rust.git/log
rust.git
22 months agoComment a bit, use find_ancestor_in_same_ctxt to suppress some weird macro notes
Michael Goulet [Wed, 17 Aug 2022 06:17:36 +0000 (06:17 +0000)]
Comment a bit, use find_ancestor_in_same_ctxt to suppress some weird macro notes

22 months agoPoint at struct field if possible
Michael Goulet [Wed, 17 Aug 2022 04:57:17 +0000 (04:57 +0000)]
Point at struct field if possible

22 months agoDeduplicate errors that come from places like normalization, sized
Michael Goulet [Wed, 17 Aug 2022 02:22:06 +0000 (02:22 +0000)]
Deduplicate errors that come from places like normalization, sized

22 months agoPrefer non-Self non-method types over Self, first
Michael Goulet [Wed, 17 Aug 2022 01:28:26 +0000 (01:28 +0000)]
Prefer non-Self non-method types over Self, first

22 months agoRework ambiguity errors
Michael Goulet [Wed, 17 Aug 2022 00:21:40 +0000 (00:21 +0000)]
Rework ambiguity errors

22 months agoNote closure kind mismatch cause
Michael Goulet [Thu, 18 Aug 2022 12:22:07 +0000 (12:22 +0000)]
Note closure kind mismatch cause

22 months agoRevert closure mismatch spans
Michael Goulet [Tue, 16 Aug 2022 23:54:54 +0000 (23:54 +0000)]
Revert closure mismatch spans

22 months agoDo not favor projection type when pointing out arg causing fulfillment error
Michael Goulet [Tue, 16 Aug 2022 23:37:56 +0000 (23:37 +0000)]
Do not favor projection type when pointing out arg causing fulfillment error

22 months agoSkip mentioning lang item
Michael Goulet [Tue, 16 Aug 2022 23:28:20 +0000 (23:28 +0000)]
Skip mentioning lang item

22 months agoAccount for relative paths
Michael Goulet [Tue, 16 Aug 2022 23:13:23 +0000 (23:13 +0000)]
Account for relative paths

22 months agoRework point-at-arg
Michael Goulet [Tue, 16 Aug 2022 06:27:22 +0000 (06:27 +0000)]
Rework point-at-arg

22 months agoAuto merge of #99967 - Mark-Simulacrum:download-llvm-ci, r=jyn514
bors [Sat, 20 Aug 2022 22:49:36 +0000 (22:49 +0000)]
Auto merge of #99967 - Mark-Simulacrum:download-llvm-ci, r=jyn514

Download, rather than sccache-cache, LLVM in CI

My hope/expectation is that we can do better than sccache in CI for cached builds -- currently it looks like on macOS those still take upwards of 10-11 minutes, which is a significant amount of time that we could potentially cut.

This enables this mode for all non-dist builders; this should avoid any problems with the artifacts we distribute, while also providing for faster test builders (since they'll make use of PGO'd LLVM on the platforms we do that on, which is hopefully a nice win). It slightly increases the chance of test builders starting to fail only after a PR is merged (if PGO changes runtime behavior), but that should hopefully never happen, so I think this is worthwhile.

Measurements on the PR for apple-1 don't show any noticeable improvement in CI times, but those can be pretty noisy -- I'm inclined to land this since it *should* pretty much always be better and we can reconsider if that ever turns out not to be the case.

22 months agoAuto merge of #100810 - matthiaskrgr:rollup-xep778s, r=matthiaskrgr
bors [Sat, 20 Aug 2022 20:08:26 +0000 (20:08 +0000)]
Auto merge of #100810 - matthiaskrgr:rollup-xep778s, r=matthiaskrgr

Rollup of 9 pull requests

Successful merges:

 - #97963 (net listen backlog set to negative on Linux.)
 - #99935 (Reenable disabled early syntax gates as future-incompatibility lints)
 - #100129 (add miri-test-libstd support to libstd)
 - #100500 (Ban references to `Self` in trait object substs for projection predicates too.)
 - #100636 (Revert "Revert "Allow dynamic linking for iOS/tvOS targets."")
 - #100718 ([rustdoc] Fix item info display)
 - #100769 (Suggest adding a reference to a trait assoc item)
 - #100777 (elaborate how revisions work with FileCheck stuff in src/test/codegen)
 - #100796 (Refactor: remove unnecessary string searchings)

Failed merges:

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

22 months agoRollup merge of #100796 - TaKO8Ki:remove-unnecessary-string-searching, r=compiler...
Matthias Krüger [Sat, 20 Aug 2022 17:45:17 +0000 (19:45 +0200)]
Rollup merge of #100796 - TaKO8Ki:remove-unnecessary-string-searching, r=compiler-errors

Refactor: remove unnecessary string searchings

This patch removes unnecessary string searchings for checking if function arguments have `&` and `&mut`.

22 months agoRollup merge of #100777 - pnkfelix:expand-codegen-tests-readme, r=TaKO8Ki
Matthias Krüger [Sat, 20 Aug 2022 17:45:16 +0000 (19:45 +0200)]
Rollup merge of #100777 - pnkfelix:expand-codegen-tests-readme, r=TaKO8Ki

elaborate how revisions work with FileCheck stuff in src/test/codegen

elaborate how revisions work with FileCheck stuff in src/test/codegen

22 months agoRollup merge of #100769 - TaKO8Ki:suggest-adding-reference-to-trait-assoc-item, r...
Matthias Krüger [Sat, 20 Aug 2022 17:45:15 +0000 (19:45 +0200)]
Rollup merge of #100769 - TaKO8Ki:suggest-adding-reference-to-trait-assoc-item, r=cjgillot

Suggest adding a reference to a trait assoc item

fixes #100289

22 months agoRollup merge of #100718 - GuillaumeGomez:fix-item-info, r=jsha
Matthias Krüger [Sat, 20 Aug 2022 17:45:14 +0000 (19:45 +0200)]
Rollup merge of #100718 - GuillaumeGomez:fix-item-info, r=jsha

[rustdoc] Fix item info display

Fixes  #100369.

The solution I came up with was simply to wrap the "text part" of the `item-info` into another span so that `flex` wouldn't mess with it.

Live demo is [here](https://rustdoc.crud.net/imperio/fix-item-info/foo/struct.ItemInfo.html).

r? ``@jsha``

22 months agoRollup merge of #100636 - cutsoy:revert-77716, r=davidtwco
Matthias Krüger [Sat, 20 Aug 2022 17:45:13 +0000 (19:45 +0200)]
Rollup merge of #100636 - cutsoy:revert-77716, r=davidtwco

Revert "Revert "Allow dynamic linking for iOS/tvOS targets.""

This reverts commit 16e10bf81ee73f61cf813acef3d5dbbce4f66da2 (PR #77716).

The original original PR enabled `cdylib` builds for iOS. However this caused problems because:

> This new feature in Rust 1.46 added a lot of headache for iOS builds with cdylib targets. cdylib target is near impossible to build if you are using any crate with native dependencies (ex. openssl, libsodium, zmq). You can't just find .so files for all architectures to perform correct linking. Usual workflow is the following:
>
> 1. You build staticlib and rely that native dependencies will be linked as frameworks later
> 2. You setup right cocoapods in ObjectiveC/Swift wrapper.
>
> As cargo doesn't support platform-dependent crate types https://github.com/rust-lang/rust/pull/4881 as a result a lot of projects now broken on Rust 1.46

However, this will be soon a thing of the past since 1.64 brings us the long awaited much anticipated `--crate-type` flag.

> I see that this got merged recently: https://github.com/rust-lang/cargo/issues/10083. The --crate-type flag will get stabilized in 1.64. In 1.64, you could still get a successful iOS staticlib with cargo build --crate-type=statclib even if the crate has cdylib targets too. If I'm not mistaken, this solves the problem too so this PR could be reverted in 1.64 with relatively little headache.

So summing up, I think this PR can be reverted in 1.64. 🤞

22 months agoRollup merge of #100500 - cjgillot:verify-self-predicate, r=lcnr
Matthias Krüger [Sat, 20 Aug 2022 17:45:12 +0000 (19:45 +0200)]
Rollup merge of #100500 - cjgillot:verify-self-predicate, r=lcnr

Ban references to `Self` in trait object substs for projection predicates too.

Fixes https://github.com/rust-lang/rust/issues/100484
Fixes https://github.com/rust-lang/rust/issues/100485

r? ````@lcnr````

22 months agoRollup merge of #100129 - RalfJung:miri-test-libstd, r=thomcc
Matthias Krüger [Sat, 20 Aug 2022 17:45:11 +0000 (19:45 +0200)]
Rollup merge of #100129 - RalfJung:miri-test-libstd, r=thomcc

add miri-test-libstd support to libstd

- The first commit mirrors what we already have in liballoc.
- The second commit adds some regression tests that only really make sense to be run in Miri, since they rely on Miri's extra checks to detect anything.
- The third commit makes the MPSC tests work in reasonable time in Miri by reducing iteration counts.
- The fourth commit silences some warnings due to code being disabled with `cfg(miri)`

22 months agoRollup merge of #99935 - CAD97:unstable-syntax-lints, r=petrochenkov
Matthias Krüger [Sat, 20 Aug 2022 17:45:10 +0000 (19:45 +0200)]
Rollup merge of #99935 - CAD97:unstable-syntax-lints, r=petrochenkov

Reenable disabled early syntax gates as future-incompatibility lints

- MCP: https://github.com/rust-lang/compiler-team/issues/535

The approach taken by this PR is

- Introduce a new lint, `unstable_syntax_pre_expansion`, and reenable the early syntax gates to emit it
- Use the diagnostic stashing mechanism to stash warnings the early warnings
- When the hard error occurs post expansion, steal and cancel the early warning
- Don't display any stashed warnings if errors are present to avoid the same noise problem that hiding type ascription errors is avoiding

Commits are working commits, but in a coherent steps-to-implement manner. Can be squashed if desired.

The preexisting `soft_unstable` lint seems like it would've been a good fit, but it is deny-by-default (appropriate for `#[bench]`) and these gates should be introduced as warn-by-default.

It may be desirable to change the stash mechanism's behavior to not flush lint errors in the presence of other errors either (like is done for warnings here), but upgrading a stash-using lint from warn to error perhaps is enough of a request to see the lint that they shouldn't be hidden; additionally, fixing the last error to get new errors thrown at you always feels bad, so if we know the lint errors are present, we should show them.

Using a new flag/mechanism for a "weak diagnostic" which is suppressed by other errors may also be desirable over assuming any stashed warnings are "weak," but this is the first user of stashing warnings and seems an appropriate use of stashing (it follows the "know more later to refine the diagnostic" pattern; here we learn that it's in a compiled position) so we get to define what it means to stash a non-hard-error diagnostic.

cc `````@petrochenkov````` (seconded MCP)

22 months agoRollup merge of #97963 - devnexen:net_listener_neg, r=the8472
Matthias Krüger [Sat, 20 Aug 2022 17:45:09 +0000 (19:45 +0200)]
Rollup merge of #97963 - devnexen:net_listener_neg, r=the8472

net listen backlog set to negative on Linux.

it will be 4076 (from 5.4) or 128.

22 months agoAuto merge of #100809 - matthiaskrgr:rollup-xkpd5ii, r=matthiaskrgr
bors [Sat, 20 Aug 2022 17:38:29 +0000 (17:38 +0000)]
Auto merge of #100809 - matthiaskrgr:rollup-xkpd5ii, r=matthiaskrgr

Rollup of 9 pull requests

Successful merges:

 - #99415 (Initial implementation of REUSE)
 - #99544 (Expose `Utf8Lossy` as `Utf8Chunks`)
 - #100585 (Fix trailing space showing up in example)
 - #100596 (Remove unnecessary stderr files)
 - #100642 (Update fortanix-sgx-abi and export some useful SGX usercall traits)
 - #100691 (Make `same_type_modulo_infer` a proper `TypeRelation`)
 - #100693 (Add LLVM15-specific codegen test for `try`/`?`s that now optimize away)
 - #100710 (Windows: Load synch functions together)
 - #100807 (Add TaKO8Ki to translation-related mention groups)

Failed merges:

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

22 months agoRollup merge of #100807 - TaKO8Ki:add-tako8ki-to-translation-related-mention-groups...
Matthias Krüger [Sat, 20 Aug 2022 17:32:14 +0000 (19:32 +0200)]
Rollup merge of #100807 - TaKO8Ki:add-tako8ki-to-translation-related-mention-groups, r=Mark-Simulacrum

Add TaKO8Ki to translation-related mention groups

Can I join translation-related mention groups?

cc `@davidtwco`

22 months agoRollup merge of #100710 - ChrisDenton:load-library, r=thomcc
Matthias Krüger [Sat, 20 Aug 2022 17:32:13 +0000 (19:32 +0200)]
Rollup merge of #100710 - ChrisDenton:load-library, r=thomcc

Windows: Load synch functions together

Attempt to load all the required sync functions and fail if any one of them fails.

This fixes a FIXME by going back to optional loading of `WakeByAddressSingle`.

Also reintroduces a macro for optional loading of functions but keeps it separate from the fallback macro rather than having that do two different jobs.

r? `@thomcc`

22 months agoRollup merge of #100693 - scottmcm:new-llvm15-nops, r=Mark-Simulacrum
Matthias Krüger [Sat, 20 Aug 2022 17:32:12 +0000 (19:32 +0200)]
Rollup merge of #100693 - scottmcm:new-llvm15-nops, r=Mark-Simulacrum

Add LLVM15-specific codegen test for `try`/`?`s that now optimize away

These still generated a bunch of code back in Rust 1.63 (<https://rust.godbolt.org/z/z31P8h6rz>), but with LLVM 15 merged they no longer do 🎉

22 months agoRollup merge of #100691 - compiler-errors:issue-100690, r=estebank
Matthias Krüger [Sat, 20 Aug 2022 17:32:11 +0000 (19:32 +0200)]
Rollup merge of #100691 - compiler-errors:issue-100690, r=estebank

Make `same_type_modulo_infer` a proper `TypeRelation`

Specifically, this fixes #100690 because we no longer consider a `ReLateBound` and a `ReVar` to be equal. `ReVar` can only be equal to free regions or static.

22 months agoRollup merge of #100642 - mzohreva:mz/update-sgx-abi-cancel-queue, r=Mark-Simulacrum
Matthias Krüger [Sat, 20 Aug 2022 17:32:10 +0000 (19:32 +0200)]
Rollup merge of #100642 - mzohreva:mz/update-sgx-abi-cancel-queue, r=Mark-Simulacrum

Update fortanix-sgx-abi and export some useful SGX usercall traits

Update `fortanix-sgx-abi` to 0.5.0 to add support for cancel queue (see https://github.com/fortanix/rust-sgx/pull/405 and https://github.com/fortanix/rust-sgx/pull/404).

Export some useful traits for processing SGX usercall. This is needed for https://github.com/fortanix/rust-sgx/pull/404 to avoid duplication.

cc `@raoulstrackx` and `@jethrogb`

22 months agoRollup merge of #100596 - TaKO8Ki:remove-unnecessary-stderr-files, r=Mark-Simulacrum
Matthias Krüger [Sat, 20 Aug 2022 17:32:09 +0000 (19:32 +0200)]
Rollup merge of #100596 - TaKO8Ki:remove-unnecessary-stderr-files, r=Mark-Simulacrum

Remove unnecessary stderr files

This patch removes stderr files corresponding to revisions that have already been removed.

22 months agoRollup merge of #100585 - wooorm:patch-1, r=Mark-Simulacrum
Matthias Krüger [Sat, 20 Aug 2022 17:32:08 +0000 (19:32 +0200)]
Rollup merge of #100585 - wooorm:patch-1, r=Mark-Simulacrum

Fix trailing space showing up in example

The current text is rendered as: U+005B ..= U+0060 ``[ \ ] ^ _ ` ``, or (**note the final space!**)
This patch changes that to render as: U+005B ..= U+0060 `` [ \ ] ^ _ ` ``, or (**note no final space!**)

The reason for that, is that CommonMark has a solution for starting or ending inline code with a backtick/grave accent: padding both sides with a space, makes that padding disappear.

22 months agoRollup merge of #99544 - dylni:expose-utf8lossy, r=Mark-Simulacrum
Matthias Krüger [Sat, 20 Aug 2022 17:32:07 +0000 (19:32 +0200)]
Rollup merge of #99544 - dylni:expose-utf8lossy, r=Mark-Simulacrum

Expose `Utf8Lossy` as `Utf8Chunks`

This PR changes the feature for `Utf8Lossy` from `str_internals` to `utf8_lossy` and improves the API. This is done to eventually expose the API as stable.

Proposal: rust-lang/libs-team#54
Tracking Issue: #99543

22 months agoRollup merge of #99415 - ferrocene:pa-reuse-initial, r=Mark-Simulacrum
Matthias Krüger [Sat, 20 Aug 2022 17:32:06 +0000 (19:32 +0200)]
Rollup merge of #99415 - ferrocene:pa-reuse-initial, r=Mark-Simulacrum

Initial implementation of REUSE

This PR implements the first two steps of #99414 by:

* Adding some scaffolding for REUSE. The `.reuse/dep5` file now marks every file as the custom "TODO" license, which I'll remove in a future PR once Debian imports their metadata. The TODO license is needed so that `reuse lint` works.
* Runs `reuse lint` in CI, in the `mingw-check` builder. REUSE currently has a bug when parsing some files in the LLVM source code. This means REUSE will fail when running it in source tarballs of rustc, and that bug prevents us from passing the `--include-submodules` flag in CI. I opened https://github.com/fsfe/reuse-tool/pull/560 upstream with a fix, and as soon as it's merged/released I planned to bump the pinned version to include the fix we need.

r? `@Mark-Simulacrum`

22 months agoExpose `Utf8Lossy` as `Utf8Chunks`
dylni [Sat, 20 Aug 2022 16:49:20 +0000 (12:49 -0400)]
Expose `Utf8Lossy` as `Utf8Chunks`

22 months agoAdd global safe.directory for CI
Mark Rousskov [Wed, 10 Aug 2022 11:16:25 +0000 (07:16 -0400)]
Add global safe.directory for CI

22 months agoEnable downloading prebuilt LLVM in test builders
Mark Rousskov [Sun, 31 Jul 2022 21:45:15 +0000 (17:45 -0400)]
Enable downloading prebuilt LLVM in test builders

See comment added for details on the test builder restriction. This is primarily
intended for macOS CI, but is likely to be a slight win on other builders too.

22 months agoadd TaKO8Ki to translation-related mention groups
Takayuki Maeda [Sat, 20 Aug 2022 11:47:41 +0000 (20:47 +0900)]
add TaKO8Ki to translation-related mention groups

22 months agouse more descriptive names
Takayuki Maeda [Sat, 20 Aug 2022 10:35:17 +0000 (19:35 +0900)]
use more descriptive names

22 months agoAuto merge of #100564 - nnethercote:box-ast-MacCall, r=spastorino
bors [Sat, 20 Aug 2022 10:26:54 +0000 (10:26 +0000)]
Auto merge of #100564 - nnethercote:box-ast-MacCall, r=spastorino

Box the `MacCall` in various types.

r? `@spastorino`

22 months agoAuto merge of #100793 - matthiaskrgr:rollup-dy7rfdh, r=matthiaskrgr
bors [Sat, 20 Aug 2022 07:59:48 +0000 (07:59 +0000)]
Auto merge of #100793 - matthiaskrgr:rollup-dy7rfdh, r=matthiaskrgr

Rollup of 10 pull requests

Successful merges:

 - #100186 (Mention `as_mut` alongside `as_ref` in borrowck error message)
 - #100383 (Mitigate stale data reads on SGX platform)
 - #100507 (suggest `once_cell::Lazy` for non-const statics)
 - #100617 (Suggest the right help message for as_ref)
 - #100667 (Migrate "invalid variable declaration" errors to SessionDiagnostic)
 - #100709 (Migrate typeck's `used` expected symbol diagnostic to `SessionDiagnostic`)
 - #100723 (Add the diagnostic translation lints to crates that don't emit them)
 - #100729 (Avoid zeroing a 1kb stack buffer on every call to `std::sys::windows::fill_utf16_buf`)
 - #100750 (improved diagnostic for function defined with `def`, `fun`, `func`, or `function` instead of `fn`)
 - #100763 (triagebot: Autolabel `A-rustdoc-json`)

Failed merges:

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

22 months agoremove unnecessary string searchings
Takayuki Maeda [Sat, 20 Aug 2022 06:54:39 +0000 (15:54 +0900)]
remove unnecessary string searchings

remove unnecessary string searchings for checking if function arguments have `&` and `&mut`

22 months agoRollup merge of #100763 - aDotInTheVoid:triagebot-rdj, r=jyn514
Matthias Krüger [Sat, 20 Aug 2022 05:09:06 +0000 (07:09 +0200)]
Rollup merge of #100763 - aDotInTheVoid:triagebot-rdj, r=jyn514

triagebot: Autolabel `A-rustdoc-json`

22 months agoRollup merge of #100750 - akabinds:akabinds/improved-invalid-function-qual-error...
Matthias Krüger [Sat, 20 Aug 2022 05:09:05 +0000 (07:09 +0200)]
Rollup merge of #100750 - akabinds:akabinds/improved-invalid-function-qual-error, r=davidtwco

improved diagnostic for function defined with `def`, `fun`, `func`, or `function` instead of `fn`

Closes #99751

22 months agoRollup merge of #100729 - thomcc:less-initialized, r=ChrisDenton
Matthias Krüger [Sat, 20 Aug 2022 05:09:04 +0000 (07:09 +0200)]
Rollup merge of #100729 - thomcc:less-initialized, r=ChrisDenton

Avoid zeroing a 1kb stack buffer on every call to `std::sys::windows::fill_utf16_buf`

I've also tried to be slightly more careful about integer overflows, although in practice this is likely still not handled ideally.

r? `@ChrisDenton`

22 months agoRollup merge of #100723 - 5225225:the-easy-ones, r=compiler-errors
Matthias Krüger [Sat, 20 Aug 2022 05:09:03 +0000 (07:09 +0200)]
Rollup merge of #100723 - 5225225:the-easy-ones, r=compiler-errors

Add the diagnostic translation lints to crates that don't emit them

Some of these have a note saying that they should build on a stable compiler, does that mean they shouldn't get these lints? Or can we cfg them out on those?

22 months agoRollup merge of #100709 - JhonnyBillM:port-expected-used-symbol-diagnostic, r=compile...
Matthias Krüger [Sat, 20 Aug 2022 05:09:02 +0000 (07:09 +0200)]
Rollup merge of #100709 - JhonnyBillM:port-expected-used-symbol-diagnostic, r=compiler-errors

Migrate typeck's `used` expected symbol diagnostic to `SessionDiagnostic`

r? ``@davidtwco``

22 months agoRollup merge of #100667 - Xiretza:diag-structs-parser-ivd, r=davidtwco
Matthias Krüger [Sat, 20 Aug 2022 05:09:01 +0000 (07:09 +0200)]
Rollup merge of #100667 - Xiretza:diag-structs-parser-ivd, r=davidtwco

Migrate "invalid variable declaration" errors to SessionDiagnostic

After seeing the great blog post on Inside Rust, I decided to try my hand at this. Just one diagnostic for now to get used to the workflow and to check if this is the way to do it or if there are any problems.

22 months agoRollup merge of #100617 - chenyukang:fix-100605, r=compiler-errors
Matthias Krüger [Sat, 20 Aug 2022 05:09:00 +0000 (07:09 +0200)]
Rollup merge of #100617 - chenyukang:fix-100605, r=compiler-errors

Suggest the right help message for as_ref

Fixes #100605

22 months agoRollup merge of #100507 - cameron1024:suggest-lazy, r=compiler-errors
Matthias Krüger [Sat, 20 Aug 2022 05:08:59 +0000 (07:08 +0200)]
Rollup merge of #100507 - cameron1024:suggest-lazy, r=compiler-errors

suggest `once_cell::Lazy` for non-const statics

Addresses https://github.com/rust-lang/rust/issues/100410

Some questions:
 - removing the `if` seems to include too many cases (e.g. calls to non-const functions inside a `const fn`), but this code excludes the following case:
```rust
const FOO: Foo = non_const_fn();
```
Should we suggest `once_cell` in this case as well?
 - The original issue mentions suggesting `AtomicI32` instead of `Mutex<i32>`, should this PR address that as well?

22 months agoRollup merge of #100383 - fortanix:raoul/aepic_leak_mitigation, r=cuviper
Matthias Krüger [Sat, 20 Aug 2022 05:08:58 +0000 (07:08 +0200)]
Rollup merge of #100383 - fortanix:raoul/aepic_leak_mitigation, r=cuviper

Mitigate stale data reads on SGX platform

Intel disclosed the Stale Data Read vulnerability yesterday. In order to mitigate this issue completely, reading userspace from an SGX enclave must be aligned and in 8-bytes chunks. This PR implements this mitigation

References:
 - https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00657.html
 - https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/advisory-guidance/stale-data-read-from-xapic.html

cc: ``@jethrogb``

22 months agoRollup merge of #100186 - compiler-errors:or-as_mut, r=fee1-dead
Matthias Krüger [Sat, 20 Aug 2022 05:08:57 +0000 (07:08 +0200)]
Rollup merge of #100186 - compiler-errors:or-as_mut, r=fee1-dead

Mention `as_mut` alongside `as_ref` in borrowck error message

Kinda fixes #99426 but I guess that really might be better staying open to see if we could make it suggest `as_mut` in a structured way. Not sure how to change borrowck to know that info tho.

22 months agoUse const instead of static
Chris Denton [Thu, 18 Aug 2022 18:08:49 +0000 (19:08 +0100)]
Use const instead of static

22 months agoSimplify load/store
Chris Denton [Thu, 18 Aug 2022 17:34:19 +0000 (18:34 +0100)]
Simplify load/store

22 months agoSuggest the right help message for as_ref
yukang [Sat, 20 Aug 2022 01:43:37 +0000 (09:43 +0800)]
Suggest the right help message for as_ref

22 months agoelaborate how revisions work with FileCheck stuff in src/test/codegen
Felix S. Klock II [Fri, 19 Aug 2022 20:40:26 +0000 (16:40 -0400)]
elaborate how revisions work with FileCheck stuff in src/test/codegen

22 months agoAuto merge of #100740 - Dylan-DPC:rollup-0td6yq4, r=Dylan-DPC
bors [Fri, 19 Aug 2022 18:45:41 +0000 (18:45 +0000)]
Auto merge of #100740 - Dylan-DPC:rollup-0td6yq4, r=Dylan-DPC

Rollup of 9 pull requests

Successful merges:

 - #99576 (Do not allow `Drop` impl on foreign fundamental types)
 - #100081 (never consider unsafe blocks unused if they would be required with deny(unsafe_op_in_unsafe_fn))
 - #100208 (make NOP dyn casts not require anything about the vtable)
 - #100494 (Cleanup rustdoc themes)
 - #100522 (Only check the `DefId` for the recursion check in MIR inliner.)
 - #100592 (Manually implement Debug for ImportKind.)
 - #100598 (Don't fix builtin index when Where clause is found)
 - #100721 (Add diagnostics lints to `rustc_type_ir` module)
 - #100731 (rustdoc: count deref and non-deref as same set of used methods)

Failed merges:

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

22 months agosuggest adding a reference to a trait assoc item
Takayuki Maeda [Fri, 19 Aug 2022 17:51:20 +0000 (02:51 +0900)]
suggest adding a reference to a trait assoc item

22 months agotriagebot: Autolabel `A-rustdoc-json`
Nixon Enraght-Moony [Fri, 19 Aug 2022 16:31:32 +0000 (17:31 +0100)]
triagebot: Autolabel `A-rustdoc-json`

22 months agoFix comment typo
Thom Chiovoloni [Fri, 19 Aug 2022 15:45:21 +0000 (08:45 -0700)]
Fix comment typo

22 months agoAuto merge of #100209 - cjgillot:source-file-index, r=estebank
bors [Fri, 19 Aug 2022 15:31:25 +0000 (15:31 +0000)]
Auto merge of #100209 - cjgillot:source-file-index, r=estebank

Lazily decode SourceFile from metadata

Currently, source files from foreign crates are decoded up-front from metadata.
Spans from those crates were matched with the corresponding source using binary search among those files.

This PR changes the strategy by matching spans to files during encoding. This allows to decode source files on-demand, instead of up-front. The on-disk format for spans becomes: `<tag> <position from start of file> <length> <file index> <crate (if foreign file)>`.

22 months agoRefactor if-available setting to work in CI
Mark Rousskov [Sat, 30 Jul 2022 21:11:50 +0000 (17:11 -0400)]
Refactor if-available setting to work in CI

This verifies if the HEAD sha matches with the detected LLVM SHA, and if not,
permits usage of the detected LLVM. Otherwise, we fallback on regular
non-downloaded LLVM (currently still cached with sccache, though that's still
10+ minutes on macOS).

22 months agoMinor refactoring
Mark Rousskov [Sat, 30 Jul 2022 20:53:18 +0000 (16:53 -0400)]
Minor refactoring

22 months agoRollup merge of #100731 - notriddle:notriddle/deref-methods-1, r=jsha
Dylan DPC [Fri, 19 Aug 2022 06:56:47 +0000 (12:26 +0530)]
Rollup merge of #100731 - notriddle:notriddle/deref-methods-1, r=jsha

rustdoc: count deref and non-deref as same set of used methods

Fixes #100679

22 months agoRollup merge of #100721 - JhonnyBillM:enable-diag-lint-in-type-ir, r=compiler-errors
Dylan DPC [Fri, 19 Aug 2022 06:56:46 +0000 (12:26 +0530)]
Rollup merge of #100721 - JhonnyBillM:enable-diag-lint-in-type-ir, r=compiler-errors

Add diagnostics lints to `rustc_type_ir` module

Module is complete. It doesn’t have any diagnostics.

22 months agoRollup merge of #100598 - ouz-a:91633, r=compiler-errors
Dylan DPC [Fri, 19 Aug 2022 06:56:45 +0000 (12:26 +0530)]
Rollup merge of #100598 - ouz-a:91633, r=compiler-errors

Don't fix builtin index when Where clause is found

Where clause shadows blanket impl for `Index` which causes normalization to not occur, which causes ICE to happen when we typeck.

r? `@compiler-errors`

Fixes #91633

22 months agoRollup merge of #100592 - cjgillot:debug-import-kind, r=TaKO8Ki
Dylan DPC [Fri, 19 Aug 2022 06:56:44 +0000 (12:26 +0530)]
Rollup merge of #100592 - cjgillot:debug-import-kind, r=TaKO8Ki

Manually implement Debug for ImportKind.

This avoids crashing due to an infinite loop when running with `RUSTC_LOG=rustc_resolve`.

22 months agoRollup merge of #100522 - cjgillot:inline-polymorphic-recursion, r=tmiasko
Dylan DPC [Fri, 19 Aug 2022 06:56:43 +0000 (12:26 +0530)]
Rollup merge of #100522 - cjgillot:inline-polymorphic-recursion, r=tmiasko

Only check the `DefId` for the recursion check in MIR inliner.

The current history check compares `Instance`s, so it cannot detect cases of polymorphic recursion where `Substs` change.
This PR makes it so we only compare `DefId`s, ignoring any change in `Substs`.

According to https://github.com/rust-lang/rust/pull/100522#issuecomment-1214769757, in practice only very few inlining decisions change.

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

22 months agoRollup merge of #100494 - GuillaumeGomez:cleanup-themes, r=jsha
Dylan DPC [Fri, 19 Aug 2022 06:56:42 +0000 (12:26 +0530)]
Rollup merge of #100494 - GuillaumeGomez:cleanup-themes, r=jsha

Cleanup rustdoc themes

This PR continues our work to simplify the rustdoc themes by relying more on CSS variables. Interestingly enough, this time it allowed me to realize that we were having a lot of different colors for borders even though the difference is unnoticeable. I used this opportunity to unify them.

The live demo is [here](https://rustdoc.crud.net/imperio/cleanup-themes/std/index.html).

r? `@jsha`

22 months agoRollup merge of #100208 - RalfJung:dyn-upcast-nop, r=petrochenkov
Dylan DPC [Fri, 19 Aug 2022 06:56:41 +0000 (12:26 +0530)]
Rollup merge of #100208 - RalfJung:dyn-upcast-nop, r=petrochenkov

make NOP dyn casts not require anything about the vtable

As suggested [on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/144729-t-types/topic/dyn-upcasting.20stabilization/near/292151439). This matches what the codegen backends already do, and what Miri did do until https://github.com/rust-lang/rust/pull/99420 when I made it super extra paranoid.

22 months agoRollup merge of #100081 - RalfJung:unused-unsafe-in-unsafe-fn, r=jackh726
Dylan DPC [Fri, 19 Aug 2022 06:56:40 +0000 (12:26 +0530)]
Rollup merge of #100081 - RalfJung:unused-unsafe-in-unsafe-fn, r=jackh726

never consider unsafe blocks unused if they would be required with deny(unsafe_op_in_unsafe_fn)

Judging from https://github.com/rust-lang/rust/issues/71668#issuecomment-1200317370 the consensus nowadays seems to be that we should never consider an unsafe block unused if it was required with `deny(unsafe_op_in_unsafe_fn)`, no matter whether that lint is actually enabled or not. So let's adjust rustc accordingly.

The first commit does the change, the 2nd does some cleanup.

22 months agoRollup merge of #99576 - compiler-errors:foreign-fundamental-drop-is-bad, r=TaKO8Ki
Dylan DPC [Fri, 19 Aug 2022 06:56:38 +0000 (12:26 +0530)]
Rollup merge of #99576 - compiler-errors:foreign-fundamental-drop-is-bad, r=TaKO8Ki

Do not allow `Drop` impl on foreign fundamental types

`Drop` should not be implemented on `Pin<T>` even if `T` is local.

This does not trigger regular orphan rules is because `Pin` is `#[fundamental]`... but we don't allow specialized `Drop` impls anyways, so these rules are not sufficient to prevent this impl on stable. Let's just choose even stricter rules, since we shouldn't be implementing `Drop` on a foreign ADT ever.

Fixes #99575

22 months agoAuto merge of #99541 - timvermeulen:flatten_cleanup, r=the8472
bors [Fri, 19 Aug 2022 02:34:30 +0000 (02:34 +0000)]
Auto merge of #99541 - timvermeulen:flatten_cleanup, r=the8472

Refactor iteration logic in the `Flatten` and `FlatMap` iterators

The `Flatten` and `FlatMap` iterators both delegate to `FlattenCompat`:
```rust
struct FlattenCompat<I, U> {
    iter: Fuse<I>,
    frontiter: Option<U>,
    backiter: Option<U>,
}
```
Every individual iterator method that `FlattenCompat` implements needs to carefully manage this state, checking whether the `frontiter` and `backiter` are present, and storing the current iterator appropriately if iteration is aborted. This has led to methods such as `next`, `advance_by`, and `try_fold` all having similar code for managing the iterator's state.

I have extracted this common logic of iterating the inner iterators with the option to exit early into a `iter_try_fold` method:
```rust
impl<I, U> FlattenCompat<I, U>
where
    I: Iterator<Item: IntoIterator<IntoIter = U>>,
{
    fn iter_try_fold<Acc, Fold, R>(&mut self, acc: Acc, fold: Fold) -> R
    where
        Fold: FnMut(Acc, &mut U) -> R,
        R: Try<Output = Acc>,
    { ... }
}
```
It passes each of the inner iterators to the given function as long as it keep succeeding. It takes care of managing `FlattenCompat`'s state, so that the actual `Iterator` methods don't need to. The resulting code that makes use of this abstraction is much more straightforward:
```rust
fn next(&mut self) -> Option<U::Item> {
    #[inline]
    fn next<U: Iterator>((): (), iter: &mut U) -> ControlFlow<U::Item> {
        match iter.next() {
            None => ControlFlow::CONTINUE,
            Some(x) => ControlFlow::Break(x),
        }
    }

    self.iter_try_fold((), next).break_value()
}
```
Note that despite being implemented in terms of `iter_try_fold`, `next` is still able to benefit from `U`'s `next` method. It therefore does not take the performance hit that implementing `next` directly in terms of `Self::try_fold` causes (in some benchmarks).

This PR also adds `iter_try_rfold` which captures the shared logic of `try_rfold` and `advance_back_by`, as well as `iter_fold` and `iter_rfold` for folding without early exits (used by `fold`, `rfold`, `count`, and `last`).

Benchmark results:
```
                                             before                after
bench_flat_map_sum                       423,255 ns/iter      414,338 ns/iter
bench_flat_map_ref_sum                 1,942,139 ns/iter    2,216,643 ns/iter
bench_flat_map_chain_sum               1,616,840 ns/iter    1,246,445 ns/iter
bench_flat_map_chain_ref_sum           4,348,110 ns/iter    3,574,775 ns/iter
bench_flat_map_chain_option_sum          780,037 ns/iter      780,679 ns/iter
bench_flat_map_chain_option_ref_sum    2,056,458 ns/iter      834,932 ns/iter
```

I added the last two benchmarks specifically to demonstrate an extreme case where `FlatMap::next` can benefit from custom internal iteration of the outer iterator, so take it with a grain of salt. We should probably do a perf run to see if the changes to `next` are worth it in practice.

22 months agoAuto merge of #98851 - klensy:encode_symbols, r=cjgillot
bors [Thu, 18 Aug 2022 23:53:22 +0000 (23:53 +0000)]
Auto merge of #98851 - klensy:encode_symbols, r=cjgillot

rustc_metadata: dedupe strings to prevent multiple copies in rmeta/query cache blow file size

r? `@cjgillot`

Encodes strings in rmeta/query cache so duplicated ones will be encoded as offsets to first strings, reducing file size.

22 months agorustdoc: count deref and non-deref as same set of used methods
Michael Howell [Thu, 18 Aug 2022 22:13:28 +0000 (15:13 -0700)]
rustdoc: count deref and non-deref as same set of used methods

22 months agoclarify lib.rs attribute structure
Ralf Jung [Thu, 18 Aug 2022 22:07:35 +0000 (18:07 -0400)]
clarify lib.rs attribute structure

22 months agosilence some unused-fn warnings in miri std builds
Ralf Jung [Sat, 6 Aug 2022 18:46:30 +0000 (14:46 -0400)]
silence some unused-fn warnings in miri std builds

22 months agomake many std tests work in Miri
Ralf Jung [Thu, 4 Aug 2022 13:16:42 +0000 (09:16 -0400)]
make many std tests work in Miri

22 months agoadd some Miri-only tests
Ralf Jung [Thu, 4 Aug 2022 13:01:00 +0000 (09:01 -0400)]
add some Miri-only tests

22 months agoadd miri-test-libstd support to libstd
Ralf Jung [Thu, 4 Aug 2022 02:48:12 +0000 (22:48 -0400)]
add miri-test-libstd support to libstd

22 months agoAvoid zeroing a 1kb stack buffer on every call to `std::sys::windows::fill_utf16_buf`
Thom Chiovoloni [Thu, 18 Aug 2022 21:51:10 +0000 (14:51 -0700)]
Avoid zeroing a 1kb stack buffer on every call to `std::sys::windows::fill_utf16_buf`

22 months agoadded improved diagnostic for a function defined with an invalid qualifier
akabinds [Thu, 18 Aug 2022 21:14:04 +0000 (16:14 -0500)]
added improved diagnostic for a function defined with an invalid qualifier

22 months agoAuto merge of #98807 - cbeuw:derived-obligation, r=compiler-errors
bors [Thu, 18 Aug 2022 21:12:05 +0000 (21:12 +0000)]
Auto merge of #98807 - cbeuw:derived-obligation, r=compiler-errors

Reword "Required because of the requirements on the impl of ..."

Rephrases the awkward "Required because of the requirements on the impl of `{trait}` for `{type}`" to "required for `{type}` to implement `{trait}`"

22 months agoReword "Required because of the requirements on the impl of ..."
Andy Wang [Mon, 15 Aug 2022 20:31:37 +0000 (21:31 +0100)]
Reword "Required because of the requirements on the impl of ..."

22 months agoAdd diagnostic translation lints to crates that don't emit them
5225225 [Thu, 18 Aug 2022 18:27:29 +0000 (19:27 +0100)]
Add diagnostic translation lints to crates that don't emit them

22 months agoADD - diagnostic lints to type_ir
Jhonny Bill Mena [Thu, 18 Aug 2022 17:33:03 +0000 (13:33 -0400)]
ADD - diagnostic lints to type_ir

Module is completed because it doesn’t have any diagnostics

22 months agoUpdate rustdoc test
Guillaume Gomez [Thu, 18 Aug 2022 15:47:40 +0000 (17:47 +0200)]
Update rustdoc test

22 months agoAuto merge of #99860 - oli-obk:revert_97346, r=pnkfelix
bors [Thu, 18 Aug 2022 15:41:30 +0000 (15:41 +0000)]
Auto merge of #99860 - oli-obk:revert_97346, r=pnkfelix

Revert "Rollup merge of #97346 - JohnTitor:remove-back-compat-hacks, …

…r=oli-obk"

This reverts commit c703d11dccb4a895c7aead3b2fcd8cea8c483184, reversing
changes made to 64eb9ab869bc3f9ef3645302fbf22e706eea16cf.

it didn't apply cleanly, so now it works the same for RPIT and for TAIT instead of just working for RPIT, but we should keep those in sync anyway. It also exposed a TAIT bug (see the feature gated test that now ICEs).

r? `@pnkfelix`

fixes #99536

22 months agoFix item-info display
Guillaume Gomez [Thu, 18 Aug 2022 13:47:39 +0000 (15:47 +0200)]
Fix item-info display

22 months agoRemove unused CSS rule
Guillaume Gomez [Thu, 18 Aug 2022 13:56:25 +0000 (15:56 +0200)]
Remove unused CSS rule

22 months agoUpdate existing rustdoc-gui tests and add a new one
Guillaume Gomez [Sat, 13 Aug 2022 13:47:19 +0000 (15:47 +0200)]
Update existing rustdoc-gui tests and add a new one

22 months agoSimplify rustdoc themes by relying more on CSS variables
Guillaume Gomez [Sat, 13 Aug 2022 12:00:23 +0000 (14:00 +0200)]
Simplify rustdoc themes by relying more on CSS variables

22 months agoimport license changes
Pietro Albini [Thu, 18 Aug 2022 14:03:55 +0000 (16:03 +0200)]
import license changes

22 months agocleanup .reuse/dep5
Pietro Albini [Thu, 18 Aug 2022 14:03:26 +0000 (16:03 +0200)]
cleanup .reuse/dep5

22 months agoimport the debian/copyright file from debian
Pietro Albini [Thu, 18 Aug 2022 13:32:45 +0000 (15:32 +0200)]
import the debian/copyright file from debian

Co-Authored-By: Angus Lees <gus@inodes.org>
Co-Authored-By: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Co-Authored-By: Hiroaki Nakamura <hnakamur@gmail.com>
Co-Authored-By: Jordan Justen <jljusten@gmail.com>
Co-Authored-By: Luca Bruno <lucab@debian.org>
Co-Authored-By: Sylvestre Ledru <sylvestre@debian.org>
Co-Authored-By: Ximin Luo <infinity0@debian.org>
22 months agoAuto merge of #100682 - RalfJung:miri, r=RalfJung
bors [Thu, 18 Aug 2022 12:56:21 +0000 (12:56 +0000)]
Auto merge of #100682 - RalfJung:miri, r=RalfJung

update Miri

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

22 months agoADD - ExpectedUsedSymbol diagnostic to port used() diagnostic
Jhonny Bill Mena [Thu, 18 Aug 2022 12:14:21 +0000 (08:14 -0400)]
ADD - ExpectedUsedSymbol diagnostic to port used() diagnostic

22 months agoAuto merge of #98655 - nnethercote:dont-derive-PartialEq-ne, r=dtolnay
bors [Thu, 18 Aug 2022 10:11:11 +0000 (10:11 +0000)]
Auto merge of #98655 - nnethercote:dont-derive-PartialEq-ne, r=dtolnay

Don't derive `PartialEq::ne`.

Currently we skip deriving `PartialEq::ne` for C-like (fieldless) enums
and empty structs, thus reyling on the default `ne`. This behaviour is
unnecessarily conservative, because the `PartialEq` docs say this:

> Implementations must ensure that eq and ne are consistent with each other:
>
> `a != b` if and only if `!(a == b)` (ensured by the default
> implementation).

This means that the default implementation (`!(a == b)`) is always good
enough. So this commit changes things such that `ne` is never derived.

The motivation for this change is that not deriving `ne` reduces compile
times and binary sizes.

Observable behaviour may change if a user has defined a type `A` with an
inconsistent `PartialEq` and then defines a type `B` that contains an
`A` and also derives `PartialEq`. Such code is already buggy and
preserving bug-for-bug compatibility isn't necessary.

Two side-effects of the change:
- There is only one error message produced for types where `PartialEq`
  cannot be derived, instead of two.
- For coverage reports, some warnings about generated `ne` methods not
  being executed have disappeared.

Both side-effects seem fine, and possibly preferable.

22 months agoAuto merge of #100708 - matthiaskrgr:rollup-vl0olnj, r=matthiaskrgr
bors [Thu, 18 Aug 2022 07:09:06 +0000 (07:09 +0000)]
Auto merge of #100708 - matthiaskrgr:rollup-vl0olnj, r=matthiaskrgr

Rollup of 9 pull requests

Successful merges:

 - #97962 (Make must_not_suspend lint see through references when drop tracking is enabled)
 - #99966 (avoid assertion failures in try_to_scalar_int)
 - #100637 (Improving Fuchsia rustc support documentation)
 - #100643 (Point at a type parameter shadowing another type)
 - #100651 (Migrations for rustc_expand transcribe.rs)
 - #100669 (Attribute cleanups)
 - #100670 (Fix documentation of rustc_parse::parser::Parser::parse_stmt_without_recovery)
 - #100674 (Migrate lint reports in typeck::check_unused to LintDiagnostic)
 - #100688 (`ty::Error` does not match other types for region constraints)

Failed merges:

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

22 months agoWindows: Load synch functions together
Chris Denton [Thu, 18 Aug 2022 06:34:25 +0000 (07:34 +0100)]
Windows: Load synch functions together

Attempt to load all the required sync functions and fail if any one of them fails.

This reintroduces a macro for optional loading of functions but keeps it separate from the fallback macro rather than having that do two different jobs.

22 months agoRollup merge of #100688 - compiler-errors:issue-100684, r=wesleywiser
Matthias Krüger [Thu, 18 Aug 2022 03:10:51 +0000 (05:10 +0200)]
Rollup merge of #100688 - compiler-errors:issue-100684, r=wesleywiser

`ty::Error` does not match other types for region constraints

Fixes #100684

22 months agoRollup merge of #100674 - PragmaTwice:mig-typeck-unused-crate-diag, r=davidtwco
Matthias Krüger [Thu, 18 Aug 2022 03:10:50 +0000 (05:10 +0200)]
Rollup merge of #100674 - PragmaTwice:mig-typeck-unused-crate-diag, r=davidtwco

Migrate lint reports in typeck::check_unused to LintDiagnostic

In this PR, I migrate two lint reports in `typeck::check_unused` by `LintDiagnostic`, all of which is about extern crates.

```@rustbot``` label +A-translation
r? rust-lang/diagnostics