]> git.lizzy.rs Git - rust.git/log
rust.git
2 years agoRollup merge of #95361 - scottmcm:valid-align, r=Mark-Simulacrum
Dylan DPC [Sat, 9 Apr 2022 16:26:25 +0000 (18:26 +0200)]
Rollup merge of #95361 - scottmcm:valid-align, r=Mark-Simulacrum

Make non-power-of-two alignments a validity error in `Layout`

Inspired by the zulip conversation about how `Layout` should better enforce `size <= isize::MAX as usize`, this uses an N-variant enum on N-bit platforms to require at the validity level that the existing invariant of "must be a power of two" is upheld.

This was MIRI can catch it, and means there's a more-specific type for `Layout` to store than just `NonZeroUsize`.

It's left as `pub(crate)` here; a future PR could consider giving it a tracking issue for non-internal usage.

2 years agoRollup merge of #94794 - mlodato517:mlodato517-clarify-string-indexing-docs, r=Mark...
Dylan DPC [Sat, 9 Apr 2022 16:26:25 +0000 (18:26 +0200)]
Rollup merge of #94794 - mlodato517:mlodato517-clarify-string-indexing-docs, r=Mark-Simulacrum

Clarify indexing into Strings

**This Commit**
Adds some clarity around indexing into Strings.

**Why?**
I was reading through the `Range` documentation and saw an
implementation for `SliceIndex<str>`. I was surprised to see this and
went to read the [`String`][0] documentation and, to me, it seemed to
say (at least) three things:

1. you cannot index into a `String`
2. indexing into a `String` could not be constant-time
3. indexing into a `String` does not have an obvious return type

I absolutely agree with the last point but the first two seemed
contradictory to the documentation around [`SliceIndex<str>`][1]
which mention:

1. you can do substring slicing (which is probably different than
   "indexing" but, because the method is called `index` and I associate
   anything with square brackets with "indexing" it was enough to
   confuse me)
2. substring slicing is constant-time (this may be algorithmic ignorance
   on my part but if `&s[i..i+1]` is O(1) then it seems confusing that
   `&s[i]` _could not possibly_ be O(1))

So I was hoping to clarify a couple things and, hopefully, in this PR
review learn a little more about the nuances here that confused me in
the first place.

[0]: https://doc.rust-lang.org/stable/std/string/struct.String.html#utf-8
[1]: https://doc.rust-lang.org/stable/std/slice/trait.SliceIndex.html#impl-SliceIndex%3Cstr%3E

2 years agoRework String UTF-8 Documentation
Mark Lodato [Thu, 10 Mar 2022 02:43:04 +0000 (21:43 -0500)]
Rework String UTF-8 Documentation

**This Commit**
Adds some clarity around indexing into Strings and the constraints
driving various decisions there.

**Why?**
The [`String` documentation][0] mentions how `String`s can't be indexed
but `Range` has an implementation for `SliceIndex<str>`. This can be
confusing. There are also several statements to explain the lack of
`String` indexing:

- the inability to index into a `String` is an implication of UTF-8
  encoding
- indexing into a `String` could not be constant-time with UTF-8
  encoding
- indexing into a `String` does not have an obvious return type

This last statement made sense but the first two seemed contradictory to
the documentation around [`SliceIndex<str>`][1] which mention:

- one can index into a `String` with a `Range` (also called substring
  slicing but it uses the same syntax and the method name is `index`)
- `Range` indexing into a `String` is constant-time

To resolve this seeming contradiction the documentation is reworked to
more clearly explain what factors drive the decision to disallow
indexing into a `String` with a single number.

[0]: https://doc.rust-lang.org/stable/std/string/struct.String.html#utf-8
[1]: https://doc.rust-lang.org/stable/std/slice/trait.SliceIndex.html#impl-SliceIndex%3Cstr%3E

2 years agoAuto merge of #95697 - klensy:no-strings, r=petrochenkov
bors [Sat, 9 Apr 2022 13:15:26 +0000 (13:15 +0000)]
Auto merge of #95697 - klensy:no-strings, r=petrochenkov

refactor: simplify few string related interactions

Few small optimizations:

check_doc_keyword: don't alloc string for emptiness check
check_doc_alias_value: get argument as Symbol to prevent needless string convertions
check_doc_attrs: don't alloc vec, iterate over slice.
replace as_str() check with symbol check
get_single_str_from_tts: don't prealloc string
trivial string to str replace
LifetimeScopeForPath::NonElided use Vec<Symbol> instead of Vec<String>
AssertModuleSource use FxHashSet<Symbol> instead of BTreeSet<String>
CrateInfo.crate_name replace FxHashMap<CrateNum, String> with FxHashMap<CrateNum, Symbol>

2 years agoAuto merge of #95840 - Dylan-DPC:rollup-erz5u6w, r=Dylan-DPC
bors [Sat, 9 Apr 2022 11:05:30 +0000 (11:05 +0000)]
Auto merge of #95840 - Dylan-DPC:rollup-erz5u6w, r=Dylan-DPC

Rollup of 6 pull requests

Successful merges:

 - #95308 (Reduce the amount of unstable features used in libproc_macro)
 - #95676 (Update RLS)
 - #95769 (Hide cross-crate `#[doc(hidden)]` associated items in trait impls)
 - #95785 (interpret: err instead of ICE on size mismatches in to_bits_or_ptr_internal)
 - #95802 (fix unused constant warning on some Windows targets)
 - #95810 (Use `format-args-capture` and remove unnecessary nested blocks)

Failed merges:

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

2 years agoRollup merge of #95810 - TaKO8Ki:use-format-args-capture-and-remove-unnecessary-nesti...
Dylan DPC [Sat, 9 Apr 2022 10:52:07 +0000 (12:52 +0200)]
Rollup merge of #95810 - TaKO8Ki:use-format-args-capture-and-remove-unnecessary-nesting-in-rustc-borrowck, r=davidtwco

Use `format-args-capture` and remove unnecessary nested blocks

2 years agoRollup merge of #95802 - RalfJung:unused-win, r=Dylan-DPC
Dylan DPC [Sat, 9 Apr 2022 10:52:06 +0000 (12:52 +0200)]
Rollup merge of #95802 - RalfJung:unused-win, r=Dylan-DPC

fix unused constant warning on some Windows targets

When none of those `cfg_if!` apply (and on Miri), the constant remains unused.

2 years agoRollup merge of #95785 - RalfJung:interpret-size-mismatch, r=oli-obk
Dylan DPC [Sat, 9 Apr 2022 10:52:05 +0000 (12:52 +0200)]
Rollup merge of #95785 - RalfJung:interpret-size-mismatch, r=oli-obk

interpret: err instead of ICE on size mismatches in to_bits_or_ptr_internal

