]> git.lizzy.rs Git - rust.git/log
rust.git
2 years agoRollup merge of #91908 - matthiaskrgr:ices, r=jackh726
Matthias Krüger [Sat, 12 Feb 2022 08:26:20 +0000 (09:26 +0100)]
Rollup merge of #91908 - matthiaskrgr:ices, r=jackh726

Add 2 tests

fixes #91139
fixes #91069

2 years agoAuto merge of #93691 - compiler-errors:mir-tainted-by-errors, r=oli-obk
bors [Sat, 12 Feb 2022 05:19:33 +0000 (05:19 +0000)]
Auto merge of #93691 - compiler-errors:mir-tainted-by-errors, r=oli-obk

Implement `tainted_by_errors` in MIR borrowck, use it to skip CTFE

Putting this up for initial review. The issue that I found is when we're evaluating a const, we're doing borrowck, but doing nothing with the fact that borrowck fails.

This implements a `tainted_by_errors` field for MIR borrowck like we have in infcx, so we can use that information to return an `Err` during const eval if our const fails to borrowck.

This PR needs some cleaning up. I should probably just use `Result` in more places, instead of `.expect`ing in the places I am, but I just wanted it to compile so I could see if it worked!

Fixes #93646

r? `@oli-obk`
feel free to reassign

2 years agoAuto merge of #93671 - Kobzol:stable-hash-const, r=the8472
bors [Sat, 12 Feb 2022 02:05:11 +0000 (02:05 +0000)]
Auto merge of #93671 - Kobzol:stable-hash-const, r=the8472

Use const generics in SipHasher128's short_write

This was proposed by `@michaelwoerister` [here](https://github.com/rust-lang/rust/pull/93615#discussion_r799485554).
A few comments:
1) I tried to pass `&[u8; LEN]` instead of `[u8; LEN]`. Locally, it resulted in small icount regressions (about 0.5 %). When passing by value, there were no regressions (and no improvements).
2) I wonder if we should use `to_ne_bytes()` in `SipHasher128` to keep it generic and only use `to_le_bytes()` in `StableHasher`. However, currently `SipHasher128` is only used in `StableHasher` and the `short_write` method was private, so I couldn't use it directly from `StableHasher`. Using `to_le()` in the `StableHasher` was breaking this abstraction boundary before slightly.

```rust
debug_assert!(LEN <= 8);
```
This could be done at compile time, but actually I think that now we can remove this assert altogether.

r? `@the8472`

2 years agoAuto merge of #93921 - matthiaskrgr:rollup-wn3jlxj, r=matthiaskrgr
bors [Fri, 11 Feb 2022 23:01:50 +0000 (23:01 +0000)]
Auto merge of #93921 - matthiaskrgr:rollup-wn3jlxj, r=matthiaskrgr

Rollup of 10 pull requests

Successful merges:

 - #90955 (Rename `FilenameTooLong` to `InvalidFilename` and also use it for Windows' `ERROR_INVALID_NAME`)
 - #91607 (Make `span_extend_to_prev_str()` more robust)
 - #92895 (Remove some unused functionality)
 - #93635 (Add missing platform-specific information on current_dir and set_current_dir)
 - #93660 (rustdoc-json: Add some tests for typealias item)
 - #93782 (Split `pauth` target feature)
 - #93868 (Fix incorrect register conflict detection in asm!)
 - #93888 (Implement `AsFd` for `&T` and `&mut T`.)
 - #93909 (Fix typo: explicitely -> explicitly)
 - #93910 (fix mention of moved function in `rustc_hir` docs)

Failed merges:

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

2 years agoAdd 2 tests
Matthias Krüger [Tue, 14 Dec 2021 12:14:25 +0000 (13:14 +0100)]
Add 2 tests

fixes #91139
fixes #91069

2 years agoRollup merge of #93910 - rosehuds:master, r=cjgillot
Matthias Krüger [Fri, 11 Feb 2022 20:48:52 +0000 (21:48 +0100)]
Rollup merge of #93910 - rosehuds:master, r=cjgillot

fix mention of moved function in `rustc_hir` docs

The function was moved from `Crate` to `Map` in db9fea508a6d but these docs weren't updated

2 years agoRollup merge of #93909 - saschanaz:patch-2, r=petrochenkov
Matthias Krüger [Fri, 11 Feb 2022 20:48:51 +0000 (21:48 +0100)]
Rollup merge of #93909 - saschanaz:patch-2, r=petrochenkov

Fix typo: explicitely -> explicitly

2 years agoRollup merge of #93888 - sunfishcode:sunfishcode/impl-asfd-for-ref, r=joshtriplett
Matthias Krüger [Fri, 11 Feb 2022 20:48:50 +0000 (21:48 +0100)]
Rollup merge of #93888 - sunfishcode:sunfishcode/impl-asfd-for-ref, r=joshtriplett

Implement `AsFd` for `&T` and `&mut T`.

Add implementations of `AsFd` for `&T` and `&mut T`, so that users can
write code like this:

```rust
pub fn fchown<F: AsFd>(fd: F, uid: Option<u32>, gid: Option<u32>) -> io::Result<()> {
```

with `fd: F` rather than `fd: &F`.

And similar for `AsHandle` and `AsSocket` on Windows.

Also, adjust the `fchown` example to pass the file by reference. The
code can work either way now, but passing by reference is more likely
to be what users will want to do.

This is an alternative to #93869, and is a simpler way to achieve the
same goals: users don't need to pass borrowed-`BorrowedFd` arguments,
and it prevents a pitfall in the case where users write `fd: F` instead
of `fd: &F`.

r? ```@joshtriplett```

2 years agoRollup merge of #93868 - Amanieu:asm_reg_conflict, r=cjgillot
Matthias Krüger [Fri, 11 Feb 2022 20:48:49 +0000 (21:48 +0100)]
Rollup merge of #93868 - Amanieu:asm_reg_conflict, r=cjgillot

Fix incorrect register conflict detection in asm!

This would previously incorrectly reject two subregisters that were
distinct but part of the same larger register, for example `al` and
`ah`.

