]> git.lizzy.rs Git - rust.git/log
rust.git
22 months agoRollup merge of #95376 - WaffleLapkin:drain_keep_rest, r=dtolnay
Dylan DPC [Tue, 30 Aug 2022 05:56:47 +0000 (11:26 +0530)]
Rollup merge of #95376 - WaffleLapkin:drain_keep_rest, r=dtolnay

Add `vec::Drain{,Filter}::keep_rest`

This PR adds `keep_rest` methods to `vec::Drain` and `vec::DrainFilter` under `drain_keep_rest` feature gate:
```rust
// mod alloc::vec

impl<T, A: Allocator> Drain<'_, T, A> {
    pub fn keep_rest(self);
}

impl<T, F, A: Allocator> DrainFilter<'_, T, F, A>
where
    F: FnMut(&mut T) -> bool,
{
    pub fn keep_rest(self);
}
```

Both these methods cancel draining of elements that were not yet yielded from the iterators. While this needs more testing & documentation, I want at least start the discussion. This may be a potential way out of the "should `DrainFilter` exhaust itself on drop?" argument.

22 months agoAuto merge of #101167 - matthiaskrgr:rollup-yt3jdmp, r=matthiaskrgr
bors [Mon, 29 Aug 2022 22:49:04 +0000 (22:49 +0000)]
Auto merge of #101167 - matthiaskrgr:rollup-yt3jdmp, r=matthiaskrgr

Rollup of 7 pull requests

Successful merges:

 - #100898 (Do not report too many expr field candidates)
 - #101056 (Add the syntax of references to their documentation summary.)
 - #101106 (Rustdoc-Json: Retain Stripped Modules when they are imported, not when they have items)
 - #101131 (CTFE: exposing pointers and calling extern fn is just impossible)
 - #101141 (Simplify `get_trait_ref` fn used for `virtual_function_elimination`)
 - #101146 (Various changes to logging of borrowck-related code)
 - #101156 (Remove `Sync` requirement from lint pass objects)

Failed merges:

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

22 months agoRollup merge of #101156 - Jarcho:remove_sync_lint_pass, r=compiler-errors
Matthias Krüger [Mon, 29 Aug 2022 19:13:00 +0000 (21:13 +0200)]
Rollup merge of #101156 - Jarcho:remove_sync_lint_pass, r=compiler-errors

Remove `Sync` requirement from lint pass objects