We did this a while ago already for `to_i32()` and friends, but missed this one. That became quite annoying when I was debugging an ICE caused by `read_pointer` in a Miri shim where the code was passing an argument at the wrong type.

Having `scalar_to_ptr` be fallible is consistent with all the other `Scalar::to_*` methods being fallible. I added `unwrap` only in code outside the interpreter, which is no worse off than before now in terms of panics.

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

2 years agoRollup merge of #95769 - fmease:fix-issue-95717, r=GuillaumeGomez
Dylan DPC [Sat, 9 Apr 2022 10:52:04 +0000 (12:52 +0200)]
Rollup merge of #95769 - fmease:fix-issue-95717, r=GuillaumeGomez

Hide cross-crate `#[doc(hidden)]` associated items in trait impls

Fixes #95717.

r? ```@GuillaumeGomez```
This is the bug I ran into in #95316.

```@rustbot``` label T-rustdoc A-cross-crate-reexports

2 years agoRollup merge of #95676 - pietroalbini:pa-bump-rls, r=pietroalbini
Dylan DPC [Sat, 9 Apr 2022 10:52:03 +0000 (12:52 +0200)]
Rollup merge of #95676 - pietroalbini:pa-bump-rls, r=pietroalbini

Update RLS

This PR updates RLS to include the following PRs:

* https://github.com/rust-lang/rls/pull/1766
* https://github.com/rust-lang/rls/pull/1767
* https://github.com/rust-lang/rls/pull/1771
* https://github.com/rust-lang/rls/pull/1772

It also updates racer to fix RLS compilation with the parallel compiler enabled.

2 years agoRollup merge of #95308 - bjorn3:more_stable_proc_macro, r=Mark-Simulacrum
Dylan DPC [Sat, 9 Apr 2022 10:52:02 +0000 (12:52 +0200)]
Rollup merge of #95308 - bjorn3:more_stable_proc_macro, r=Mark-Simulacrum

Reduce the amount of unstable features used in libproc_macro

This makes it easier to adapt the source for stable when copying it into rust-analyzer to load rustc compiled proc macros.

2 years agoAuto merge of #95724 - Kobzol:ci-update-rustc-perf, r=nnethercote
bors [Sat, 9 Apr 2022 07:53:34 +0000 (07:53 +0000)]
Auto merge of #95724 - Kobzol:ci-update-rustc-perf, r=nnethercote

CI: update `rustc-perf` version used in CI and also the corresponding PGO benchmarks

The old version was from May 2021. The `rustc-perf` benchmarks have seen a significant overhaul recently, so let's see if the new benchmarks can improve PGO performance.

2 years agoAuto merge of #95835 - Dylan-DPC:rollup-l5mf2ad, r=Dylan-DPC
bors [Sat, 9 Apr 2022 04:53:34 +0000 (04:53 +0000)]
Auto merge of #95835 - Dylan-DPC:rollup-l5mf2ad, r=Dylan-DPC

Rollup of 8 pull requests

Successful merges:

 - #90066 (Add new ThinBox type for 1 stack pointer wide heap allocated trait objects)
 - #95374 (assert_uninit_valid: ensure we detect at least arrays of uninhabited types)
 - #95599 (Strict provenance lints)
 - #95751 (Don't report numeric inference ambiguity when we have previous errors)
 - #95764 ([macro_metavar_expr] Add tests to ensure the feature requirement)
 - #95787 (reword panic vs result section to remove recoverable vs unrecoverable framing)
 - #95797 (Remove explicit delimiter token trees from `Delimited`.)
 - #95804 (rustdoc: Fix empty doc comment with backline ICE)

Failed merges:

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

2 years agoRollup merge of #95804 - GuillaumeGomez:empty-doc-comment-with-backline, r=notriddle
Dylan DPC [Sat, 9 Apr 2022 03:58:46 +0000 (05:58 +0200)]
Rollup merge of #95804 - GuillaumeGomez:empty-doc-comment-with-backline, r=notriddle

rustdoc: Fix empty doc comment with backline ICE

Fixes #95800.

r? ```@notriddle```

2 years agoRollup merge of #95797 - nnethercote:rm-Delimited-all_tts, r=petrochenkov
Dylan DPC [Sat, 9 Apr 2022 03:58:45 +0000 (05:58 +0200)]
Rollup merge of #95797 - nnethercote:rm-Delimited-all_tts, r=petrochenkov

Remove explicit delimiter token trees from `Delimited`.

They were introduced by the final commit in #95159 and gave a
performance win. But since the introduction of `MatcherLoc` they are no
longer needed. This commit reverts that change, making the code a bit
simpler.

r? `@petrochenkov`

2 years agoRollup merge of #95787 - yaahc:panic-doc-update-v2, r=dtolnay
Dylan DPC [Sat, 9 Apr 2022 03:58:44 +0000 (05:58 +0200)]
Rollup merge of #95787 - yaahc:panic-doc-update-v2, r=dtolnay

reword panic vs result section to remove recoverable vs unrecoverable framing

Based on feedback from the Error Handling FAQ: https://github.com/rust-lang/project-error-handling/issues/50#issuecomment-1090876982

r? ````@dtolnay````

2 years agoRollup merge of #95764 - c410-f3r:metavar-test, r=petrochenkov
Dylan DPC [Sat, 9 Apr 2022 03:58:43 +0000 (05:58 +0200)]
Rollup merge of #95764 - c410-f3r:metavar-test, r=petrochenkov

[macro_metavar_expr] Add tests to ensure the feature requirement

These tests should have been added in the initial implementation they were unintentionally forgotten

cc #83527
r? ````@petrochenkov````

2 years agoRollup merge of #95751 - compiler-errors:ambig-int, r=jackh726
Dylan DPC [Sat, 9 Apr 2022 03:58:42 +0000 (05:58 +0200)]
Rollup merge of #95751 - compiler-errors:ambig-int, r=jackh726

Don't report numeric inference ambiguity when we have previous errors

Fixes #95648

2 years agoRollup merge of #95599 - niluxv:strict-provenance-lint, r=michaelwoerister
Dylan DPC [Sat, 9 Apr 2022 03:58:42 +0000 (05:58 +0200)]
Rollup merge of #95599 - niluxv:strict-provenance-lint, r=michaelwoerister

Strict provenance lints

See #95488.
This PR introduces two unstable (allow by default) lints to which lint on int2ptr and ptr2int casts, as the former is not possible in the strict provenance model and the latter can be written nicer using the `.addr()` API.
Based on an initial version of the lint by ```@Gankra``` in #95199.

2 years agoRollup merge of #95374 - RalfJung:assert_uninit_valid, r=Mark-Simulacrum
Dylan DPC [Sat, 9 Apr 2022 03:58:41 +0000 (05:58 +0200)]
Rollup merge of #95374 - RalfJung:assert_uninit_valid, r=Mark-Simulacrum