2 years agoRollup merge of #93782 - adamgemmell:dev/adagem01/split-pauth, r=Amanieu
Matthias Krüger [Fri, 11 Feb 2022 20:48:48 +0000 (21:48 +0100)]
Rollup merge of #93782 - adamgemmell:dev/adagem01/split-pauth, r=Amanieu

Split `pauth` target feature

Per discussion on https://github.com/rust-lang/rust/issues/86941 we'd like to split `pauth` into `paca` and `pacg` in order to better support possible future environments that only have the keys available for address or generic authentication. At the moment LLVM has the one `pauth` target_feature while Linux presents separate `paca` and `pacg` flags for feature detection.

Because the use of [target_feature](https://rust-lang.github.io/rfcs/2045-target-feature.html) will "allow the compiler to generate code under the assumption that this code will only be reached in hosts that support the feature", it does not make sense to simply translate `paca` into the LLVM feature `pauth`, as it will generate code as if `pacg` is available.

To accommodate this we error if only one of the two features is present. If LLVM splits them in the future we can remove this restriction without making a breaking change.

r? ```@Amanieu```

2 years agoRollup merge of #93660 - aDotInTheVoid:rustdoc-type-tests, r=CraftSpider
Matthias Krüger [Fri, 11 Feb 2022 20:48:47 +0000 (21:48 +0100)]
Rollup merge of #93660 - aDotInTheVoid:rustdoc-type-tests, r=CraftSpider

rustdoc-json: Add some tests for typealias item

r? ```@CraftSpider```

Improves https://github.com/rust-lang/rust/issues/81359

The test's arn't pretty, and I think eventually we need a better way of doing repeated tests on a deeply nested path,
without repeating the way to get to that path

```@rustbot``` modify labels: +A-rustdoc-json +T-rustdoc +A-rustdoc +A-testsuite

2 years agoRollup merge of #93635 - GuillaumeGomez:missing-platform-spec-info, r=Amanieu
Matthias Krüger [Fri, 11 Feb 2022 20:48:46 +0000 (21:48 +0100)]
Rollup merge of #93635 - GuillaumeGomez:missing-platform-spec-info, r=Amanieu

Add missing platform-specific information on current_dir and set_current_dir

Fixes #93598.

2 years agoRollup merge of #92895 - bjorn3:simplifications, r=jackh726
Matthias Krüger [Fri, 11 Feb 2022 20:48:44 +0000 (21:48 +0100)]
Rollup merge of #92895 - bjorn3:simplifications, r=jackh726

Remove some unused functionality

* Remove the `alt_std_name` option
* Remove the everybody loops pass
* Make two functions private

2 years agoRollup merge of #91607 - FabianWolff:issue-91560-const-span, r=jackh726
Matthias Krüger [Fri, 11 Feb 2022 20:48:43 +0000 (21:48 +0100)]
Rollup merge of #91607 - FabianWolff:issue-91560-const-span, r=jackh726

Make `span_extend_to_prev_str()` more robust

Fixes #91560. The logic in `span_extend_to_prev_str()` is currently quite brittle and fails if there is extra whitespace or something else in between, and it also should return an `Option` but doesn't currently.

2 years agoRollup merge of #90955 - JohnTitor:os-error-123-as-invalid-input, r=m-ou-se
Matthias Krüger [Fri, 11 Feb 2022 20:48:42 +0000 (21:48 +0100)]
Rollup merge of #90955 - JohnTitor:os-error-123-as-invalid-input, r=m-ou-se

Rename `FilenameTooLong` to `InvalidFilename` and also use it for Windows' `ERROR_INVALID_NAME`

Address https://github.com/rust-lang/rust/issues/90940#issuecomment-970157931
`ERROR_INVALID_NAME` (i.e. "The filename, directory name, or volume label syntax is incorrect") happens if we pass an invalid filename, directory name, or label syntax, so mapping as `InvalidInput` is reasonable to me.

2 years agouse body.tainted_by_error to skip loading MIR
Michael Goulet [Tue, 8 Feb 2022 06:21:23 +0000 (22:21 -0800)]
use body.tainted_by_error to skip loading MIR

2 years agoadd tainted_by_errors to mir::Body
Michael Goulet [Tue, 8 Feb 2022 06:00:15 +0000 (22:00 -0800)]
add tainted_by_errors to mir::Body

2 years agorework borrowck errors so that it's harder to not set tainted
Michael Goulet [Tue, 8 Feb 2022 06:37:32 +0000 (22:37 -0800)]
rework borrowck errors so that it's harder to not set tainted

2 years agoalways cache result from mir_borrowck
Michael Goulet [Sun, 6 Feb 2022 21:53:38 +0000 (13:53 -0800)]
always cache result from mir_borrowck

2 years agofix tests, add new tests checking borrowck CFTE ICE
Michael Goulet [Sun, 6 Feb 2022 04:51:33 +0000 (20:51 -0800)]
fix tests, add new tests checking borrowck CFTE ICE

2 years agoskip const eval if we have an error in borrowck
Michael Goulet [Sun, 6 Feb 2022 20:16:49 +0000 (12:16 -0800)]
skip const eval if we have an error in borrowck

2 years agoimplement tainted_by_errors in mir borrowck
Michael Goulet [Sun, 6 Feb 2022 20:15:39 +0000 (12:15 -0800)]
implement tainted_by_errors in mir borrowck

2 years agoAuto merge of #90271 - adamgemmell:dev/feat-detect-stabilise, r=Amanieu
bors [Fri, 11 Feb 2022 20:41:51 +0000 (20:41 +0000)]
Auto merge of #90271 - adamgemmell:dev/feat-detect-stabilise, r=Amanieu

Stabilise `is_aarch64_feature_detected!` under `simd_aarch64` feature

Initial implementation, looking for feedback on the approach here. https://github.com/rust-lang/rust/issues/86941

One point I noticed was that I haven't seen different "since" versions for the same feature - does this mean that other features can't be added to to the `simd_aarch64` feature once this is in stable? If so it might need a more specific name.

r? `@Amanieu`

2 years agoMake two functions private
bjorn3 [Fri, 25 Jun 2021 09:59:35 +0000 (11:59 +0200)]
Make two functions private

2 years agoRemove the alt_std_name option
bjorn3 [Fri, 14 Jan 2022 13:25:52 +0000 (14:25 +0100)]
Remove the alt_std_name option

This option introduced in #15820 allows a custom crate to be imported in
the place of std, but with the name std. I don't think there is any
value to this. At most it is confusing users of a driver that uses this option. There are no users of
this option on github. If anyone still needs it, they can emulate it
injecting #![no_core] in addition to their own prelude.

2 years agoAuto merge of #93893 - oli-obk:sad_revert, r=oli-obk
bors [Fri, 11 Feb 2022 17:39:34 +0000 (17:39 +0000)]
Auto merge of #93893 - oli-obk:sad_revert, r=oli-obk

Revert lazy TAIT PR

Revert https://github.com/rust-lang/rust/pull/92306 (sorry `@Aaron1011,` will include your changes in the fix PR)
Revert https://github.com/rust-lang/rust/pull/93783
Revert https://github.com/rust-lang/rust/pull/92007

fixes https://github.com/rust-lang/rust/issues/93788
fixes https://github.com/rust-lang/rust/issues/93794
fixes https://github.com/rust-lang/rust/issues/93821
fixes https://github.com/rust-lang/rust/issues/93831
fixes https://github.com/rust-lang/rust/issues/93841

2 years agoFix typo: explicitely->explicitly
Kagami Sascha Rosylight [Fri, 11 Feb 2022 15:23:39 +0000 (16:23 +0100)]
Fix typo: explicitely->explicitly

2 years agofix mention of moved function in `rustc_hir` docs
Rose Hudson [Fri, 11 Feb 2022 15:34:33 +0000 (15:34 +0000)]
fix mention of moved function in `rustc_hir` docs

the function was moved from `Crate` to `Map` in db9fea508a6d but the
docs weren't updated

2 years agoAdd missing platform-specific information on current_dir and set_current_dir
Guillaume Gomez [Thu, 3 Feb 2022 22:19:36 +0000 (23:19 +0100)]
Add missing platform-specific information on current_dir and set_current_dir

2 years agoAuto merge of #93891 - matthiaskrgr:rollup-xadut8w, r=matthiaskrgr
bors [Fri, 11 Feb 2022 15:16:09 +0000 (15:16 +0000)]
Auto merge of #93891 - matthiaskrgr:rollup-xadut8w, r=matthiaskrgr

Rollup of 8 pull requests

Successful merges:

 - #92242 (Erase regions before calculating layout for packed field capture)
 - #93443 (Add comment on stable_hash_impl for OwnerNodes)
 - #93742 (Drop rustc-docs from complete profile)
 - #93852 (rustdoc: remove support for multi-query search)
 - #93853 (Make all `hir::Map` methods consistently by-value)
 - #93861 (Fix ICE if no trait assoc const eq)
 - #93862 (Split x86_64-apple builder into two)
 - #93864 (Remove ArchiveBuilder::update_symbols)

Failed merges:

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

2 years agoRevert "Auto merge of #92007 - oli-obk:lazy_tait2, r=nikomatsakis"
Oli Scherer [Fri, 11 Feb 2022 07:18:06 +0000 (07:18 +0000)]
Revert "Auto merge of #92007 - oli-obk:lazy_tait2, r=nikomatsakis"

This reverts commit e7cc3bddbe0d0e374d05e7003e662bba1742dbae, reversing
changes made to 734368a200904ef9c21db86c595dc04263c87be0.

2 years agoRevert "Auto merge of #92306 - Aaron1011:opaque-type-op, r=oli-obk"
Oli Scherer [Fri, 11 Feb 2022 07:17:16 +0000 (07:17 +0000)]
Revert "Auto merge of #92306 - Aaron1011:opaque-type-op, r=oli-obk"

This reverts commit 1f0a96862ac9d4c6ca3e4bb500c8b9eac4d83049, reversing
changes made to bf242bb1199e25ca2274df5c4114e0c9436b74e9.

2 years agoRevert "Fix regression from lazy opaque types"
Oli Scherer [Fri, 11 Feb 2022 07:14:58 +0000 (07:14 +0000)]
Revert "Fix regression from lazy opaque types"

This reverts commit 239f1e716dcb1e145b5df5f9439524c817d123b2.

2 years agoRollup merge of #93864 - bjorn3:cleanup_archive_handling, r=petrochenkov
Matthias Krüger [Fri, 11 Feb 2022 06:48:10 +0000 (07:48 +0100)]
Rollup merge of #93864 - bjorn3:cleanup_archive_handling, r=petrochenkov

Remove ArchiveBuilder::update_symbols

All paths to an ArchiveBuilder::build call update_symbols first.

2 years agoRollup merge of #93862 - Mark-Simulacrum:apple-split, r=pietroalbini
Matthias Krüger [Fri, 11 Feb 2022 06:48:09 +0000 (07:48 +0100)]
Rollup merge of #93862 - Mark-Simulacrum:apple-split, r=pietroalbini

Split x86_64-apple builder into two

This splits out roughly 20-25 minutes of work, which should result in roughly parity with some of the other apple builders at approximately 2.2-2.4 hours per successful build.

r? `@pietroalbini`

2 years agoRollup merge of #93861 - JulianKnodt:notraitace, r=wesleywiser
Matthias Krüger [Fri, 11 Feb 2022 06:48:08 +0000 (07:48 +0100)]
Rollup merge of #93861 - JulianKnodt:notraitace, r=wesleywiser

Fix ICE if no trait assoc const eq

Fixes #93835

2 years agoRollup merge of #93853 - steffahn:map_by_value, r=wesleywiser
Matthias Krüger [Fri, 11 Feb 2022 06:48:06 +0000 (07:48 +0100)]
Rollup merge of #93853 - steffahn:map_by_value, r=wesleywiser

Make all `hir::Map` methods consistently by-value

`hir::Map` only consists of a single reference (as part of the contained `TyCtxt`) anyways, so copying is literally zero overhead compared to passing a reference

2 years agoRollup merge of #93852 - GuillaumeGomez:remove-multi-query, r=jsha
Matthias Krüger [Fri, 11 Feb 2022 06:48:05 +0000 (07:48 +0100)]
Rollup merge of #93852 - GuillaumeGomez:remove-multi-query, r=jsha

rustdoc: remove support for multi-query search

This is needed by https://github.com/rust-lang/rust/pull/90630 to make feature changes non-existent.

cc `@camelid`
r? `@jsha`

2 years agoRollup merge of #93742 - Mark-Simulacrum:skip-rustc-docs-complete, r=pietroalbini
Matthias Krüger [Fri, 11 Feb 2022 06:48:04 +0000 (07:48 +0100)]
Rollup merge of #93742 - Mark-Simulacrum:skip-rustc-docs-complete, r=pietroalbini

Drop rustc-docs from complete profile

Addresses #75833, but does not fully fix it -- we should support side-by-side installation of these ideally, but that's not currently possible.

r? `@pietroalbini`

2 years agoRollup merge of #93443 - spastorino:add-stable-hash-impl-doc, r=cjgillot
Matthias Krüger [Fri, 11 Feb 2022 06:48:03 +0000 (07:48 +0100)]
Rollup merge of #93443 - spastorino:add-stable-hash-impl-doc, r=cjgillot

Add comment on stable_hash_impl for OwnerNodes

r? `@cjgillot`

cc `@oli-obk`

`@bors` rollup=always

2 years agoRollup merge of #92242 - compiler-errors:layout-modulo-regions, r=matthewjasper
Matthias Krüger [Fri, 11 Feb 2022 06:48:02 +0000 (07:48 +0100)]
Rollup merge of #92242 - compiler-errors:layout-modulo-regions, r=matthewjasper

Erase regions before calculating layout for packed field capture

Self-explanatory. We just erase region inferencing because we don't need that for layout computation... Q: layouts are always equal modulo regions, right?

Fixes #92240

2 years agoAuto merge of #93865 - flip1995:clippyup, r=Manishearth,flip1995
bors [Fri, 11 Feb 2022 06:26:47 +0000 (06:26 +0000)]
Auto merge of #93865 - flip1995:clippyup, r=Manishearth,flip1995

Update Clippy

r? `@Manishearth`

2 years agoImplement `AsFd` for `&T` and `&mut T`.
Dan Gohman [Fri, 11 Feb 2022 02:26:12 +0000 (18:26 -0800)]
Implement `AsFd` for `&T` and `&mut T`.

Add implementations of `AsFd` for `&T` and `&mut T`, so that users can
write code like this:

```rust
pub fn fchown<F: AsFd>(fd: F, uid: Option<u32>, gid: Option<u32>) -> io::Result<()> {
```

with `fd: F` rather than `fd: &F`.

And similar for `AsHandle` and `AsSocket` on Windows.

Also, adjust the `fchown` example to pass the file by reference. The
code can work either way now, but passing by reference is more likely
to be what users will want to do.

This is an alternative to #93869, and is a simpler way to achieve the
same goals: users don't need to pass borrowed-`BorrowedFd` arguments,
and it prevents a pitfall in the case where users write `fd: F` instead
of `fd: &F`.

2 years agoSplit x86_64 apple builder into two
Mark Rousskov [Thu, 10 Feb 2022 16:39:02 +0000 (11:39 -0500)]
Split x86_64 apple builder into two

2 years agoAuto merge of #93860 - ehuss:update-rls, r=ehuss
bors [Thu, 10 Feb 2022 19:48:52 +0000 (19:48 +0000)]
Auto merge of #93860 - ehuss:update-rls, r=ehuss

Update rls

2 commits in f37425e33c864c697af06df66e7473444605c149..3df74381f37617ec800537c11fb0c3130f5f3616
2022-01-15 18:07:20 +0100 to 2022-02-10 07:33:33 -0800
- chore: Upgrade cargo (rust-lang/rls#1764)
- Bump rls-analysis version

2 years agoClippy: Fix botstrap fallout
flip1995 [Thu, 10 Feb 2022 18:52:01 +0000 (19:52 +0100)]
Clippy: Fix botstrap fallout

2 years agoFix incorrect register conflict detection in asm!
Amanieu d'Antras [Thu, 10 Feb 2022 18:04:09 +0000 (18:04 +0000)]
Fix incorrect register conflict detection in asm!

This would previously incorrectly reject two subregisters that were
distinct but part of the same larger register, for example `al` and
`ah`.

2 years agoMerge commit '57b3c4b90f4346b3990c1be387c3b3ca7b78412c' into clippyup
flip1995 [Thu, 10 Feb 2022 17:40:06 +0000 (18:40 +0100)]
Merge commit '57b3c4b90f4346b3990c1be387c3b3ca7b78412c' into clippyup

2 years agoUnconditionally update symbols
bjorn3 [Thu, 10 Feb 2022 17:27:18 +0000 (18:27 +0100)]
Unconditionally update symbols

All paths to an ArchiveBuilder::build call update_symbols first.

2 years agoRemove unnecessary update_symbols call
bjorn3 [Thu, 10 Feb 2022 17:18:38 +0000 (18:18 +0100)]
Remove unnecessary update_symbols call

For cg_llvm update_symbols merely sets a flag, so changing the position
or removing an additional call doesn't have any effect.

2 years agoAuto merge of #8409 - flip1995:rustup, r=flip1995
bors [Thu, 10 Feb 2022 17:14:39 +0000 (17:14 +0000)]
Auto merge of #8409 - flip1995:rustup, r=flip1995

Rustup

r? `@ghost`

changelog: none

2 years agoBump nightly version -> 2022-02-10
flip1995 [Thu, 10 Feb 2022 17:11:49 +0000 (18:11 +0100)]
Bump nightly version -> 2022-02-10

2 years agoMerge remote-tracking branch 'upstream/master' into rustup
flip1995 [Thu, 10 Feb 2022 17:11:27 +0000 (18:11 +0100)]
Merge remote-tracking branch 'upstream/master' into rustup

2 years agoFix ICE if no trait assoc const eq
kadmin [Thu, 10 Feb 2022 16:00:54 +0000 (16:00 +0000)]
Fix ICE if no trait assoc const eq

2 years agoUpdate rls
Eric Huss [Thu, 10 Feb 2022 15:47:01 +0000 (07:47 -0800)]
Update rls

2 years agoUpdate stdarch submodule
Adam Gemmell [Thu, 10 Feb 2022 15:14:45 +0000 (15:14 +0000)]
Update stdarch submodule

2 years agoMove `is_aarch64_feature_detected!` to `simd_aarch64` feature and stabilise
Adam Gemmell [Thu, 10 Feb 2022 13:06:32 +0000 (13:06 +0000)]
Move `is_aarch64_feature_detected!` to `simd_aarch64` feature and stabilise

2 years agoSplit PAuth target feature
Adam Gemmell [Mon, 31 Jan 2022 13:04:27 +0000 (13:04 +0000)]
Split PAuth target feature

2 years agoRename to `InvalidFilename`
Yuki Okushi [Thu, 10 Feb 2022 14:49:27 +0000 (23:49 +0900)]
Rename to `InvalidFilename`

2 years agoFix description of FilenameInvalid
Josh Triplett [Mon, 31 Jan 2022 17:17:34 +0000 (09:17 -0800)]
Fix description of FilenameInvalid

Co-authored-by: Mara Bos <m-ou.se@m-ou.se>
2 years agoMap `ERROR_INVALID_NAME` to `FilenameInvalid`
Yuki Okushi [Mon, 31 Jan 2022 08:28:05 +0000 (17:28 +0900)]
Map `ERROR_INVALID_NAME` to `FilenameInvalid`

2 years agoRename `FilenameTooLong` to `FilenameInvalid`
Yuki Okushi [Mon, 31 Jan 2022 08:24:10 +0000 (17:24 +0900)]
Rename `FilenameTooLong` to `FilenameInvalid`

2 years agowindows: Map `ERROR_INVALID_NAME` as `InvalidInput`
Yuki Okushi [Tue, 16 Nov 2021 18:18:15 +0000 (03:18 +0900)]
windows: Map `ERROR_INVALID_NAME` as `InvalidInput`

2 years agoAuto merge of #93854 - matthiaskrgr:rollup-bh2a85j, r=matthiaskrgr
bors [Thu, 10 Feb 2022 12:31:51 +0000 (12:31 +0000)]
Auto merge of #93854 - matthiaskrgr:rollup-bh2a85j, r=matthiaskrgr

Rollup of 7 pull requests

Successful merges:

 - #92670 (add kernel target for RustyHermit)
 - #93756 (Support custom options for LLVM build)
 - #93802 (fix oversight in the `min_const_generics` checks)
 - #93808 (Remove first headings indent)
 - #93824 (Stabilize cfg_target_has_atomic)
 - #93830 (Refactor sidebar printing code)
 - #93843 (kmc-solid: Fix wait queue manipulation errors in the `Condvar` implementation)

Failed merges:

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

2 years agoRemove support for multi-query search
Guillaume Gomez [Thu, 10 Feb 2022 10:39:35 +0000 (11:39 +0100)]
Remove support for multi-query search

2 years agoRemove further usage of `&hir::Map`
Frank Steffahn [Thu, 10 Feb 2022 12:04:59 +0000 (13:04 +0100)]
Remove further usage of `&hir::Map`

2 years agoRollup merge of #93843 - solid-rs:fix-kmc-solid-condvar, r=m-ou-se
Matthias Krüger [Thu, 10 Feb 2022 11:10:02 +0000 (12:10 +0100)]
Rollup merge of #93843 - solid-rs:fix-kmc-solid-condvar, r=m-ou-se

kmc-solid: Fix wait queue manipulation errors in the `Condvar` implementation

This PR fixes a number of bugs in the `Condvar` wait queue implementation used by the [`*-kmc-solid_*`](https://doc.rust-lang.org/nightly/rustc/platform-support/kmc-solid.html) Tier 3 targets. These bugs can occur when there are multiple threads waiting on the same `Condvar` and sometimes manifest as an `unwrap` failure.

2 years agoRollup merge of #93830 - camelid:cleanup-section-code, r=GuillaumeGomez
Matthias Krüger [Thu, 10 Feb 2022 11:10:01 +0000 (12:10 +0100)]
Rollup merge of #93830 - camelid:cleanup-section-code, r=GuillaumeGomez

Refactor sidebar printing code

This is the refactoring parts of #92660, plus the trait aliases capitalization
consistency fix. I think this will be necessary for #92658.

r? `@GuillaumeGomez`

2 years agoRollup merge of #93824 - Amanieu:stable_cfg_target_has_atomic, r=davidtwco
Matthias Krüger [Thu, 10 Feb 2022 11:10:00 +0000 (12:10 +0100)]
Rollup merge of #93824 - Amanieu:stable_cfg_target_has_atomic, r=davidtwco

Stabilize cfg_target_has_atomic

`target_has_atomic_equal_alignment` is now tracked separately in #93822.

Closes #32976

2 years agoRollup merge of #93808 - GuillaumeGomez:headings-indent, r=jsha
Matthias Krüger [Thu, 10 Feb 2022 11:09:59 +0000 (12:09 +0100)]
Rollup merge of #93808 - GuillaumeGomez:headings-indent, r=jsha

Remove first headings indent

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

I removed the anchors displayed on hover because the cursor changes when you hover them in any case, removing the need for the indent altogether.

[Demo](https://rustdoc.crud.net/imperio/headings-indent/std/index.html).

Screenshot of the result:

![Screenshot from 2022-02-09 14-46-12](https://user-images.githubusercontent.com/3050060/153213824-74ef0b62-4f2b-4816-8912-6f2f3beacd29.png)

r? `@jsha`

2 years agoRollup merge of #93802 - lcnr:mcg-woops, r=BoxyUwU
Matthias Krüger [Thu, 10 Feb 2022 11:09:58 +0000 (12:09 +0100)]
Rollup merge of #93802 - lcnr:mcg-woops, r=BoxyUwU

fix oversight in the `min_const_generics` checks

r? `@BoxyUwU`

2 years agoRollup merge of #93756 - tmandry:llvm-build-config, r=Mark-Simulacrum
Matthias Krüger [Thu, 10 Feb 2022 11:09:56 +0000 (12:09 +0100)]
Rollup merge of #93756 - tmandry:llvm-build-config, r=Mark-Simulacrum

Support custom options for LLVM build

The LLVM build has a lot of options that rustbuild doesn't need to know about. We should allow the user to customize the LLVM build directly.

Here are some [example customizations][recipe] we'd like to do.

[recipe]: https://fuchsia.googlesource.com/infra/recipes/+/90105e5e4e37b0441c8dde538df54a55f79b3d22/recipes/contrib/clang_toolchain.py#579

2 years agoRollup merge of #92670 - hermitcore:kernel, r=davidtwco
Matthias Krüger [Thu, 10 Feb 2022 11:09:55 +0000 (12:09 +0100)]
Rollup merge of #92670 - hermitcore:kernel, r=davidtwco

add kernel target for RustyHermit

Currently, we are thinking to use *-unknown-none targets instead to define for every platform our own one (see hermitcore/rusty-hermit#197). However, the current target aarch64-unknown-none-softfloat doesn't support dynamic relocation. Our RustyHermit project uses this feature and consequently we define a new target aarch64-unknown-hermitkernel to support it.

> A tier 3 target must have a designated developer or developers (the "target maintainers") on record to be CCed when issues arise regarding the target. (The mechanism to track and CC such developers may evolve over time.)

I would be willing to be a target maintainer, though I would appreciate if others volunteered to help with that as well.

> Targets must use naming consistent with any existing targets; for instance, a target for the same CPU or OS as an existing Rust target should use the same name for that CPU or OS. Targets should normally use the same names and naming conventions as used elsewhere in the broader ecosystem beyond Rust (such as in other toolchains), unless they have a very good reason to diverge. Changing the name of a target can be highly disruptive, especially once the target reaches a higher tier, so getting the name right is important even for a tier 3 target.

Uses the same naming as the LLVM target, and the same convention as many other kernel targets (e.g. `x86_64_unknown_none_linuxkernel`). In contrast to the bare-metal target for the aarch64 architecture, the unikernel requires dynamic relocation.

> Target names should not introduce undue confusion or ambiguity unless absolutely necessary to maintain ecosystem compatibility. For example, if the name of the target makes people extremely likely to form incorrect beliefs about what it targets, the name should be changed or augmented to disambiguate it.

I don't believe there is any ambiguity here. It use the same convention on x86_64 architecture.

> Tier 3 targets may have unusual requirements to build or use, but must not create legal issues or impose onerous legal terms for the Rust project or for Rust developers or users.

I don't see any legal issues here.

> The target must not introduce license incompatibilities.
Anything added to the Rust repository must be under the standard Rust license (MIT OR Apache-2.0).
The target must not cause the Rust tools or libraries built for any other host (even when supporting cross-compilation to the target) to depend on any new dependency less permissive than the Rust licensing policy. This applies whether the dependency is a Rust crate that would require adding new license exceptions (as specified by the tidy tool in the rust-lang/rust repository), or whether the dependency is a native library or binary. In other words, the introduction of the target must not cause a user installing or running a version of Rust or the Rust tools to be subject to any new license requirements.
If the target supports building host tools (such as rustc or cargo), those host tools must not depend on proprietary (non-FOSS) libraries, other than ordinary runtime libraries supplied by the platform and commonly used by other binaries built for the target. For instance, rustc built for the target may depend on a common proprietary C runtime library or console output library, but must not depend on a proprietary code generation library or code optimization library. Rust's license permits such combinations, but the Rust project has no interest in maintaining such combinations within the scope of Rust itself, even at tier 3.
Targets should not require proprietary (non-FOSS) components to link a functional binary or library.
"onerous" here is an intentionally subjective term. At a minimum, "onerous" legal/licensing terms include but are not limited to: non-disclosure requirements, non-compete requirements, contributor license agreements (CLAs) or equivalent, "non-commercial"/"research-only"/etc terms, requirements conditional on the employer or employment of any particular Rust developers, revocable terms, any requirements that create liability for the Rust project or its developers or users, or any requirements that adversely affect the livelihood or prospects of the Rust project or its developers or users.

I see no issues with any of the above.

> Neither this policy nor any decisions made regarding targets shall create any binding agreement or estoppel by any party. If any member of an approving Rust team serves as one of the maintainers of a target, or has any legal or employment requirement (explicit or implicit) that might affect their decisions regarding a target, they must recuse themselves from any approval decisions regarding the target's tier status, though they may otherwise participate in discussions.
This requirement does not prevent part or all of this policy from being cited in an explicit contract or work agreement (e.g. to implement or maintain support for a target). This requirement exists to ensure that a developer or team responsible for reviewing and approving a target does not face any legal threats or obligations that would prevent them from freely exercising their judgment in such approval, even if such judgment involves subjective matters or goes beyond the letter of these requirements.

Only relevant to those making approval decisions.

> Tier 3 targets should attempt to implement as much of the standard libraries as possible and appropriate (core for most targets, alloc for targets that can support dynamic memory allocation, std for targets with an operating system or equivalent layer of system-provided functionality), but may leave some code unimplemented (either unavailable or stubbed out as appropriate), whether because the target makes it impossible to implement or challenging to implement. The authors of pull requests are not obligated to avoid calling any portions of the standard library on the basis of a tier 3 target not implementing those portions.

`core` and `alloc` can be used. For `std` exists already the target `aarch64_unknown_hermit`, which enables FPU support.

> The target must provide documentation for the Rust community explaining how to build for the target, using cross-compilation if possible. If the target supports running tests (even if they do not pass), the documentation must explain how to run tests for the target, using emulation if possible or dedicated hardware if necessary.

Use `--target=aarch64_unknown_hermitkernel` option to cross compile. The target does currently not support running tests.

> Tier 3 targets must not impose burden on the authors of pull requests, or other developers in the community, to maintain the target. In particular, do not post comments (automated or manual) on a PR that derail or suggest a block on the PR based on a tier 3 target. Do not send automated messages or notifications (via any medium, including via `@)` to a PR author or others involved with a PR regarding a tier 3 target, unless they have opted into such messages.
Backlinks such as those generated by the issue/PR tracker when linking to an issue or PR are not considered a violation of this policy, within reason. However, such messages (even on a separate repository) must not generate notifications to anyone involved with a PR who has not requested such notifications.

I don't foresee this being a problem.

> Patches adding or updating tier 3 targets must not break any existing tier 2 or tier 1 target, and must not knowingly break another tier 3 target without approval of either the compiler team or the maintainers of the other tier 3 target.
In particular, this may come up when working on closely related targets, such as variations of the same architecture with different features. Avoid introducing unconditional uses of features that another variation of the target may not have; use conditional compilation or runtime detection, as appropriate, to let each target run code supported by that target.

No other targets should be affected by the pull request.

2 years agoMake all hir::Map methods consistently by-value
Frank Steffahn [Thu, 10 Feb 2022 10:42:02 +0000 (11:42 +0100)]
Make all hir::Map methods consistently by-value

(hir::Map only consists of a single reference anyways)

2 years agoAuto merge of #93511 - cjgillot:query-copy, r=oli-obk
bors [Thu, 10 Feb 2022 09:37:07 +0000 (09:37 +0000)]
Auto merge of #93511 - cjgillot:query-copy, r=oli-obk

Ensure that queries only return Copy types.

This should pervent the perf footgun of returning a result with an expensive `Clone` impl (like a `Vec` of a hash map).

I went for the stupid solution of allocating on an arena everything that was not `Copy`. Some query results could be made Copy easily, but I did not really investigate.

2 years agofix min_const_generics oversight
lcnr [Wed, 9 Feb 2022 11:29:43 +0000 (12:29 +0100)]
fix min_const_generics oversight

2 years agokmc-solid: Wait queue should be sorted in the descending order of task priorities
Tomoaki Kawada [Thu, 10 Feb 2022 02:26:46 +0000 (11:26 +0900)]
kmc-solid: Wait queue should be sorted in the descending order of task priorities

In ITRON, lower priority values mean higher priorities.

2 years agoAuto merge of #93836 - matthiaskrgr:rollup-d1ssiwl, r=matthiaskrgr
bors [Thu, 10 Feb 2022 02:27:43 +0000 (02:27 +0000)]
Auto merge of #93836 - matthiaskrgr:rollup-d1ssiwl, r=matthiaskrgr

Rollup of 6 pull requests

Successful merges:

 - #91443 (Better suggestions when user tries to collect into an unsized `[_]`)
 - #91504 (`#[used(linker)]` attribute)
 - #93503 (debuginfo: Fix DW_AT_containing_type vtable debuginfo regression)
 - #93753 (Complete removal of #[main] attribute from compiler)
 - #93799 (Fix typo in `std::fmt` docs)
 - #93813 (Make a few cleanup MIR passes public)

Failed merges:

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

2 years agokmc-solid: Fix wait queue manipulation errors in the `Condvar` implementation
Tomoaki Kawada [Wed, 9 Feb 2022 05:34:27 +0000 (14:34 +0900)]
kmc-solid: Fix wait queue manipulation errors in the `Condvar` implementation

2 years agoAdd llvm.build-config option
Tyler Mandry [Tue, 8 Feb 2022 01:56:53 +0000 (01:56 +0000)]
Add llvm.build-config option

2 years agoRollup merge of #93813 - xldenis:public-mir-passes, r=wesleywiser
Matthias Krüger [Wed, 9 Feb 2022 22:29:59 +0000 (23:29 +0100)]
Rollup merge of #93813 - xldenis:public-mir-passes, r=wesleywiser

Make a few cleanup MIR passes public

Zulip Discussion: https://rust-lang.zulipchat.com/#narrow/stream/189540-t-compiler.2Fwg-mir-opt/topic/Making.20passes.20public.20again

This makes a few passes which used to be public, public again. I'd like to use these to clean up MIR code for my external rustc driver. The other option would be to make them all public, but I don't know if that's warranted / useful.

r? `@wesleywiser`

2 years agoRollup merge of #93799 - wooorm:patch-1, r=dtolnay
Matthias Krüger [Wed, 9 Feb 2022 22:29:58 +0000 (23:29 +0100)]
Rollup merge of #93799 - wooorm:patch-1, r=dtolnay

Fix typo in `std::fmt` docs

Hey!

Reading the docs (https://doc.rust-lang.org/std/fmt/#named-parameters), this seems like a typo?

The docs here also seem to mix “named argument” and “named parameter”? Intentional? Mistake?

2 years agoRollup merge of #93753 - jeremyBanks:main-conflict, r=petrochenkov
Matthias Krüger [Wed, 9 Feb 2022 22:29:57 +0000 (23:29 +0100)]
Rollup merge of #93753 - jeremyBanks:main-conflict, r=petrochenkov

Complete removal of #[main] attribute from compiler

resolves #93786

---

The `#[main]` attribute was mostly removed from the language in #84217, but not completely. It is still recognized as a builtin attribute by the compiler, but it has no effect. However, this no-op attribute is no longer gated by `#[feature(main)]` (which no longer exists), so it's possible to include it in code *on stable* without any errors, which seems unintentional. For example, the following code is accepted ([playground link](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%23%5Bmain%5D%0Afn%20main()%20%7B%0A%20%20%20%20println!(%22hello%20world%22)%3B%0A%7D%0A)).

```rust
#[main]
fn main() {
    println!("hello world");
}
```

Aside from that oddity, the existence of this attribute causes code like the following to fail ([playground link](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=use%20tokio%3A%3Amain%3B%0A%0A%23%5Bmain%5D%0Afn%20main()%20%7B%0A%20%20%20%20println!(%22hello%20world%22)%3B%0A%7D%0A)). According https://github.com/rust-lang/rust/pull/84062#issuecomment-825038275, the removal of `#[main]` was expected to eliminate this conflict (previously reported as #62127).

```rust
use tokio::main;

#[main]
fn main() {
    println!("hello world");
}
```

```
error[E0659]: `main` is ambiguous
 --> src/main.rs:3:3
  |
3 | #[main]
  |   ^^^^ ambiguous name
  |
  = note: ambiguous because of a name conflict with a builtin attribute
  = note: `main` could refer to a built-in attribute
```

[This error message can be confusing](https://stackoverflow.com/q/71024443/1114), as the mostly-removed `#[main]` attribute is not mentioned in any documentation.

Since the current availability of `#[main]` on stable seems unintentional, and to needlessly block use of the `main` identifier in the attribute namespace, this PR finishes removing the `#[main]` attribute as described in https://github.com/rust-lang/rust/issues/29634#issuecomment-274951753 by deleting it from `builtin_attrs.rs`, and adds two test cases to ensure that the attribute is no longer accepted and no longer conflicts with other attributes imported as `main`.

2 years agoRollup merge of #93503 - michaelwoerister:fix-vtable-holder-debuginfo-regression...
Matthias Krüger [Wed, 9 Feb 2022 22:29:56 +0000 (23:29 +0100)]
Rollup merge of #93503 - michaelwoerister:fix-vtable-holder-debuginfo-regression, r=wesleywiser

debuginfo: Fix DW_AT_containing_type vtable debuginfo regression

This PR brings back the `DW_AT_containing_type` attribute for vtables after it has accidentally been removed in #89597.

It also implements a more accurate description of vtables. Instead of describing them as an array of void pointers, the compiler will now emit a struct type description with a field for each entry of the vtable.

r? ``@wesleywiser``

This PR should fix issue https://github.com/rust-lang/rust/issues/93164.
~~The PR is blocked on https://github.com/rust-lang/rust/pull/93154 because both of them modify the `codegen/debug-vtable.rs` test case.~~

2 years agoRollup merge of #91504 - cynecx:used_retain, r=nikic
Matthias Krüger [Wed, 9 Feb 2022 22:29:56 +0000 (23:29 +0100)]
Rollup merge of #91504 - cynecx:used_retain, r=nikic

`#[used(linker)]` attribute

See https://github.com/dtolnay/linkme/issues/41#issuecomment-927255631.

2 years agoRollup merge of #91443 - compiler-errors:bad_collect_into_slice, r=wesleywiser
Matthias Krüger [Wed, 9 Feb 2022 22:29:55 +0000 (23:29 +0100)]
Rollup merge of #91443 - compiler-errors:bad_collect_into_slice, r=wesleywiser

Better suggestions when user tries to collect into an unsized `[_]`

1. Extend the predicate on `rustc_on_unimplemented` to support substitutions like note, label, etc (i.e. treat it as a `OnUnimplementedFormatString`) so we can have slightly more general `rustc_on_unimplemented` special-cases.
2. Add a `rustc_on_unimplemented` if we fail on `FromIterator<A> for [A]` which happens when we don't explicitly collect into a `vec<A>`, but then pass the return from a `.collect` call into something that takes a slice.

Fixes #91423

2 years agoTitle-case trait aliases section for consistency
Noah Lev [Fri, 7 Jan 2022 23:30:50 +0000 (15:30 -0800)]
Title-case trait aliases section for consistency

2 years agoRefactor sidebar printing code
Noah Lev [Sat, 8 Jan 2022 00:30:01 +0000 (16:30 -0800)]
Refactor sidebar printing code

The new code is much simpler and easier to understand. In fact, the old
code actually had a subtle bug where it excluded a few item types,
including trait aliases, from the sidebar, even though they are rendered
on the page itself! Now, all sections should show up in the sidebar.

2 years agoDeduplicate item sections
Noah Lev [Sat, 8 Jan 2022 00:20:53 +0000 (16:20 -0800)]
Deduplicate item sections

2 years agorustdoc: Create enum for sections holding items
Noah Lev [Sat, 8 Jan 2022 00:12:11 +0000 (16:12 -0800)]
rustdoc: Create enum for sections holding items

2 years agoAvoid clone.
Camille GILLOT [Tue, 1 Feb 2022 17:52:22 +0000 (18:52 +0100)]
Avoid clone.

2 years agoExplain &Arc.
Camille GILLOT [Tue, 1 Feb 2022 17:46:04 +0000 (18:46 +0100)]
Explain &Arc.

2 years agoMake FnAbiError Copy.
Camille GILLOT [Tue, 1 Feb 2022 17:44:45 +0000 (18:44 +0100)]
Make FnAbiError Copy.

2 years agoUse a slice for object_lifetime_defaults.
Camille GILLOT [Tue, 1 Feb 2022 17:28:24 +0000 (18:28 +0100)]
Use a slice for object_lifetime_defaults.

2 years agoUse a slice in DefIdForest.
Camille GILLOT [Tue, 1 Feb 2022 17:27:49 +0000 (18:27 +0100)]
Use a slice in DefIdForest.

2 years agoEnsure that queries only return Copy types.
Camille GILLOT [Mon, 31 Jan 2022 18:55:34 +0000 (19:55 +0100)]
Ensure that queries only return Copy types.

2 years agoAuto merge of #93741 - Mark-Simulacrum:global-job-id, r=cjgillot
bors [Wed, 9 Feb 2022 18:54:30 +0000 (18:54 +0000)]
Auto merge of #93741 - Mark-Simulacrum:global-job-id, r=cjgillot

Refactor query system to maintain a global job id counter

This replaces the per-shard counters with a single global counter, simplifying
the JobId struct down to just a u64 and removing the need to pipe a DepKind
generic through a bunch of code. The performance implications on non-parallel
compilers are likely minimal (this switches to `Cell<u64>` as the backing
storage over a `u64`, but the latter was already inside a `RefCell` so it's not
really a significance divergence). On parallel compilers, the cost of a single
global u64 counter may be more significant: it adds a serialization point in
theory. On the other hand, we can imagine changing the counter to have a
thread-local component if it becomes worrisome or some similar structure.

The new design is sufficiently simpler that it warrants the potential for slight
changes down the line if/when we get parallel compilation to be more of a
default.

A u64 counter, instead of u32 (the old per-shard width), is chosen to avoid
possibly overflowing it and causing problems; it is effectively impossible that
we would overflow a u64 counter in this context.

2 years agoStabilize cfg_target_has_atomic
Amanieu d'Antras [Wed, 9 Feb 2022 18:14:35 +0000 (18:14 +0000)]
Stabilize cfg_target_has_atomic

Closes #32976

2 years agoSuggest collecting into `Vec<_>` when collecting into `[_]`
Michael Goulet [Thu, 2 Dec 2021 02:51:27 +0000 (18:51 -0800)]
Suggest collecting into `Vec<_>` when collecting into `[_]`

2 years agoAllow substitutions in `rustc_on_unimplemented` predicate
Michael Goulet [Thu, 2 Dec 2021 02:50:46 +0000 (18:50 -0800)]
Allow substitutions in `rustc_on_unimplemented` predicate