This is blocking the clippy sync (#101140). One of the lint passes contains a `Cell` in order to make lifetimes work. It could be worked around, but this is the easier change to make if there are no objections.

Rational for removing the requirement
* All lint pass methods take `&mut self` arguments.
* Many passes depend on running is visitor order.
* Lint passes are created on demand so they're only ever stored in a local.
* `Send` is enough to lint different passes in parallel.

`LintStore` remains `Sync` with this. The constructor functions it contains still maintain their `Sync` requirement.

r? rust-lang/compiler

22 months agoRollup merge of #101146 - jackh726:borrowck-logging, r=compiler-errors
Matthias Krüger [Mon, 29 Aug 2022 19:12:59 +0000 (21:12 +0200)]
Rollup merge of #101146 - jackh726:borrowck-logging, r=compiler-errors

Various changes to logging of borrowck-related code

Cleanups found when doing other changes

r? `@compiler-errors`

22 months agoRollup merge of #101141 - compiler-errors:get-trait-ref-is-a-misleading-name, r=oli-obk
Matthias Krüger [Mon, 29 Aug 2022 19:12:58 +0000 (21:12 +0200)]
Rollup merge of #101141 - compiler-errors:get-trait-ref-is-a-misleading-name, r=oli-obk

Simplify `get_trait_ref` fn used for `virtual_function_elimination`

1. The name `get_trait_ref` is misleading, so I renamed it to something more like `expect_...` because it ICEs if used incorrectly.
2. No need to manually go through the existential trait refs, we already have `.principal()` for that.

22 months agoRollup merge of #101131 - RalfJung:ctfe-no-needs-rfc, r=oli-obk
Matthias Krüger [Mon, 29 Aug 2022 19:12:57 +0000 (21:12 +0200)]
Rollup merge of #101131 - RalfJung:ctfe-no-needs-rfc, r=oli-obk

CTFE: exposing pointers and calling extern fn is just impossible

The remaining "needs RFC" errors are just needlessly confusing, I think -- time to get rid of that error variant. They are anyway only reachable with miri-unleashed (if at all).

r? `@oli-obk`

22 months agoRollup merge of #101106 - aDotInTheVoid:rdj-stripped-mod, r=GuillaumeGomez
Matthias Krüger [Mon, 29 Aug 2022 19:12:56 +0000 (21:12 +0200)]
Rollup merge of #101106 - aDotInTheVoid:rdj-stripped-mod, r=GuillaumeGomez

Rustdoc-Json: Retain Stripped Modules when they are imported, not when they have items

Fixes #101103
Fixes #100973

r? `@GuillaumeGomez`

22 months agoRollup merge of #101056 - kpreid:prim-doc, r=JohnTitor
Matthias Krüger [Mon, 29 Aug 2022 19:12:55 +0000 (21:12 +0200)]
Rollup merge of #101056 - kpreid:prim-doc, r=JohnTitor

Add the syntax of references to their documentation summary.

Without this change, in <https://doc.rust-lang.org/1.63.0/std/#primitives>, `reference` is the only entry in that list which does not contain the syntax by which the type is named in source code. With this change, it contains them, in roughly the same way as the `pointer` entry does.

22 months agoRollup merge of #100898 - compiler-errors:too-many-expr-fields, r=spastorino
Matthias Krüger [Mon, 29 Aug 2022 19:12:54 +0000 (21:12 +0200)]
Rollup merge of #100898 - compiler-errors:too-many-expr-fields, r=spastorino

Do not report too many expr field candidates

When considering "this expressions' field has a {field/method}" suggestions:
1. Don't report methods that are out of scope
2. Use `span_suggestions` instead of reporting each field candidate, which caps the number of suggestions to 4
4. Blacklist some common traits like `Clone` and `Deref`

Fixes #100894

22 months agoAuto merge of #101152 - Dylan-DPC:rollup-v4iw8ux, r=Dylan-DPC
bors [Mon, 29 Aug 2022 18:56:59 +0000 (18:56 +0000)]
Auto merge of #101152 - Dylan-DPC:rollup-v4iw8ux, r=Dylan-DPC

Rollup of 8 pull requests

Successful merges:

 - #98304 (Add MaybeUninit memset test)
 - #98801 (Add a `File::create_new` constructor)
 - #99821 (Remove separate indexing of early-bound regions)
 - #100239 (remove an ineffective check in const_prop)
 - #100337 (Stabilize `std::io::read_to_string`)
 - #100819 (Make use of `[wrapping_]byte_{add,sub}`)
 - #100934 (Remove a panicking branch from `fmt::builders::PadAdapter`)
 - #101000 (Separate CountIsStar from CountIsParam in rustc_parse_format.)

Failed merges:

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

22 months agoAuto merge of #101147 - weihanglo:update-cargo, r=Mark-Simulacrum
bors [Mon, 29 Aug 2022 16:04:11 +0000 (16:04 +0000)]
Auto merge of #101147 - weihanglo:update-cargo, r=Mark-Simulacrum

Update cargo

5 commits in 6da726708a4406f31f996d813790818dce837161..4ed54cecce3ce9ab6ff058781f4c8a500ee6b8b5
2022-08-23 21:39:56 +0000 to 2022-08-27 18:41:39 +0000
- doc: pause, for readability (rust-lang/cargo#11027)
- Bump git2 to 0.15 and libgit2-sys to 0.14 (rust-lang/cargo#11004)
- Fix typo (rust-lang/cargo#11025)
- Update cargo-toml-vs-cargo-lock.md (rust-lang/cargo#11021)
- Apply GitHub fast path even for partial hashes (rust-lang/cargo#10807)

22 months agoVarious changes to logging of borrowck-related code
Jack Huey [Mon, 29 Aug 2022 06:00:08 +0000 (02:00 -0400)]
Various changes to logging of borrowck-related code

22 months agoRemove `Sync` requirement from lint pass objects as they are created on demand
Jason Newcomb [Mon, 29 Aug 2022 14:00:22 +0000 (10:00 -0400)]
Remove `Sync` requirement from lint pass objects as they are created on demand

22 months agoRollup merge of #101000 - m-ou-se:count-is-star, r=nagisa
Dylan DPC [Mon, 29 Aug 2022 11:19:45 +0000 (16:49 +0530)]
Rollup merge of #101000 - m-ou-se:count-is-star, r=nagisa

Separate CountIsStar from CountIsParam in rustc_parse_format.

`rustc_parse_format`'s parser would result in the exact same output for `{:.*}` and `{:.0$}`, making it hard for diagnostics to handle these cases properly.

This splits those cases by adding a new `CountIsStar` enum variant.

This fixes #100995

Prerequisite for https://github.com/rust-lang/rust/pull/100996

22 months agoRollup merge of #100934 - a1phyr:improve_fmt_PadAdapter, r=Mark-Simulacrum
Dylan DPC [Mon, 29 Aug 2022 11:19:44 +0000 (16:49 +0530)]
Rollup merge of #100934 - a1phyr:improve_fmt_PadAdapter, r=Mark-Simulacrum

Remove a panicking branch from `fmt::builders::PadAdapter`

22 months agoRollup merge of #100819 - WaffleLapkin:use_ptr_byte_methods, r=scottmcm
Dylan DPC [Mon, 29 Aug 2022 11:19:43 +0000 (16:49 +0530)]
Rollup merge of #100819 - WaffleLapkin:use_ptr_byte_methods, r=scottmcm

Make use of `[wrapping_]byte_{add,sub}`

These new methods trivially replace old `.cast().wrapping_offset().cast()` & similar code.
Note that [`arith_offset`](https://doc.rust-lang.org/std/intrinsics/fn.arith_offset.html) and `wrapping_offset` are the same thing.

r? ``@scottmcm``

_split off from #100746_

22 months agoRollup merge of #100337 - camelid:stabilize-io_read_to_string, r=JohnTitor
Dylan DPC [Mon, 29 Aug 2022 11:19:42 +0000 (16:49 +0530)]
Rollup merge of #100337 - camelid:stabilize-io_read_to_string, r=JohnTitor

Stabilize `std::io::read_to_string`

Closes #80218. :tada:

This PR stabilizes the `std::io::read_to_string` function, with the following public API:

```rust
pub fn read_to_string<R: Read>(reader: R) -> Result<String>;
```

It's analogous to `std::fs::read_to_string` for files, but it works on anything that implements `io::Read`, including `io::stdin()`.

See the tracking issue (#80218) or documentation for details.

22 months agoRollup merge of #100239 - RalfJung:const-prop-uninit, r=oli-obk
Dylan DPC [Mon, 29 Aug 2022 11:19:40 +0000 (16:49 +0530)]
Rollup merge of #100239 - RalfJung:const-prop-uninit, r=oli-obk

remove an ineffective check in const_prop

Based on https://github.com/rust-lang/rust/pull/100043, only the last two commits are new.

ConstProp has a special check when reading from a local that prevents reading uninit locals. However, if that local flows into `force_allocation`, then no check fires and evaluation proceeds. So this check is not really effective at preventing accesses to uninit locals.

With https://github.com/rust-lang/rust/pull/100043, `read_immediate` and friends always fail when reading uninit locals, so I don't see why ConstProp would need a separate check. Thus I propose we remove it. This is needed to be able to do https://github.com/rust-lang/rust/pull/100085.

22 months agoRollup merge of #99821 - cjgillot:ast-lifetimes-2, r=compiler-errors
Dylan DPC [Mon, 29 Aug 2022 11:19:39 +0000 (16:49 +0530)]
Rollup merge of #99821 - cjgillot:ast-lifetimes-2, r=compiler-errors

Remove separate indexing of early-bound regions

~Based on https://github.com/rust-lang/rust/pull/99728.~

This PR copies some modifications from https://github.com/rust-lang/rust/pull/97839 around object lifetime defaults.
These modifications allow to stop counting generic parameters during lifetime resolution, and rely on the indexing given by `rustc_typeck::collect`.

22 months agoRollup merge of #98801 - joshtriplett:file-create-new, r=thomcc
Dylan DPC [Mon, 29 Aug 2022 11:19:38 +0000 (16:49 +0530)]
Rollup merge of #98801 - joshtriplett:file-create-new, r=thomcc

Add a `File::create_new` constructor

We have `File::create` for creating a file or opening an existing file,
but the secure way to guarantee creating a new file requires a longhand
invocation via `OpenOptions`.

Add `File::create_new` to handle this case, to make it easier for people
to do secure file creation.

22 months agoRollup merge of #98304 - SUPERCILEX:maybeuninit, r=nikic
Dylan DPC [Mon, 29 Aug 2022 11:19:37 +0000 (16:49 +0530)]
Rollup merge of #98304 - SUPERCILEX:maybeuninit, r=nikic

Add MaybeUninit memset test

Closes #96274

22 months agoAuto merge of #98626 - oli-obk:tracing, r=lcnr
bors [Mon, 29 Aug 2022 11:13:42 +0000 (11:13 +0000)]
Auto merge of #98626 - oli-obk:tracing, r=lcnr

bump tracing version

Bump tracing dependency to 0.1.35 to give us features like printing the return value of functions

22 months agoAuto merge of #100786 - sunshowers:macos-posix-chdir, r=sunshowers
bors [Mon, 29 Aug 2022 07:54:06 +0000 (07:54 +0000)]
Auto merge of #100786 - sunshowers:macos-posix-chdir, r=sunshowers

Use posix_spawn for absolute paths on macOS

Currently, on macOS, Rust never uses the fast posix_spawn path if a
directory change is requested, due to a bug in Apple's libc. However, the
bug is only triggered if the program is a relative path.

This PR makes it so that the fast path continues to work if the program
is an absolute path or a lone filename.

This was an alternative proposed in https://github.com/rust-lang/rust/pull/80537#issue-776674009, and it makes a measurable performance difference in some of my code that spawns thousands of processes.

22 months agoUpdate cargo
Weihang Lo [Mon, 29 Aug 2022 06:15:36 +0000 (07:15 +0100)]
Update cargo

5 commits in 6da726708a4406f31f996d813790818dce837161..4ed54cecce3ce9ab6ff058781f4c8a500ee6b8b5
2022-08-23 21:39:56 +0000 to 2022-08-27 18:41:39 +0000
- doc: pause, for readability (rust-lang/cargo#11027)
- Bump git2 to 0.15 and libgit2-sys to 0.14 (rust-lang/cargo#11004)
- Fix typo (rust-lang/cargo#11025)
- Update cargo-toml-vs-cargo-lock.md (rust-lang/cargo#11021)
- Apply GitHub fast path even for partial hashes (rust-lang/cargo#10807)

22 months agoAuto merge of #101143 - matthiaskrgr:rollup-g8y5k0g, r=matthiaskrgr
bors [Mon, 29 Aug 2022 05:12:53 +0000 (05:12 +0000)]
Auto merge of #101143 - matthiaskrgr:rollup-g8y5k0g, r=matthiaskrgr

Rollup of 9 pull requests

Successful merges:

 - #94890 (Support parsing IP addresses from a byte string)
 - #96334 (socket `set_mark` addition.)
 - #99027 (Replace `Body::basic_blocks()` with field access)
 - #100437 (Improve const mismatch `FulfillmentError`)
 - #100843 (Migrate part of rustc_infer to session diagnostic)
 - #100897 (extra sanity check against consts pointing to mutable memory)
 - #100959 (translations: rename warn_ to warning)
 - #101111 (Use the declaration's SourceInfo for FnEntry retags, not the outermost)
 - #101116 ([rustdoc] Remove Attrs type alias)

Failed merges:

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

22 months agoRollup merge of #101116 - GuillaumeGomez:rm-attrs-ty-alias, r=notriddle
Matthias Krüger [Mon, 29 Aug 2022 04:34:49 +0000 (06:34 +0200)]
Rollup merge of #101116 - GuillaumeGomez:rm-attrs-ty-alias, r=notriddle

[rustdoc] Remove Attrs type alias

When working on https://github.com/rust-lang/rust/pull/101006, I was quite confused because of this type alias as I'm used to having rustdoc types into `clean/types.rs`. Anyway, considering how few uses of it we have, I simply removed it.

r? `````@notriddle`````

22 months agoRollup merge of #101111 - saethlin:better-fnentry-spans, r=RalfJung
Matthias Krüger [Mon, 29 Aug 2022 04:34:48 +0000 (06:34 +0200)]
Rollup merge of #101111 - saethlin:better-fnentry-spans, r=RalfJung

Use the declaration's SourceInfo for FnEntry retags, not the outermost

This addresses a long-standing `// FIXME` in the pass that adds retags.

The changes to Miri's UI tests will look like this:
```
   --> $DIR/aliasing_mut1.rs:LL:CC
    |
 LL | pub fn safe(_x: &mut i32, _y: &mut i32) {}
<   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not granting access to tag <TAG> because incompatible item [Unique for <TAG>] is protected by call ID
>   |                           ^^ not granting access to tag <TAG> because incompatible item [Unique for <TAG>] is protected by call ID
    |
```

r? ````@RalfJung````

22 months agoRollup merge of #100959 - LuisCardosoOliveira:translation-rename-attr-warning, r...
Matthias Krüger [Mon, 29 Aug 2022 04:34:47 +0000 (06:34 +0200)]
Rollup merge of #100959 - LuisCardosoOliveira:translation-rename-attr-warning, r=davidtwco

translations: rename warn_ to warning

## Description

This MR renames the the macro `warn_` to `warning`.

To give a little bit of context, as [explained](https://rust-lang.zulipchat.com/#narrow/stream/336883-i18n/topic/.23100717.20diag.20translation/near/295074146) by ```````@davidtwco``````` in the Zulip channel, `warn_`  was named like that because the keyword `warn` is a built-in attribute and at the time this macro was created the word `warning` was also
taken.

However, it is no longer the case and we can rename `warn_` to `warning`.

22 months agoRollup merge of #100897 - RalfJung:const-not-to-mutable, r=lcnr
Matthias Krüger [Mon, 29 Aug 2022 04:34:46 +0000 (06:34 +0200)]
Rollup merge of #100897 - RalfJung:const-not-to-mutable, r=lcnr

extra sanity check against consts pointing to mutable memory

This should be both unreachable and redundant (since we already ensure that validation only reads from read-only memory, when validating consts), but I feel like we cannot be paranoid enough here, and also if this ever fails it'll be a nicer error than the "cannot read from mutable memory" error.

22 months agoRollup merge of #100843 - IntQuant:issue-100717-infer, r=compiler-errors
Matthias Krüger [Mon, 29 Aug 2022 04:34:45 +0000 (06:34 +0200)]
Rollup merge of #100843 - IntQuant:issue-100717-infer, r=compiler-errors

Migrate part of rustc_infer to session diagnostic

22 months agoRollup merge of #100437 - compiler-errors:better-const-mismatch-err, r=oli-obk
Matthias Krüger [Mon, 29 Aug 2022 04:34:44 +0000 (06:34 +0200)]
Rollup merge of #100437 - compiler-errors:better-const-mismatch-err, r=oli-obk

Improve const mismatch `FulfillmentError`

Fixes #100414

22 months agoRollup merge of #99027 - tmiasko:basic-blocks, r=oli-obk
Matthias Krüger [Mon, 29 Aug 2022 04:34:43 +0000 (06:34 +0200)]
Rollup merge of #99027 - tmiasko:basic-blocks, r=oli-obk

Replace `Body::basic_blocks()` with field access

Since the refactoring in #98930, it is possible to borrow the basic blocks
independently from other parts of MIR by accessing the `basic_blocks` field
directly.

Replace unnecessary `Body::basic_blocks()` method with a direct field access,
which has an additional benefit of borrowing the basic blocks only.

22 months agoRollup merge of #96334 - devnexen:socket_mark, r=dtolnay
Matthias Krüger [Mon, 29 Aug 2022 04:34:42 +0000 (06:34 +0200)]
Rollup merge of #96334 - devnexen:socket_mark, r=dtolnay

socket `set_mark` addition.

to be able to set a marker/id on the socket for network filtering
 (iptables/ipfw here) purpose.

22 months agoRollup merge of #94890 - marmeladema:ip-addr-try-from-bytes, r=joshtriplett
Matthias Krüger [Mon, 29 Aug 2022 04:34:41 +0000 (06:34 +0200)]
Rollup merge of #94890 - marmeladema:ip-addr-try-from-bytes, r=joshtriplett

Support parsing IP addresses from a byte string

Fixes #94821

The goal is to be able to parse addresses from a byte string without requiring to do any utf8 validation. Since internally the parser already works on byte strings, this should be possible and I personally already needed this in the past too.

~~I used the proposed approach from the issue by implementing `TryFrom<&'a [u8]>` for all 6 address types (3 ip address types and 3 socket address types). I believe implementing stable traits for stable types is insta-stable so this will probably need an FCP?~~

Switched to an unstable inherent method approach called `parse_ascii` as requested.

cc ``````@jyn514``````

22 months agoSimplify get_trait_ref a bit
Michael Goulet [Mon, 29 Aug 2022 04:19:14 +0000 (04:19 +0000)]
Simplify get_trait_ref a bit

22 months agoUse posix_spawn for absolute paths on macOS
Rain [Sat, 20 Aug 2022 01:24:21 +0000 (18:24 -0700)]
Use posix_spawn for absolute paths on macOS

Currently, on macOS, Rust never uses the fast posix_spawn path if a
directory change is requested due to a bug in Apple's libc. However, the
bug is only triggered if the program is a relative path.

This PR makes it so that the fast path continues to work if the program
is an absolute path or a lone filename.

This was an alternative proposed in
https://github.com/rust-lang/rust/pull/80537#issue-776674009, and it
makes a measurable performance difference in some of my code that spawns
thousands of processes.

22 months agoAuto merge of #100908 - lnicola:rust-analyzer-2022-08-23, r=lnicola
bors [Mon, 29 Aug 2022 02:16:57 +0000 (02:16 +0000)]
Auto merge of #100908 - lnicola:rust-analyzer-2022-08-23, r=lnicola

:arrow_up: rust-analyzer

r? `@ghost`

22 months agocheck_missing_items.py: Check imports
Nixon Enraght-Moony [Sun, 28 Aug 2022 01:43:13 +0000 (02:43 +0100)]
check_missing_items.py: Check imports

22 months agoRustdoc-Json: Retain Stripped Modules when they are imported, not when they have...
Nixon Enraght-Moony [Sun, 28 Aug 2022 01:35:44 +0000 (02:35 +0100)]
Rustdoc-Json: Retain Stripped Modules when they are imported, not when they have items.

Fixes #101103
Fixes #100973

22 months agoAuto merge of #100578 - Urgau:float-next-up-down, r=scottmcm
bors [Sun, 28 Aug 2022 22:31:19 +0000 (22:31 +0000)]
Auto merge of #100578 - Urgau:float-next-up-down, r=scottmcm

Add next_up and next_down for f32/f64 - take 2

This is a revival of https://github.com/rust-lang/rust/pull/88728 which staled due to inactivity of the original author. I've address the last review comment.

---

This is a pull request implementing the features described at https://github.com/rust-lang/rfcs/pull/3173.

`@rustbot` label +T-libs-api -T-libs
r? `@scottmcm`
cc `@orlp`

22 months agoStabilize `std::io::read_to_string`
Noah Lev [Tue, 9 Aug 2022 18:08:56 +0000 (11:08 -0700)]
Stabilize `std::io::read_to_string`

22 months agoAuto merge of #100497 - kadiwa4:remove_clone_into_iter, r=cjgillot
bors [Sun, 28 Aug 2022 18:31:08 +0000 (18:31 +0000)]
Auto merge of #100497 - kadiwa4:remove_clone_into_iter, r=cjgillot

Avoid cloning a collection only to iterate over it

`@rustbot` label: +C-cleanup

22 months agoentirely get rid of NeedsRfc CTFE errors
Ralf Jung [Sun, 28 Aug 2022 17:31:36 +0000 (13:31 -0400)]
entirely get rid of NeedsRfc CTFE errors

22 months agoCTFE: exposing pointers and calling extern fn doesn't need an RFC, it is just impossible
Ralf Jung [Sun, 28 Aug 2022 17:13:13 +0000 (13:13 -0400)]
CTFE: exposing pointers and calling extern fn doesn't need an RFC, it is just impossible

22 months agoUse the declaration's SourceInfo for FnEntry retags, not the outermost
Ben Kimock [Sun, 28 Aug 2022 05:39:59 +0000 (01:39 -0400)]
Use the declaration's SourceInfo for FnEntry retags, not the outermost

22 months agoAuto merge of #100201 - RalfJung:thread-local-key, r=thomcc
bors [Sun, 28 Aug 2022 15:12:31 +0000 (15:12 +0000)]
Auto merge of #100201 - RalfJung:thread-local-key, r=thomcc

std: use realstd fast key when building tests

Under `cfg(test)`, the `std` crate is not the actual standard library, just any old crate we are testing. It imports the real standard library as `realstd`, and then does some careful `cfg` magic so that the crate built for testing uses the `realstd` global state rather than having its own copy of that.

However, this was not done for all global state hidden in std: the 'fast' version of thread-local keys, at least on some platforms, also involves some global state. Specifically its macOS version has this [`static REGISTERED`](https://github.com/rust-lang/rust/blob/bc63d5a26a65752fb105957d3235cc9c8cb0767f/library/std/src/sys/unix/thread_local_dtor.rs#L62) that would get duplicated. So this PR imports the 'fast' key type from `realstd` rather than using the local copy, to ensure its internal state (and that of the functions it calls) does not get duplicated.

I also noticed that the `__OsLocalKeyInner` is unused under `cfg(target_thread_local)`, so I removed it for that configuration. There was a comment saying macOS picks between `__OsLocalKeyInner` and `__FastLocalKeyInner` at runtime, but I think that comment is outdated -- I found no trace of such a runtime switching mechanism, and the library still check-builds on apple targets with this PR. (I don't have a Mac so I cannot actually run it.)

22 months agofill-in tracking issue for `feature(drain_keep_rest)`
Maybe Waffle [Sun, 28 Aug 2022 13:02:37 +0000 (17:02 +0400)]
fill-in tracking issue for `feature(drain_keep_rest)`

22 months agoadd examples to `vec::Drain{,Filter}::keep_rest` docs
Maybe Waffle [Sun, 28 Aug 2022 12:38:26 +0000 (16:38 +0400)]
add examples to `vec::Drain{,Filter}::keep_rest` docs

22 months agoAuto merge of #96324 - berendjan:set_tcp_quickack, r=dtolnay
bors [Sun, 28 Aug 2022 12:26:37 +0000 (12:26 +0000)]
Auto merge of #96324 - berendjan:set_tcp_quickack, r=dtolnay

Add setter and getter for TCP_QUICKACK on TcpStream for Linux

Reference issue #96256

Setting TCP_QUICKACK on TcpStream for Linux

22 months agoAuto merge of #101115 - matthiaskrgr:rollup-iy14ztr, r=matthiaskrgr
bors [Sun, 28 Aug 2022 09:45:27 +0000 (09:45 +0000)]
Auto merge of #101115 - matthiaskrgr:rollup-iy14ztr, r=matthiaskrgr

Rollup of 13 pull requests

Successful merges:

 - #97015 (std::io: migrate ReadBuf to BorrowBuf/BorrowCursor)
 - #98301 (Add GDB/LLDB pretty-printers for NonZero types)
 - #99570 (Box::from(slice): Clarify that contents are copied)
 - #100296 (Add standard C error function aliases to last_os_error)
 - #100520 (Add mention of `BufReader` in `Read::bytes` docs)
 - #100885 (Export Cancel from std::os::fortanix_sgx::usercalls::raw)
 - #100955 (Some papercuts on error::Error)
 - #101002 (Provide structured suggestion for `hashmap[idx] = val`)
 - #101038 (no alignment check during interning)
 - #101055 (Use smaller span for suggestions)
 - #101091 (Extend attrs if local_def_id exists)
 - #101098 (rustc_middle: Remove `Visibility::Invisible`)
 - #101102 (unstable-book-gen: use std::fs::write)

Failed merges:

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

22 months agoRemove Attrs type alias
Guillaume Gomez [Sun, 28 Aug 2022 08:34:19 +0000 (10:34 +0200)]
Remove Attrs type alias

22 months agoRollup merge of #101102 - est31:unstable_book_gen_write, r=Mark-Simulacrum
Matthias Krüger [Sun, 28 Aug 2022 07:35:23 +0000 (09:35 +0200)]
Rollup merge of #101102 - est31:unstable_book_gen_write, r=Mark-Simulacrum

unstable-book-gen: use std::fs::write

I wrote this code in 2017 back when std::fs::write wasn't available.
Also, use the t macro from tidy.

22 months agoRollup merge of #101098 - petrochenkov:noinvis, r=TaKO8Ki
Matthias Krüger [Sun, 28 Aug 2022 07:35:22 +0000 (09:35 +0200)]
Rollup merge of #101098 - petrochenkov:noinvis, r=TaKO8Ki

rustc_middle: Remove `Visibility::Invisible`

It had a different meaning in the past, but now it's only used as an implementation detail of import resolution.

22 months agoRollup merge of #101091 - TaKO8Ki:fix-101076, r=notriddle
Matthias Krüger [Sun, 28 Aug 2022 07:35:21 +0000 (09:35 +0200)]
Rollup merge of #101091 - TaKO8Ki:fix-101076, r=notriddle

Extend attrs if local_def_id exists

Fixes #101076

22 months agoRollup merge of #101055 - TaKO8Ki:use-smaller-span, r=compiler-errors
Matthias Krüger [Sun, 28 Aug 2022 07:35:20 +0000 (09:35 +0200)]
Rollup merge of #101055 - TaKO8Ki:use-smaller-span, r=compiler-errors

Use smaller span for suggestions

22 months agoRollup merge of #101038 - RalfJung:interning-alignment, r=oli-obk
Matthias Krüger [Sun, 28 Aug 2022 07:35:19 +0000 (09:35 +0200)]
Rollup merge of #101038 - RalfJung:interning-alignment, r=oli-obk

no alignment check during interning

This should fix https://github.com/rust-lang/rust/issues/101034
r? `@oli-obk`

Unfortunately we don't have a self-contained testcase for this problem. I am not sure how it can be triggered...

22 months agoRollup merge of #101002 - estebank:hashmap-idx, r=davidtwco
Matthias Krüger [Sun, 28 Aug 2022 07:35:18 +0000 (09:35 +0200)]
Rollup merge of #101002 - estebank:hashmap-idx, r=davidtwco

Provide structured suggestion for `hashmap[idx] = val`

22 months agoRollup merge of #100955 - nrc:chain, r=joshtriplett
Matthias Krüger [Sun, 28 Aug 2022 07:35:17 +0000 (09:35 +0200)]
Rollup merge of #100955 - nrc:chain, r=joshtriplett

Some papercuts on error::Error

Renames the chain method, since I chain could mean anything and doesn't refer to a chain of sources (cc #58520) (and adds a comment explaining why sources is not a provided method on Error). Renames arguments to the request method from `req` to `demand` since the type is `Demand` rather than Request or Requisition.

r? ``@yaahc``

22 months agoRollup merge of #100885 - mzohreva:mz/sgx-export-cancel-type, r=Mark-Simulacrum
Matthias Krüger [Sun, 28 Aug 2022 07:35:16 +0000 (09:35 +0200)]
Rollup merge of #100885 - mzohreva:mz/sgx-export-cancel-type, r=Mark-Simulacrum

Export Cancel from std::os::fortanix_sgx::usercalls::raw

This was missed in https://github.com/rust-lang/rust/pull/100642

cc ``@raoulstrackx`` and ``@jethrogb``

22 months agoRollup merge of #100520 - jakubdabek:patch-1, r=thomcc
Matthias Krüger [Sun, 28 Aug 2022 07:35:15 +0000 (09:35 +0200)]
Rollup merge of #100520 - jakubdabek:patch-1, r=thomcc

Add mention of `BufReader` in `Read::bytes` docs

There is a general paragraph about `BufRead` in the `Read` trait's docs, however using `bytes` without `BufRead` *always* has a large impact, due to reads of size 1.

`@rustbot` label +A-docs

22 months agoRollup merge of #100296 - BlackHoleFox:os-error-aliases, r=thomcc
Matthias Krüger [Sun, 28 Aug 2022 07:35:14 +0000 (09:35 +0200)]
Rollup merge of #100296 - BlackHoleFox:os-error-aliases, r=thomcc

Add standard C error function aliases to last_os_error

This aids the discoverability of `io::Error::last_os_error()` by linking to commonly used error number functions from C/C++.

I've seen a few people not realize this exists, so hopefully this helps draw attention to the API to encourage using it over integer error codes.

22 months agoRollup merge of #99570 - XrXr:box-from-slice-docs, r=thomcc
Matthias Krüger [Sun, 28 Aug 2022 07:35:13 +0000 (09:35 +0200)]
Rollup merge of #99570 - XrXr:box-from-slice-docs, r=thomcc

Box::from(slice): Clarify that contents are copied

A colleague mentioned that they interpreted the old text
as saying that only the pointer and the length are copied.
Add a clause so it is more clear that the pointed to contents
are also copied.

22 months agoRollup merge of #98301 - ortem:pretty-printers-nonzero, r=wesleywiser
Matthias Krüger [Sun, 28 Aug 2022 07:35:12 +0000 (09:35 +0200)]
Rollup merge of #98301 - ortem:pretty-printers-nonzero, r=wesleywiser

Add GDB/LLDB pretty-printers for NonZero types

Add GDB/LLDB pretty-printers for `NonZero` types.
These pretty-printers were originally implemented for IntelliJ Rust by ```@Kobzol``` in https://github.com/intellij-rust/intellij-rust/pull/5270.

Part of #29392.

22 months agoRollup merge of #97015 - nrc:read-buf-cursor, r=Mark-Simulacrum
Matthias Krüger [Sun, 28 Aug 2022 07:35:11 +0000 (09:35 +0200)]
Rollup merge of #97015 - nrc:read-buf-cursor, r=Mark-Simulacrum

std::io: migrate ReadBuf to BorrowBuf/BorrowCursor

This PR replaces `ReadBuf` (used by the `Read::read_buf` family of methods) with `BorrowBuf` and `BorrowCursor`.

The general idea is to split `ReadBuf` because its API is large and confusing. `BorrowBuf` represents a borrowed buffer which is mostly read-only and (other than for construction) deals only with filled vs unfilled segments. a `BorrowCursor` is a mostly write-only view of the unfilled part of a `BorrowBuf` which distinguishes between initialized and uninitialized segments. For `Read::read_buf`, the caller would create a `BorrowBuf`, then pass a `BorrowCursor` to `read_buf`.

In addition to the major API split, I've made the following smaller changes:

* Removed some methods entirely from the API (mostly the functionality can be replicated with two calls rather than a single one)
* Unified naming, e.g., by replacing initialized with init and assume_init with set_init
* Added an easy way to get the number of bytes written to a cursor (`written` method)

As well as simplifying the API (IMO), this approach has the following advantages:

* Since we pass the cursor by value, we remove the 'unsoundness footgun' where a malicious `read_buf` could swap out the `ReadBuf`.
* Since `read_buf` cannot write into the filled part of the buffer, we prevent the filled part shrinking or changing which could cause underflow for the caller or unexpected behaviour.

## Outline

```rust
pub struct BorrowBuf<'a>

impl Debug for BorrowBuf<'_>

impl<'a> From<&'a mut [u8]> for BorrowBuf<'a>
impl<'a> From<&'a mut [MaybeUninit<u8>]> for BorrowBuf<'a>

impl<'a> BorrowBuf<'a> {
    pub fn capacity(&self) -> usize
    pub fn len(&self) -> usize
    pub fn init_len(&self) -> usize
    pub fn filled(&self) -> &[u8]
    pub fn unfilled<'this>(&'this mut self) -> BorrowCursor<'this, 'a>
    pub fn clear(&mut self) -> &mut Self
    pub unsafe fn set_init(&mut self, n: usize) -> &mut Self
}

pub struct BorrowCursor<'buf, 'data>

impl<'buf, 'data> BorrowCursor<'buf, 'data> {
    pub fn clone<'this>(&'this mut self) -> BorrowCursor<'this, 'data>
    pub fn capacity(&self) -> usize
    pub fn written(&self) -> usize
    pub fn init_ref(&self) -> &[u8]
    pub fn init_mut(&mut self) -> &mut [u8]
    pub fn uninit_mut(&mut self) -> &mut [MaybeUninit<u8>]
    pub unsafe fn as_mut(&mut self) -> &mut [MaybeUninit<u8>]
    pub unsafe fn advance(&mut self, n: usize) -> &mut Self
    pub fn ensure_init(&mut self) -> &mut Self
    pub unsafe fn set_init(&mut self, n: usize) -> &mut Self
    pub fn append(&mut self, buf: &[u8])
}
```

## TODO

* ~~Migrate non-unix libs and tests~~
* ~~Naming~~
  * ~~`BorrowBuf` or `BorrowedBuf` or `SliceBuf`? (We might want an owned equivalent for the async IO traits)~~
  * ~~Should we rename the `readbuf` module? We might keep the name indicate it includes both the buf and cursor variations and someday the owned version too. Or we could change it. It is not publicly exposed, so it is not that important~~.
  * ~~`read_buf` method: we read into the cursor now, so the `_buf` suffix is a bit weird.~~
* ~~Documentation~~
* Tests are incomplete (I adjusted existing tests, but did not add new ones).

cc https://github.com/rust-lang/rust/issues/78485, https://github.com/rust-lang/rust/issues/94741
supersedes: https://github.com/rust-lang/rust/pull/95770, https://github.com/rust-lang/rust/pull/93359
fixes #93305

22 months agoAuto merge of #100863 - ehuss:sunset-rls, r=Mark-Simulacrum
bors [Sun, 28 Aug 2022 07:04:21 +0000 (07:04 +0000)]
Auto merge of #100863 - ehuss:sunset-rls, r=Mark-Simulacrum

Sunset RLS

This removes RLS per the plan outlined in https://blog.rust-lang.org/2022/07/01/RLS-deprecation.html. This replaces the `rls` executable with a small program which will display an alert telling the user that RLS is no longer available.

An overview of the changes here:
* Removes the rls submodule and replaces it with a small stub program.
* `rls` is removed from `./x.py install`. I do not think users running `install` will need the stub.
* `rls` is removed from `./x.py test`, it doesn't have any tests.

Other things of note:
* I kept `DIST_REQUIRE_ALL_TOOLS` even though it is no longer needed, with the thought that it could be useful in the feature. However, I could remove it if desired.
* I kept `extra_deps` in `tool_extended` (which allows tools to depend on other things), even though it is no longer needed. This can also be removed if desired.
* ~~This keeps RLS in the macOS `pkg` installer and the Windows `msi` installer. I kinda lean towards removing it from those, but I'm not sure?~~ RLS has been removed from pkg and msi.
* This does not remove the analysis component. It is not clear if we should keep this or not. RLS was the primary user, but I think there are a few users that have made tools around it.
* There will be several followup steps after this PR:
    * Updating the toolstate repo to remove RLS.
    * Updating documentation, such as rustc-dev-guide, to remove references to RLS.

The alert looks like this in VSCode:

<img width="989" alt="image" src="https://user-images.githubusercontent.com/43198/185817530-930c5842-24b5-4162-a213-016a25810955.png">

In Sublime it looks similar.

I would appreciate if others could help test with other editors such as vim or Emacs.

22 months agoRemove RLS from macOS pkg and Windows msi installers.
Eric Huss [Tue, 23 Aug 2022 16:54:32 +0000 (09:54 -0700)]
Remove RLS from macOS pkg and Windows msi installers.

These generally aren't used too much, and I feel like aren't really
helpful for installing the RLS stub.

22 months agoSunset RLS
Eric Huss [Sun, 21 Aug 2022 04:19:43 +0000 (21:19 -0700)]
Sunset RLS

22 months agoAuto merge of #92845 - Amanieu:std_personality, r=Mark-Simulacrum
bors [Sun, 28 Aug 2022 04:16:29 +0000 (04:16 +0000)]
Auto merge of #92845 - Amanieu:std_personality, r=Mark-Simulacrum

Move EH personality functions to std

These were previously in the panic_unwind crate with dummy stubs in the
panic_abort crate. However it turns out that this is insufficient: we
still need a proper personality function even with -C panic=abort to
handle the following cases:

1) `extern "C-unwind"` still needs to catch foreign exceptions with -C
panic=abort to turn them into aborts. This requires landing pads and a
personality function.

2) ARM EHABI uses the personality function when creating backtraces.
The dummy personality function in panic_abort was causing backtrace
generation to get stuck in a loop since the personality function is
responsible for advancing the unwind state to the next frame.

Fixes #41004

22 months agoAuto merge of #96946 - WaffleLapkin:ptr_mask, r=scottmcm
bors [Sun, 28 Aug 2022 01:34:47 +0000 (01:34 +0000)]
Auto merge of #96946 - WaffleLapkin:ptr_mask, r=scottmcm

Add pointer masking convenience functions

This PR adds the following public API:
```rust
impl<T: ?Sized> *const T {
    fn mask(self, mask: usize) -> *const T;
}

impl<T: ?Sized> *mut T {
    fn mask(self, mask: usize) -> *const T;
}

// mod intrinsics
fn mask<T>(ptr: *const T, mask: usize) -> *const T
```
This is equivalent to `ptr.map_addr(|a| a & mask)` but also uses a cool llvm intrinsic.

Proposed in https://github.com/rust-lang/rust/pull/95643#issuecomment-1121562352

cc `@Gankra` `@scottmcm` `@RalfJung`

r? rust-lang/libs-api

22 months agounstable-book-gen: use std::fs::write
est31 [Sat, 27 Aug 2022 15:32:04 +0000 (17:32 +0200)]
unstable-book-gen: use std::fs::write

I wrote this code in 2017 back when std::fs::write wasn't available.
Also, use the t macro from tidy.

22 months agoFix handling of rust_eh_personality in reachable_non_generics
Amanieu d'Antras [Sat, 27 Aug 2022 22:38:01 +0000 (06:38 +0800)]
Fix handling of rust_eh_personality in reachable_non_generics

22 months agorustc_middle: Remove `Visibility::Invisible`
Vadim Petrochenkov [Sat, 27 Aug 2022 15:36:57 +0000 (18:36 +0300)]
rustc_middle: Remove `Visibility::Invisible`

22 months agoAuto merge of #100591 - est31:stabilization_placeholder, r=Mark-Simulacrum
bors [Sat, 27 Aug 2022 16:57:19 +0000 (16:57 +0000)]
Auto merge of #100591 - est31:stabilization_placeholder, r=Mark-Simulacrum

Require stabilizations to use a placeholder instead of writing out stabilization version

Implements the idea from [this](https://rust-lang.zulipchat.com/#narrow/stream/241545-t-release/topic/libs.20stabilization.20placeholder) zulip stream.

It's a common phenomenon that feature stabilizations don't make it into a particular release, but the version is still inaccurate. Often this is caught in the PR, but it can also require subsequent changes to adjust/correct the version. A list with examples of such PRs is given in #100577, but it's far from complete.

This PR requires stabilization PRs to use the placeholder `CURRENT_RUSTC_VERSION`, enforced via tidy tooling. The PR also adds a tool that replaces the placeholder with the version number. It can be invoked via `./x.py run src/tools/replace-version-placeholder` and is supposed to be ran upon beta branching as well as version bumping and any backports to the beta branch.  I filed PRs to the dev guide and forge to document these changes in the release and stabilization workflows:

* The [dev guide](https://rustc-dev-guide.rust-lang.org/stabilization_guide.html#determining-the-stabilization-version) PR: https://github.com/rust-lang/rustc-dev-guide/pull/1443
* The [std dev guide](https://std-dev-guide.rust-lang.org/) PR: https://github.com/rust-lang/std-dev-guide/pull/43
* The [forge](https://github.com/rust-lang/rust-forge) PR: https://github.com/rust-lang/rust-forge/pull/643

Alternative to #100577 which added checking.

22 months agoextend attrs if local_def_id exists
Takayuki Maeda [Sat, 27 Aug 2022 16:20:26 +0000 (01:20 +0900)]
extend attrs if local_def_id exists

22 months agoAdd replace-version-placeholder tool
est31 [Tue, 23 Aug 2022 20:14:12 +0000 (22:14 +0200)]
Add replace-version-placeholder tool

This tool is to be ran at specific points in the release process to replace
the version place holder made by stabilizations with the version number.

22 months agotidy: move directory traversal utility functions into dedicated module
est31 [Tue, 23 Aug 2022 16:45:29 +0000 (18:45 +0200)]
tidy: move directory traversal utility functions into dedicated module

22 months agoAdjust label break value stabilization version to CURRENT_RUSTC_VERSION
est31 [Sat, 27 Aug 2022 15:35:46 +0000 (17:35 +0200)]
Adjust label break value stabilization version to CURRENT_RUSTC_VERSION

22 months agoAdjust backtrace stabilization version to CURRENT_RUSTC_VERSION
est31 [Mon, 15 Aug 2022 15:35:34 +0000 (17:35 +0200)]
Adjust backtrace stabilization version to CURRENT_RUSTC_VERSION

22 months agoAdjust ptr_const_cast stabilization version to CURRENT_RUSTC_VERSION
est31 [Mon, 15 Aug 2022 15:34:09 +0000 (17:34 +0200)]
Adjust ptr_const_cast stabilization version to CURRENT_RUSTC_VERSION

22 months agoExpand the version placeholder to the current version in stability attribute parsing
est31 [Mon, 15 Aug 2022 15:28:43 +0000 (17:28 +0200)]
Expand the version placeholder to the current version in stability attribute parsing

That way, the current version is shown in rustdoc etc.

22 months agotidy: forbid since values for features that point to the current release or future...
est31 [Mon, 15 Aug 2022 14:57:46 +0000 (16:57 +0200)]
tidy: forbid since values for features that point to the current release or future ones

It's a common phenomenon that feature stabilizations don't make it into
a particular release, but the version is still inaccurate. Often this
leads to subsequent changes to adjust/correct the version.

Instead, require people to put a placeholder that gets replaced during
beta branching time with the current rust version. That way, there is
no chance that an error can be introduced.

Usage of the placeholder is required on the nightly channel, and forbidden
on the stable and beta channels.

22 months agoAuto merge of #100999 - nnethercote:shrink-FnAbi, r=bjorn3
bors [Sat, 27 Aug 2022 14:00:53 +0000 (14:00 +0000)]
Auto merge of #100999 - nnethercote:shrink-FnAbi, r=bjorn3

Shrink `FnAbi`

Because they can take up a lot of memory in debug and release builds.

r? `@bjorn3`

22 months agoremove a now-useless machine hook
Ralf Jung [Sun, 7 Aug 2022 16:33:44 +0000 (12:33 -0400)]
remove a now-useless machine hook

22 months agoremove an ineffective check in const_prop
Ralf Jung [Sun, 7 Aug 2022 14:36:42 +0000 (10:36 -0400)]
remove an ineffective check in const_prop

22 months agoAuto merge of #100989 - lcnr:implied-bounds-uwu, r=spastorino
bors [Sat, 27 Aug 2022 11:37:06 +0000 (11:37 +0000)]
Auto merge of #100989 - lcnr:implied-bounds-uwu, r=spastorino

no unnormalized types for implied bounds outside borrowck

fixes #100910 - introduced in https://github.com/rust-lang/rust/pull/100676 - by only considering normalized types for wf.

r? types

22 months agoAuto merge of #100946 - jyn514:query-system-3, r=cjgillot
bors [Sat, 27 Aug 2022 08:53:24 +0000 (08:53 +0000)]
Auto merge of #100946 - jyn514:query-system-3, r=cjgillot

Simplify the arguments to macros generated by the `rustc_queries` proc macro

Very small cleanup. Based on https://github.com/rust-lang/rust/pull/100436 which modifies some of the same code.

r? `@cjgillot`

22 months agouse smaller span for suggestions
Takayuki Maeda [Fri, 26 Aug 2022 17:23:21 +0000 (02:23 +0900)]
use smaller span for suggestions

22 months agoAuto merge of #101074 - JohnTitor:rollup-zwznihq, r=JohnTitor
bors [Sat, 27 Aug 2022 06:12:17 +0000 (06:12 +0000)]
Auto merge of #101074 - JohnTitor:rollup-zwznihq, r=JohnTitor

Rollup of 11 pull requests

Successful merges:

 - #96240 (Stabilize `const_ptr_offset_from`.)
 - #99784 (Make forward compatibility lint deprecated_cfg_attr_crate_type_name deny by default)
 - #100811 (Fix wrong compiletest filters on Windows)
 - #100924 (Smaller improvements of tidy and the unicode generator)
 - #100953 (Update documentation for `write!` and `writeln!`)
 - #101018 (rustdoc: omit start/end tags for empty item description blocks)
 - #101044 (rustdoc: remove unused CSS for `hidden-by-*-hider`)
 - #101046 (rustdoc: remove incorrect CSS selector `.impl-items table td`)
 - #101057 (Merge implementations of HIR fn_decl and fn_sig.)
 - #101062 (rustdoc: remove empty extern_crates and type="text/javascript" on script)
 - #101063 (Merge duplicated CSS rules)

Failed merges:

 - #101055 (Use smaller span for suggestions)

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

22 months agoRollup merge of #101063 - GuillaumeGomez:merge-duplicated-css, r=notriddle
Yuki Okushi [Sat, 27 Aug 2022 04:14:26 +0000 (13:14 +0900)]
Rollup merge of #101063 - GuillaumeGomez:merge-duplicated-css, r=notriddle

Merge duplicated CSS rules

I used the [stylelint](https://stylelint.io/user-guide/configure) tool to check for duplicated CSS rules in order to merge them.

r? `@notriddle`

22 months agoRollup merge of #101062 - notriddle:notriddle/text-javascript, r=GuillaumeGomez
Yuki Okushi [Sat, 27 Aug 2022 04:14:25 +0000 (13:14 +0900)]
Rollup merge of #101062 - notriddle:notriddle/text-javascript, r=GuillaumeGomez

rustdoc: remove empty extern_crates and type="text/javascript" on script

Like #101023, this removes an attribute with a default value.

22 months agoRollup merge of #101057 - cjgillot:one-fn-sig, r=compiler-errors
Yuki Okushi [Sat, 27 Aug 2022 04:14:24 +0000 (13:14 +0900)]
Rollup merge of #101057 - cjgillot:one-fn-sig, r=compiler-errors

Merge implementations of HIR fn_decl and fn_sig.

22 months agoRollup merge of #101046 - notriddle:notriddle/table-css, r=jsha
Yuki Okushi [Sat, 27 Aug 2022 04:14:23 +0000 (13:14 +0900)]
Rollup merge of #101046 - notriddle:notriddle/table-css, r=jsha

rustdoc: remove incorrect CSS selector `.impl-items table td`

Fixes #100994

This selector was added in c7312fbae4979c6d4fdfbd1f55a71cd47d82a480. The bug can be seen at <https://doc.rust-lang.org/1.27.0/alloc/slice/trait.SliceIndex.html#foreign-impls>.

This rule was added to help with a `<table>` that was used for displaying the function signature [src] lockup. That lockup was changed in 34bd2b845b3acd84c5a9bddae3ff8081c19ec5e9 to use flexbox instead, leaving this selector unused (at least, for its original purpose).

22 months agoRollup merge of #101044 - notriddle:notriddle/css-hidden-by, r=jsha
Yuki Okushi [Sat, 27 Aug 2022 04:14:22 +0000 (13:14 +0900)]
Rollup merge of #101044 - notriddle:notriddle/css-hidden-by, r=jsha

rustdoc: remove unused CSS for `hidden-by-*-hider`

This CSS seems to have become obsolete with the move to `<details>` tags,
and its corresponding JavaScript was removed in aee054d05d8b795d35c0b448a4b731b6507aa459

22 months agoRollup merge of #101018 - notriddle:notriddle/item-right-docblock-short, r=GuillaumeGomez
Yuki Okushi [Sat, 27 Aug 2022 04:14:21 +0000 (13:14 +0900)]
Rollup merge of #101018 - notriddle:notriddle/item-right-docblock-short, r=GuillaumeGomez

rustdoc: omit start/end tags for empty item description blocks

Related to #100952

This is definitely not a complete solution, but it does shrink keysyms/index.html on smithay from 620K to 516K.

22 months agoRollup merge of #100953 - joshtriplett:write-docs, r=Mark-Simulacrum
Yuki Okushi [Sat, 27 Aug 2022 04:14:20 +0000 (13:14 +0900)]
Rollup merge of #100953 - joshtriplett:write-docs, r=Mark-Simulacrum

Update documentation for `write!` and `writeln!`

https://github.com/rust-lang/rust/pull/37472 added this documentation, but it
needs updating:

- Remove some documentation duplicated between `writeln!` and `write!`
- Update `write!` docs: can now import traits as `_` to avoid conflicts
- Expand example to show how to implement qualified trait names

22 months agoRollup merge of #100924 - est31:closure_to_fn_ptr, r=Mark-Simulacrum
Yuki Okushi [Sat, 27 Aug 2022 04:14:19 +0000 (13:14 +0900)]
Rollup merge of #100924 - est31:closure_to_fn_ptr, r=Mark-Simulacrum

Smaller improvements of tidy and the unicode generator

22 months agoRollup merge of #100811 - czzrr:master, r=Mark-Simulacrum
Yuki Okushi [Sat, 27 Aug 2022 04:14:18 +0000 (13:14 +0900)]
Rollup merge of #100811 - czzrr:master, r=Mark-Simulacrum

Fix wrong compiletest filters on Windows

As discussed in [#79334](https://github.com/rust-lang/rust/issues/79334), when calling e.g.
```
python x.py test src/test/ui/expr/compound-assignment/eval-order.rs
```
on Windows, compiletest passes the filter `expr/compound-assignment/eval-order.rs` to libtest, which instead should be `expr\compound-assignment\eval-order.rs`, as that is the file found when collecting tests. This is what I fixed.

I'm not sure how to organize a test for this. Any suggestions?

22 months agoRollup merge of #99784 - est31:deny_cfg_attr_crate_type_name, r=Mark-Simulacrum
Yuki Okushi [Sat, 27 Aug 2022 04:14:16 +0000 (13:14 +0900)]
Rollup merge of #99784 - est31:deny_cfg_attr_crate_type_name, r=Mark-Simulacrum

Make forward compatibility lint deprecated_cfg_attr_crate_type_name deny by default

Turns the forward compatibility lint added by #83744 to deprecate `cfg_attr` usage with `#![crate_type]` and `#![crate_name]` attributes into deny by default. Copying the example from #83744:

```Rust
#![crate_type = "lib"] // remains working
#![cfg_attr(foo, crate_type = "bin")] // will stop working
```

Over 8 months have passed since #83744 was merged so I'd say this gives ample time for people to have been warned, so we can make the warning stronger. No usage was found via grep.app except for one, which was in an unmaintained code base that didn't seem to be used in the open source eco system. The crater run conducted in #83744 also didn't show up anything.

cc #91632 - tracking issue for the lint

22 months agoRollup merge of #96240 - fee1-dead-contrib:stabilize_const_offset_from, r=Mark-Simulacrum
Yuki Okushi [Sat, 27 Aug 2022 04:14:15 +0000 (13:14 +0900)]
Rollup merge of #96240 - fee1-dead-contrib:stabilize_const_offset_from, r=Mark-Simulacrum

Stabilize `const_ptr_offset_from`.

Stabilization has been completed [here](https://github.com/rust-lang/rust/issues/92980#issuecomment-1065644848) with a FCP.

Closes #92980.

22 months agoAuto merge of #100732 - dpaoliello:import_name_type, r=wesleywiser
bors [Sat, 27 Aug 2022 03:19:12 +0000 (03:19 +0000)]
Auto merge of #100732 - dpaoliello:import_name_type, r=wesleywiser

Implementation of import_name_type

Fixes #96534 by implementing https://github.com/rust-lang/compiler-team/issues/525

Symbols that are exported or imported from a binary on 32bit x86 Windows can be named in four separate ways, corresponding to the [import name types](https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#import-name-type) from the PE-COFF spec. The exporting and importing binaries must use the same name encoding, otherwise mismatches can lead to link failures due to "missing symbols" or to 0xc0000139 (`STATUS_ENTRYPOINT_NOT_FOUND`) errors when the executable/library is loaded. For details, see the comments on the raw-dylib feature's https://github.com/rust-lang/rust/issues/58713. To generate the correct import libraries for these DLLs, therefore, rustc must know the import name type for each `extern` function, and there is currently no way for users to provide this information.

This change adds a new `MetaNameValueStr` key to the `#[link]` attribute called `import_name_type`, and which accepts one of three values: `decorated`, `noprefix`, and `undecorated`.

A single DLL is likely to export all its functions using the same import type name, hence `import_name_type` is a parameter of `#[link]` rather than being its own attribute that is applied per-function. It is possible to have a single DLL that exports different functions using different import name types, but users could express such cases by providing multiple export blocks for the same DLL, each with a different import name type.

Note: there is a fourth import name type defined in the PE-COFF spec, `IMPORT_ORDINAL`. This case is already handled by the `#[link_ordinal]` attribute. While it could be merged into `import_type_name`, that would not make sense as `#[link_ordinal]` provides per-function information (namely the ordinal itself).

Design decisions (these match the MCP linked above):
* For GNU, `decorated` matches the PE Spec and MSVC rather than the default behavior of `dlltool` (i.e., there will be a leading `_` for `stdcall`).
* If `import_name_type` is not present, we will keep our current behavior of matching the environment (MSVC vs GNU) default for decorating.
* Using `import_name_type` on architectures other than 32bit x86 will result in an error.
* Using `import_name_type` with link kinds other than `"raw-dylib"` will result in an error.