assert_uninit_valid: ensure we detect at least arrays of uninhabited types

We can't easily extend this check to *all* arrays (Cc https://github.com/rust-lang/rust/pull/87041), but it turns out the existing check already catches arrays of uninhabited types. So let's make sure it stays that way by adding them to the test.

2 years agoRollup merge of #90066 - yaahc:thinbox, r=joshtriplett
Dylan DPC [Sat, 9 Apr 2022 03:58:40 +0000 (05:58 +0200)]
Rollup merge of #90066 - yaahc:thinbox, r=joshtriplett

Add new ThinBox type for 1 stack pointer wide heap allocated trait objects

**Zulip Thread**: https://rust-lang.zulipchat.com/#narrow/stream/219381-t-libs/topic/ThinBox

Based on https://github.com/matthieu-m/rfc2580/blob/b58d1d3cba0d4b5e859d3617ea2d0943aaa31329/examples/thin.rs

Tracking Issue: https://github.com/rust-lang/rust/issues/92791

Usage Trial: https://github.com/yaahc/pgx/pull/1/files

## TODO

- [x] make sure to test with #[repr(align(1024))] structs etc

2 years agoMake non-power-of-two alignments a validity error in `Layout`
Scott McMurray [Sun, 27 Mar 2022 07:06:26 +0000 (00:06 -0700)]
Make non-power-of-two alignments a validity error in `Layout`

Inspired by the zulip conversation about how `Layout` should better enforce `size < isize::MAX as usize`, this uses an N-variant enum on N-bit platforms to require at the validity level that the existing invariant of "must be a power of two" is upheld.

This was MIRI can catch it, and means there's a more-specific type for `Layout` to store than just `NonZeroUsize`.

2 years agoAuto merge of #95524 - oli-obk:cached_stable_hash_cleanups, r=nnethercote
bors [Sat, 9 Apr 2022 02:31:24 +0000 (02:31 +0000)]
Auto merge of #95524 - oli-obk:cached_stable_hash_cleanups, r=nnethercote

Cached stable hash cleanups

r? `@nnethercote`

Add a sanity assertion in debug mode to check that the cached hashes are actually the ones we get if we compute the hash each time.

Add a new data structure that bundles all the hash-caching work to make it easier to re-use it for different interned data structures

2 years agoRemove explicit delimiter token trees from `Delimited`.
Nicholas Nethercote [Fri, 8 Apr 2022 07:38:28 +0000 (17:38 +1000)]
Remove explicit delimiter token trees from `Delimited`.

They were introduced by the final commit in #95159 and gave a
performance win. But since the introduction of `MatcherLoc` they are no
longer needed. This commit reverts that change, making the code a bit
simpler.

2 years agoAuto merge of #95815 - RalfJung:miri, r=RalfJung
bors [Fri, 8 Apr 2022 23:41:26 +0000 (23:41 +0000)]
Auto merge of #95815 - RalfJung:miri, r=RalfJung

update Miri

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

2 years agoAuto merge of #95519 - oli-obk:tait_ub2, r=compiler-errors
bors [Fri, 8 Apr 2022 20:45:16 +0000 (20:45 +0000)]
Auto merge of #95519 - oli-obk:tait_ub2, r=compiler-errors

Enforce well formedness for type alias impl trait's hidden type

fixes #84657

This was not an issue with return-position-impl-trait because the generic bounds of the function are the same as those of the opaque type, and the hidden type must already be well formed within the function.

With type-alias-impl-trait the hidden type could be defined in a function that has *more* lifetime bounds than the type alias. This is fine, but the hidden type must still be well formed without those additional bounds.

2 years agobump rls and racer
Pietro Albini [Mon, 4 Apr 2022 14:04:37 +0000 (16:04 +0200)]
bump rls and racer

2 years agoupdate Miri
Ralf Jung [Fri, 8 Apr 2022 16:02:05 +0000 (12:02 -0400)]
update Miri

2 years agoAdd ThinBox type for 1 stack pointer sized heap allocated trait objects
Jane Lusby [Tue, 19 Oct 2021 22:23:19 +0000 (15:23 -0700)]
Add ThinBox type for 1 stack pointer sized heap allocated trait objects

Relevant commit messages from squashed history in order:

Add initial version of ThinBox

update test to actually capture failure

swap to middle ptr impl based on matthieu-m's design

Fix stack overflow in debug impl

The previous version would take a `&ThinBox<T>` and deref it once, which
resulted in a no-op and the same type, which it would then print causing
an endless recursion. I've switched to calling `deref` by name to let
method resolution handle deref the correct number of times.

I've also updated the Drop impl for good measure since it seemed like it
could be falling prey to the same bug, and I'll be adding some tests to
verify that the drop is happening correctly.

add test to verify drop is behaving

add doc examples and remove unnecessary Pointee bounds

ThinBox: use NonNull

ThinBox: tests for size

Apply suggestions from code review

Co-authored-by: Alphyr <47725341+a1phyr@users.noreply.github.com>
use handle_alloc_error and fix drop signature

update niche and size tests

add cfg for allocating APIs

check null before calculating offset

add test for zst and trial usage

prevent optimizer induced ub in drop and cleanup metadata gathering

account for arbitrary size and alignment metadata

Thank you nika and thomcc!

Update library/alloc/src/boxed/thin.rs

Co-authored-by: Josh Triplett <josh@joshtriplett.org>
Update library/alloc/src/boxed/thin.rs

Co-authored-by: Josh Triplett <josh@joshtriplett.org>
2 years agoAvoid looking at the internals of Interned directly
Oli Scherer [Fri, 8 Apr 2022 15:57:44 +0000 (15:57 +0000)]
Avoid looking at the internals of Interned directly

2 years agoSplit `fuzzy_provenance_casts` into lossy and fuzzy, feature gate and test it
niluxv [Sat, 2 Apr 2022 19:07:00 +0000 (21:07 +0200)]
Split `fuzzy_provenance_casts` into lossy and fuzzy, feature gate and test it

* split `fuzzy_provenance_casts` into a ptr2int and a int2ptr lint
* feature gate both lints
* update documentation to be more realistic short term
* add tests for these lints

2 years agoWIP PROOF-OF-CONCEPT: Make the compiler complain about all int<->ptr casts.
Aria Beingessner [Mon, 21 Mar 2022 23:25:44 +0000 (19:25 -0400)]
WIP PROOF-OF-CONCEPT: Make the compiler complain about all int<->ptr casts.

ALL

OF

THEM

2 years agouse `format-args-capture` and remove unnecessary nested blocks
Takayuki Maeda [Fri, 8 Apr 2022 15:01:40 +0000 (00:01 +0900)]
use `format-args-capture` and remove unnecessary nested blocks

2 years agoAdd test for empty doc comments with a backline
Guillaume Gomez [Fri, 8 Apr 2022 13:30:53 +0000 (15:30 +0200)]
Add test for empty doc comments with a backline

2 years agoFix invalid array access in `beautify_doc_string`
Guillaume Gomez [Fri, 8 Apr 2022 13:30:37 +0000 (15:30 +0200)]
Fix invalid array access in `beautify_doc_string`

2 years agoAuto merge of #95772 - flip1995:clippyup, r=Manishearth,flip1995
bors [Fri, 8 Apr 2022 13:22:07 +0000 (13:22 +0000)]
Auto merge of #95772 - flip1995:clippyup, r=Manishearth,flip1995

Update Clippy

r? `@Manishearth`

2 years agofix some unused constant warning on some Windows targets
Ralf Jung [Fri, 8 Apr 2022 12:36:43 +0000 (08:36 -0400)]
fix some unused constant warning on some Windows targets

2 years agoAuto merge of #95798 - Dylan-DPC:rollup-51hx1wl, r=Dylan-DPC
bors [Fri, 8 Apr 2022 10:41:10 +0000 (10:41 +0000)]
Auto merge of #95798 - Dylan-DPC:rollup-51hx1wl, r=Dylan-DPC

Rollup of 7 pull requests

Successful merges:

 - #95102 (Add known-bug for #95034)
 - #95579 (Add `<[[T; N]]>::flatten{_mut}`)
 - #95634 (Mailmap update)
 - #95705 (Promote x86_64-unknown-none target to Tier 2 and distribute build artifacts)
 - #95761 (Kickstart the inner usage of `macro_metavar_expr`)
 - #95782 (Windows: Increase a pipe's buffer capacity to 64kb)
 - #95791 (hide an #[allow] directive from the Arc::new_cyclic doc example)

Failed merges:

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

2 years agoRollup merge of #95791 - oconnor663:doc_comment, r=thomcc
Dylan DPC [Fri, 8 Apr 2022 09:48:26 +0000 (11:48 +0200)]
Rollup merge of #95791 - oconnor663:doc_comment, r=thomcc

hide an #[allow] directive from the Arc::new_cyclic doc example

A minor docs cleanup.

2 years agoRollup merge of #95782 - ChrisDenton:pipe-buffer-size, r=thomcc
Dylan DPC [Fri, 8 Apr 2022 09:48:25 +0000 (11:48 +0200)]
Rollup merge of #95782 - ChrisDenton:pipe-buffer-size, r=thomcc

Windows: Increase a pipe's buffer capacity to 64kb

This brings it inline with typical Linux defaults: https://www.man7.org/linux/man-pages/man7/pipe.7.html

> Since Linux 2.6.11, the pipe capacity is 16 pages (i.e., 65,536 bytes in a system with a page size of 4096 bytes).

This may also help with #45572 and #95759 but does not fix either issue. It simply makes them much less likely to be encountered.

2 years agoRollup merge of #95761 - c410-f3r:meta-var-stuff, r=petrochenkov
Dylan DPC [Fri, 8 Apr 2022 09:48:24 +0000 (11:48 +0200)]
Rollup merge of #95761 - c410-f3r:meta-var-stuff, r=petrochenkov

Kickstart the inner usage of `macro_metavar_expr`

There can be more use-cases but I am out of ideas.

cc #83527
r? ``@petrochenkov``

2 years agoRollup merge of #95705 - bstrie:x86nonetier, r=Mark-Simulacrum
Dylan DPC [Fri, 8 Apr 2022 09:48:23 +0000 (11:48 +0200)]
Rollup merge of #95705 - bstrie:x86nonetier, r=Mark-Simulacrum

Promote x86_64-unknown-none target to Tier 2 and distribute build artifacts

This implements https://github.com/rust-lang/compiler-team/issues/499 , in which the compiler team accepted the x86_64-unknown-none target for promotion to a Tier 2 platform.

2 years agoRollup merge of #95634 - dtolnay:mailmap, r=Mark-Simulacrum
Dylan DPC [Fri, 8 Apr 2022 09:48:22 +0000 (11:48 +0200)]
Rollup merge of #95634 - dtolnay:mailmap, r=Mark-Simulacrum

Mailmap update

I noticed there are a lot of contributors who appear multiple times in https://thanks.rust-lang.org/rust/all-time/, which makes their "rank" on that page inaccurate. For example Nick Cameron currently appears at rank 21 with 2010 contributions and at rank 27 with 1287 contributions, because some of those are from nrc&#8288;```@ncameron.org``` and some from ncameron&#8288;```@mozilla.com.``` In reality Nick's rank would be 11 if counted correctly, which is a large difference.

Solving this in a totally automated way is tricky because it involves figuring out whether Nick is 1 person with multiple emails, or is 2 people sharing the same name.

This PR addresses a subset of the cases: only where a person has committed under multiple names using the same email. This is still not something that can be totally automated (e.g. by modifying https://github.com/rust-lang/thanks to dedup by email instead of name+email) because:

- Some emails are not necessarily unique to one contributor, such as `ubuntu@localhost`.

- It involves some judgement and mindfulness in picking the "canonical name" among the names used with a particular email. This is the name that will appear on thanks.rust-lang.org. Humans change their names sometimes and can be sensitive or picky about the use of names that are no longer preferred.

For the purpose of this PR, I've tried to stick to the following heuristics which should be unobjectionable:

- If one of the names is currently set as the display name on the contributor's GitHub profile, prefer that name.

- If one of the names is used exclusively over the others in chronologically newer pull requests, prefer the newest name.

- If one of the names has whitespace and the other doesn't (i.e. is username-like), such as `Foo Bar` vs `FooBar` or `foobar` or `foo-bar123`, but otherwise closely resemble one another, then prefer the human-like name.

- If none of the above suffice in determining a canonical name and the contributor has some other name set on their GitHub profile, use the name from the GitHub profile.

- If no name on their GitHub profile but the profile links to their personal website which unambiguously identifies their preferred name, then use that name.

I'm also thinking about how to handle cases like Nick's, but that will be a project for a different PR. Basically I'd like to be able to find cases of the same person making commits that differ in name *and* email by looking at all the commits present in pull requests opened by the same GitHub user.

<details>
<summary>script</summary>

```toml
[dependencies]
anyhow = "1.0"
git2 = "0.14"
mailmap = "0.1"
```
```rust
use anyhow::{bail, Context, Result};
use git2::{Commit, Oid, Repository};
use mailmap::{Author, Mailmap};
use std::collections::{BTreeMap as Map, BTreeSet as Set};
use std::fmt::{self, Debug};
use std::fs;
use std::path::Path;

const REPO: &str = "/git/rust";

fn main() -> Result<()> {
    let repo = Repository::open(REPO)?;
    let head_oid = repo
        .head()?
        .target()
        .context("expected head to be a direct reference")?;
    let head = repo.find_commit(head_oid)?;

    let mailmap_path = Path::new(REPO).join(".mailmap");
    let mailmap_contents = fs::read_to_string(mailmap_path)?;
    let mailmap = match Mailmap::from_string(mailmap_contents) {
        Ok(mailmap) => mailmap,
        Err(box_error) => bail!("{}", box_error),
    };

    let mut history = Set::new();
    let mut merges = Vec::new();
    let mut authors = Set::new();
    let mut emails = Map::new();
    let mut all_authors = Set::new();
    traverse_left(head, &mut history, &mut merges, &mut authors, &mailmap)?;
    while let Some((commit, i)) = merges.pop() {
        let right = commit.parents().nth(i).unwrap();
        authors.clear();
        traverse_left(right, &mut history, &mut merges, &mut authors, &mailmap)?;
        for author in &authors {
            all_authors.insert(author.clone());
            if !author.email.is_empty() {
                emails
                    .entry(author.email.clone())
                    .or_insert_with(Map::new)
                    .entry(author.name.clone())
                    .or_insert_with(Set::new);
            }
        }
        if let Some(summary) = commit.summary() {
            if let Some(pr) = parse_summary(summary)? {
                for author in &authors {
                    if !author.email.is_empty() {
                        emails
                            .get_mut(&author.email)
                            .unwrap()
                            .get_mut(&author.name)
                            .unwrap()
                            .insert(pr);
                    }
                }
            }
        }
    }

    for (email, names) in emails {
        if names.len() > 1 {
            println!("<{}>", email);
            for (name, prs) in names {
                let prs = DebugSet(prs.iter().rev());
                println!("    {} {:?}", name, prs);
            }
        }
    }

    eprintln!("{} commits", history.len());
    eprintln!("{} authors", all_authors.len());
    Ok(())
}

fn traverse_left<'repo>(
    mut commit: Commit<'repo>,
    history: &mut Set<Oid>,
    merges: &mut Vec<(Commit<'repo>, usize)>,
    authors: &mut Set<Author>,
    mailmap: &Mailmap,
) -> Result<()> {
    loop {
        let oid = commit.id();
        if !history.insert(oid) {
            return Ok(());
        }
        let author = author(mailmap, &commit);
        let is_bors = author.name == "bors" && author.email == "bors@rust-lang.org";
        if !is_bors {
            authors.insert(author);
        }
        let mut parents = commit.parents();
        let parent = match parents.next() {
            Some(parent) => parent,
            None => return Ok(()),
        };
        for i in 1..1 + parents.len() {
            merges.push((commit.clone(), i));
        }
        commit = parent;
    }
}

fn parse_summary(summary: &str) -> Result<Option<PullRequest>> {
    let mut rest = None;
    for prefix in [
        "Auto merge of #",
        "Merge pull request #",
        " Manual merge of #",
        "auto merge of #",
        "auto merge of pull req #",
        "rollup merge of #",
        "Rollup merge of #",
        "Rollup merge of  #",
        "Rollup merge of ",
        "Merge PR #",
        "Merge #",
        "Merged #",
    ] {
        if summary.starts_with(prefix) {
            rest = Some(&summary[prefix.len()..]);
            break;
        }
    }
    let rest = match rest {
        Some(rest) => rest,
        None => return Ok(None),
    };
    let end = rest.find([' ', ':']).unwrap_or(rest.len());
    let number = match rest[..end].parse::<u32>() {
        Ok(number) => number,
        Err(err) => {
            eprintln!("{}", summary);
            bail!(err);
        }
    };
    Ok(Some(PullRequest(number)))
}

fn author(mailmap: &Mailmap, commit: &Commit) -> Author {
    let signature = commit.author();
    let name = String::from_utf8_lossy(signature.name_bytes()).into_owned();
    let email = String::from_utf8_lossy(signature.email_bytes()).into_owned();
    mailmap.canonicalize(&Author { name, email })
}

#[derive(Copy, Clone, Ord, PartialOrd, Eq, PartialEq)]
struct PullRequest(u32);

impl Debug for PullRequest {
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
        write!(formatter, "#{}", self.0)
    }
}

struct DebugSet<T>(T);

impl<T> Debug for DebugSet<T>
where
    T: Iterator + Clone,
    T::Item: Debug,
{
    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
        formatter.debug_set().entries(self.0.clone()).finish()
    }
}
```
</details>

2 years agoRollup merge of #95579 - Cyborus04:slice_flatten, r=scottmcm
Dylan DPC [Fri, 8 Apr 2022 09:48:21 +0000 (11:48 +0200)]
Rollup merge of #95579 - Cyborus04:slice_flatten, r=scottmcm

Add `<[[T; N]]>::flatten{_mut}`

Adds `flatten` to convert `&[[T; N]]` to `&[T]` (and `flatten_mut` for `&mut [[T; N]]` to `&mut [T]`)

2 years agoRollup merge of #95102 - compiler-errors:issue-94034-bug, r=jackh726
Dylan DPC [Fri, 8 Apr 2022 09:48:21 +0000 (11:48 +0200)]
Rollup merge of #95102 - compiler-errors:issue-94034-bug, r=jackh726

Add known-bug for #95034

Couldn't fix the issue, since I am no type theorist and inference variables in universes above U0 scare me. But I at least wanted to add a known-bug test for it.

cc #95034 (does not fix)

2 years agoUpdate Cargo.lock
flip1995 [Fri, 8 Apr 2022 09:41:55 +0000 (10:41 +0100)]
Update Cargo.lock

2 years agoMerge commit '984330a6ee3c4d15626685d6dc8b7b759ff630bd' into clippyup
flip1995 [Thu, 7 Apr 2022 17:39:59 +0000 (18:39 +0100)]
Merge commit '984330a6ee3c4d15626685d6dc8b7b759ff630bd' into clippyup

2 years agocheck_doc_keyword: don't alloc string for emptiness check
klensy [Tue, 5 Apr 2022 12:52:53 +0000 (15:52 +0300)]
check_doc_keyword: don't alloc string for emptiness check

check_doc_alias_value: get argument as Symbol to prevent needless string convertions

check_doc_attrs: don't alloc vec, iterate over slice. Vec introduced in #83149, but no perf run posted on merge

replace as_str() check with symbol check

get_single_str_from_tts: don't prealloc string

trivial string to str replace

LifetimeScopeForPath::NonElided use Vec<Symbol> instead of Vec<String>

AssertModuleSource use BTreeSet<Symbol> instead of BTreeSet<String>

CrateInfo.crate_name replace FxHashMap<CrateNum, String> with FxHashMap<CrateNum, Symbol>

2 years agoAuto merge of #95775 - RalfJung:miri-windows-compat, r=ChrisDenton
bors [Fri, 8 Apr 2022 08:13:21 +0000 (08:13 +0000)]
Auto merge of #95775 - RalfJung:miri-windows-compat, r=ChrisDenton

make windows compat_fn (crudely) work on Miri

With https://github.com/rust-lang/rust/pull/95469, Windows `compat_fn!` now has to be supported by Miri to even make stdout work. Unfortunately, it relies on some outside-of-Rust linker hacks (`#[link_section = ".CRT$XCU"]`) that are rather hard to make work in Miri. So I came up with this crude hack to make this stuff work in Miri regardless. It should come at no cost for regular executions, so I hope this is okay.

Cc https://github.com/rust-lang/rust/issues/95627 `@ChrisDenton`

2 years agoAuto merge of #95440 - jyn514:error-index, r=Mark-Simulacrum
bors [Fri, 8 Apr 2022 05:43:25 +0000 (05:43 +0000)]
Auto merge of #95440 - jyn514:error-index, r=Mark-Simulacrum

Fix `x test src/tools/error_index_generator --stage {0,1}`

There were two fixes needed:
1. Use `top_stage` instead of `top_stage - 1`. There was a long and torturous comment about trying to match rustdoc's version, but it works better without the hard-coding than with (before it gave errors that `libtest.so` couldn't be found).
2. Make sure that `ci-llvm/lib` is added to LD_LIBRARY_PATH. Previously the error index would be unable to load LLVM for stage0 builds.

At some point we should probably have a discussion about how rustdoc stages should be numbered;
confusion between 0/1/2 has come up several times in bootstrap now. cc https://github.com/rust-lang/rust/issues/92538

Note that this is still broken when using `download-rustc = true` and `--stage 1`,
but that's *really* a corner case and should affect almost no one. `--stage {0,2}`
work fine with download-rustc.

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

2 years agoadd `<[[T; N]]>::flatten`, `<[[T; N]]>::flatten_mut`, and `Vec::<[T; N]>::into_flattened`
Cyborus04 [Sat, 2 Apr 2022 00:07:28 +0000 (20:07 -0400)]
add `<[[T; N]]>::flatten`, `<[[T; N]]>::flatten_mut`, and `Vec::<[T; N]>::into_flattened`

2 years agoPromote x86_64-unknown-none to Tier 2
bstrie [Tue, 5 Apr 2022 21:47:40 +0000 (17:47 -0400)]
Promote x86_64-unknown-none to Tier 2

2 years agohide an #[allow] directive from the Arc::new_cyclic doc example
Jack O'Connor [Fri, 8 Apr 2022 00:56:06 +0000 (17:56 -0700)]
hide an #[allow] directive from the Arc::new_cyclic doc example

2 years agoreword panic vs result section to remove recoverable vs unrecoverable framing
Jane Lusby [Thu, 7 Apr 2022 20:44:57 +0000 (13:44 -0700)]
reword panic vs result section to remove recoverable vs unrecoverable framing

2 years agointerpret: err instead of ICE on size mismatches in to_bits_or_ptr_internal
Ralf Jung [Thu, 7 Apr 2022 20:22:09 +0000 (16:22 -0400)]
interpret: err instead of ICE on size mismatches in to_bits_or_ptr_internal

2 years agoAuto merge of #95767 - oli-obk:all_your_generics_belong_to_the_definitions, r=compile...
bors [Thu, 7 Apr 2022 19:37:43 +0000 (19:37 +0000)]
Auto merge of #95767 - oli-obk:all_your_generics_belong_to_the_definitions, r=compiler-errors

Report opaque type mismatches directly during borrowck of the function instead of within the `type_of` query.

This allows us to only store a single hidden type per opaque type instead of having to store one per set of substitutions.

r? `@compiler-errors`

This does not affect diagnostics, because the diagnostic messages are exactly the same.

2 years agoWindows: Increase a pipe's buffer capacity to 64kb
Chris Denton [Thu, 7 Apr 2022 19:15:16 +0000 (20:15 +0100)]
Windows: Increase a pipe's buffer capacity to 64kb

This brings it inline with typical Linux defaults: https://www.man7.org/linux/man-pages/man7/pipe.7.html

2 years agodo not round-trip function pointer through integer
Ralf Jung [Thu, 7 Apr 2022 18:58:02 +0000 (14:58 -0400)]
do not round-trip function pointer through integer

2 years agoHide cross-crate doc-hidden assoc items in trait impls
León Orell Valerian Liehr [Thu, 7 Apr 2022 14:50:51 +0000 (16:50 +0200)]
Hide cross-crate doc-hidden assoc items in trait impls

2 years agomake windows compat_fn (crudely) work on Miri
Ralf Jung [Thu, 7 Apr 2022 18:07:02 +0000 (14:07 -0400)]
make windows compat_fn (crudely) work on Miri

2 years agoAuto merge of #8657 - flip1995:raw_lint_desc, r=flip1995
bors [Thu, 7 Apr 2022 17:11:26 +0000 (17:11 +0000)]
Auto merge of #8657 - flip1995:raw_lint_desc, r=flip1995

Allow raw lint descriptions

update_lints now understands raw strings in declare_clippy_lint descriptions.

Supersedes  #8655

cc `@Alexendoo` thanks for addressing this so quickly. I build a little bit simpler version of your patch. I don't think it really matters what `Literal` we're trying to tokenize, since we assume later, that it is some sort of `str`.

changelog: none

2 years agoAllow raw lint descriptions
flip1995 [Thu, 7 Apr 2022 17:05:20 +0000 (18:05 +0100)]
Allow raw lint descriptions

update_lints now understands raw strings in declare_clippy_lint
descriptions.

Co-authored-by: Alex Macleod <alex@macleod.io>
2 years agoAuto merge of #95706 - petrochenkov:doclink4, r=GuillaumeGomez
bors [Thu, 7 Apr 2022 15:33:22 +0000 (15:33 +0000)]
Auto merge of #95706 - petrochenkov:doclink4, r=GuillaumeGomez

rustdoc: Early doc link resolution fixes and refactorings

A subset of https://github.com/rust-lang/rust/pull/94857 that shouldn't cause perf regressions, but should fix some issues like https://rust-lang.zulipchat.com/#narrow/stream/266220-rustdoc/topic/ICE.20in.20collect_intra_doc_links.2Ers https://github.com/rust-lang/rust/pull/95290 and improve performance in cases like https://github.com/rust-lang/rust/issues/95694.

2 years agoAuto merge of #8656 - flip1995:rustup, r=flip1995
bors [Thu, 7 Apr 2022 15:30:27 +0000 (15:30 +0000)]
Auto merge of #8656 - flip1995:rustup, r=flip1995

Rustup

r? `@ghost`

changelog: none

2 years agoBump changelog stable version -> 1.60
flip1995 [Thu, 7 Apr 2022 15:26:43 +0000 (16:26 +0100)]
Bump changelog stable version -> 1.60

2 years agoBump nightly version -> 2022-04-07
flip1995 [Thu, 7 Apr 2022 15:24:55 +0000 (16:24 +0100)]
Bump nightly version -> 2022-04-07

2 years agoBump Clippy Version -> 0.1.62
flip1995 [Thu, 7 Apr 2022 15:24:33 +0000 (16:24 +0100)]
Bump Clippy Version -> 0.1.62

2 years agoFix internal::INVALID_PATHS lint
flip1995 [Thu, 7 Apr 2022 15:24:10 +0000 (16:24 +0100)]
Fix internal::INVALID_PATHS lint

2 years agoMerge remote-tracking branch 'upstream/master' into rustup
flip1995 [Thu, 7 Apr 2022 14:44:37 +0000 (15:44 +0100)]
Merge remote-tracking branch 'upstream/master' into rustup

2 years agoDeduplicate the error printing code for hidden type mismatches
Oli Scherer [Thu, 7 Apr 2022 13:52:59 +0000 (13:52 +0000)]
Deduplicate the error printing code for hidden type mismatches

2 years agoReport opaque type mismatches directly during borrowck of the function instead of...
Oli Scherer [Thu, 7 Apr 2022 13:39:38 +0000 (13:39 +0000)]
Report opaque type mismatches directly during borrowck of the function instead of within the `type_of` query.

This allows us to only store a single hidden type per opaque type instead of having to store one per set of substitutions.

2 years agoAuto merge of #8635 - pbor:unsigned-abs, r=giraffate
bors [Thu, 7 Apr 2022 13:17:28 +0000 (13:17 +0000)]
Auto merge of #8635 - pbor:unsigned-abs, r=giraffate

Add a lint to detect cast to unsigned for abs() and suggest unsigned_…

…abs()

changelog: Add a [`cast_abs_to_unsigned`] that checks for uses of `abs()` that are cast to the corresponding unsigned integer type and suggest to replace them with `unsigned_abs()`.

2 years agoDocument and rename the new wrapper type
Oli Scherer [Tue, 5 Apr 2022 16:42:47 +0000 (16:42 +0000)]
Document and rename the new wrapper type

2 years agoAuto merge of #8646 - Alexendoo:option-as-deref-mut, r=giraffate
bors [Thu, 7 Apr 2022 13:00:15 +0000 (13:00 +0000)]
Auto merge of #8646 - Alexendoo:option-as-deref-mut, r=giraffate

Fix `as_deref_mut` false positives in `needless_option_as_deref`

Also moves it into `methods/`

Fixes #7846
Fixes #8047

changelog: [`needless_option_as_deref`]: No longer lints for `as_deref_mut` on Options that cannot be moved

supersedes #8064

2 years agoAuto merge of #95715 - nnethercote:shrink-Nonterminal, r=davidtwco
bors [Thu, 7 Apr 2022 12:52:32 +0000 (12:52 +0000)]
Auto merge of #95715 - nnethercote:shrink-Nonterminal, r=davidtwco

Shrink `Nonterminal`

Small consistency and performance improvements.

r? `@petrochenkov`

2 years ago[macro_metavar_expr] Add tests to ensure the feature requirement
Caio [Thu, 7 Apr 2022 12:32:02 +0000 (09:32 -0300)]
[macro_metavar_expr] Add tests to ensure the feature requirement

2 years agoFix `as_deref_mut` false positives in `needless_option_as_deref`
Alex Macleod [Wed, 6 Apr 2022 14:35:49 +0000 (15:35 +0100)]
Fix `as_deref_mut` false positives in `needless_option_as_deref`

Also moves the lint to the methods directory

2 years agoKickstart the inner usage of macro_metavar_expr
Caio [Thu, 7 Apr 2022 11:13:41 +0000 (08:13 -0300)]
Kickstart the inner usage of macro_metavar_expr

2 years agoAuto merge of #95760 - Dylan-DPC:rollup-uskzggh, r=Dylan-DPC
bors [Thu, 7 Apr 2022 09:50:11 +0000 (09:50 +0000)]
Auto merge of #95760 - Dylan-DPC:rollup-uskzggh, r=Dylan-DPC

Rollup of 4 pull requests

Successful merges:

 - #95189 (Stop flagging unexpected inner attributes as outer ones in certain diagnostics)
 - #95752 (Regression test for #82866)
 - #95753 (Correct safety reasoning in `str::make_ascii_{lower,upper}case()`)
 - #95757 (Use gender neutral terms)

Failed merges:

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

2 years agoconf: fix lint name in comment
Paolo Borelli [Thu, 7 Apr 2022 09:29:02 +0000 (11:29 +0200)]
conf: fix lint name in comment

The lint name is ERR_EXPECT, not EXPECT_ERR

2 years agonew lint cast_abs_to_unsigned
Paolo Borelli [Mon, 4 Apr 2022 16:38:38 +0000 (18:38 +0200)]
new lint cast_abs_to_unsigned

Add a lint to detect cast to unsigned for abs() and suggest
unsigned_abs() to avoid panic when called on MIN.

2 years agoRollup merge of #95757 - zofrex:gender-neutral-terms, r=dtolnay
Dylan DPC [Thu, 7 Apr 2022 09:17:17 +0000 (11:17 +0200)]
Rollup merge of #95757 - zofrex:gender-neutral-terms, r=dtolnay

Use gender neutral terms

#95508 was not executed well, but it did find a couple of legitimate issues: some uses of unnecessarily gendered language, and some typos. This PR fixes (properly) the legitimate issues it found.

2 years agoRollup merge of #95753 - ChayimFriedman2:patch-1, r=dtolnay
Dylan DPC [Thu, 7 Apr 2022 09:17:16 +0000 (11:17 +0200)]
Rollup merge of #95753 - ChayimFriedman2:patch-1, r=dtolnay

Correct safety reasoning in `str::make_ascii_{lower,upper}case()`

I don't understand why the previous comment was used (it was inserted in #66564), but it doesn't explain why these functions are safe, only why `str::as_bytes{_mut}()` are safe.

If someone thinks they make perfect sense, I'm fine with closing this PR.

2 years agoRollup merge of #95752 - compiler-errors:issue-82866, r=Dylan-DPC
Dylan DPC [Thu, 7 Apr 2022 09:17:14 +0000 (11:17 +0200)]
Rollup merge of #95752 - compiler-errors:issue-82866, r=Dylan-DPC

Regression test for #82866

Saw that this issue was open when i was cleaning my old branch for #92237.
I am also not opposed to not adding an extra test and just closing #82866.

Fixes #82866

2 years agoRollup merge of #95189 - fmease:fix-issue-94340, r=estebank
Dylan DPC [Thu, 7 Apr 2022 09:17:13 +0000 (11:17 +0200)]
Rollup merge of #95189 - fmease:fix-issue-94340, r=estebank

Stop flagging unexpected inner attributes as outer ones in certain diagnostics

Fixes #94340.

In the issue to-be-fixed I write that the general message _an inner attribute is not permitted in this context_ should be more specific noting that the “context” is the `include` macro. This, however, cannot be achieved without touching a lot of things and passing a flag to the `parse_expr` and `parse_item` calls in `expand_include`. This seems rather hacky to me. That's why I left it as it. `Span::from_expansion` does not apply either AFAIK.

`@rustbot` label A-diagnostics T-compiler

2 years agoUse gender neutral terms
James 'zofrex' Sanderson [Thu, 7 Apr 2022 07:51:59 +0000 (08:51 +0100)]
Use gender neutral terms

2 years agoUpdate rustc-perf version used in CI and also the corresponding PGO benchmarks
Jakub Beránek [Wed, 6 Apr 2022 07:26:48 +0000 (09:26 +0200)]
Update rustc-perf version used in CI and also the corresponding PGO benchmarks

2 years agoAuto merge of #95678 - pietroalbini:pa-1.62.0-bootstrap, r=Mark-Simulacrum
bors [Thu, 7 Apr 2022 07:34:04 +0000 (07:34 +0000)]
Auto merge of #95678 - pietroalbini:pa-1.62.0-bootstrap, r=Mark-Simulacrum

Bump bootstrap compiler to 1.61.0 beta

This PR bumps the bootstrap compiler to the 1.61.0 beta. The first commit changes the stage0 compiler, the second commit applies the "mechanical" changes and the third and fourth commits apply changes explained in the relevant comments.

r? `@Mark-Simulacrum`

2 years agoAuto merge of #95748 - Dylan-DPC:rollup-t208j51, r=Dylan-DPC
bors [Thu, 7 Apr 2022 05:12:08 +0000 (05:12 +0000)]
Auto merge of #95748 - Dylan-DPC:rollup-t208j51, r=Dylan-DPC

Rollup of 5 pull requests

Successful merges:

 - #95352 ([bootstrap] Print the full relative path to failed tests)
 - #95646 (Mention `std::env::var` in `env!`)
 - #95708 (Update documentation for `trim*` and `is_whitespace` to include newlines)
 - #95714 (Add test for issue #83474)
 - #95725 (Message: Chunks cannot have a size of zero.)

Failed merges:

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

2 years agoCorrect safety reasoning in `str::make_ascii_{lower,upper}case()`
Chayim Refael Friedman [Thu, 7 Apr 2022 04:52:07 +0000 (07:52 +0300)]
Correct safety reasoning in `str::make_ascii_{lower,upper}case()`

2 years agoregression test for #82866
Michael Goulet [Thu, 7 Apr 2022 04:43:34 +0000 (21:43 -0700)]
regression test for #82866

2 years agodon't report int/float ambiguity when we have previous errors
Michael Goulet [Thu, 7 Apr 2022 04:27:46 +0000 (21:27 -0700)]
don't report int/float ambiguity when we have previous errors

2 years agoRollup merge of #95725 - hkBst:patch-1, r=Dylan-DPC
Dylan DPC [Thu, 7 Apr 2022 04:04:54 +0000 (06:04 +0200)]
Rollup merge of #95725 - hkBst:patch-1, r=Dylan-DPC

Message: Chunks cannot have a size of zero.

Add a message to the assertion that chunks cannot have a size of zero.

2 years agoRollup merge of #95714 - KSBilodeau:master, r=Dylan-DPC
Dylan DPC [Thu, 7 Apr 2022 04:04:54 +0000 (06:04 +0200)]
Rollup merge of #95714 - KSBilodeau:master, r=Dylan-DPC

Add test for issue #83474

Adds test for https://github.com/rust-lang/rust/issues/83474 - second attempt at PR https://github.com/rust-lang/rust/pull/91821 which was abandoned.

2 years agoRollup merge of #95708 - fee1-dead:doc_whitespace_trim, r=Dylan-DPC
Dylan DPC [Thu, 7 Apr 2022 04:04:52 +0000 (06:04 +0200)]
Rollup merge of #95708 - fee1-dead:doc_whitespace_trim, r=Dylan-DPC

Update documentation for `trim*` and `is_whitespace` to include newlines

2 years agoRollup merge of #95646 - mgeisler:mention-std-env-var, r=Dylan-DPC
Dylan DPC [Thu, 7 Apr 2022 04:04:52 +0000 (06:04 +0200)]
Rollup merge of #95646 - mgeisler:mention-std-env-var, r=Dylan-DPC

Mention `std::env::var` in `env!`

When searching for how to read an environment variable, I first encountered the `env!` macro. It would have been useful to me if the documentation had included a link to `std::env::var`, which is what I was actually looking for.

2 years agoRollup merge of #95352 - jyn514:full-relative-path, r=Mark-Simulacrum
Dylan DPC [Thu, 7 Apr 2022 04:04:51 +0000 (06:04 +0200)]
Rollup merge of #95352 - jyn514:full-relative-path, r=Mark-Simulacrum

[bootstrap] Print the full relative path to failed tests

Before:
```
failures:
    [ui] rustdoc-ui/intra-doc/feature-gate-intra-doc-pointers.rs

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 163 filtered out; finished in 0.45s
```

After:
```
failures:
    [ui] src/test/rustdoc-ui/intra-doc/feature-gate-intra-doc-pointers.rs

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 163 filtered out; finished in 0.45s
```

This allows copy pasting the path or using Ctrl+Click in IDEs to go directly to the file, instead of having to edit the filename first.

2 years agoShrink `Nonterminal`.
Nicholas Nethercote [Wed, 6 Apr 2022 02:08:39 +0000 (12:08 +1000)]
Shrink `Nonterminal`.

By heap allocating the argument within `NtPath`, `NtVis`, and `NtStmt`.
This slightly reduces cumulative and peak allocation amounts, most
notably on `deep-vector`.

2 years agoUpdate library/core/src/slice/mod.rs
Dylan DPC [Thu, 7 Apr 2022 02:44:30 +0000 (04:44 +0200)]
Update library/core/src/slice/mod.rs

Co-authored-by: Janusz Marcinkiewicz <virrages@gmail.com>
2 years agoremove exclamation mark
Dylan DPC [Thu, 7 Apr 2022 02:44:11 +0000 (04:44 +0200)]
remove exclamation mark

Co-authored-by: Janusz Marcinkiewicz <virrages@gmail.com>