]> git.lizzy.rs Git - rust.git/log
rust.git
3 years agoAuto merge of #86847 - tlyu:stdin-forwarders, r=joshtriplett
bors [Wed, 21 Jul 2021 06:06:37 +0000 (06:06 +0000)]
Auto merge of #86847 - tlyu:stdin-forwarders, r=joshtriplett

add `Stdin::lines`, `Stdin::split` forwarder methods

Add forwarder methods `Stdin::lines` and `Stdin::split`, which consume
and lock a `Stdin` handle, and forward on to the corresponding `BufRead`
methods. This should make it easier for beginners to use those iterator
constructors without explicitly dealing with locks or lifetimes.

Replaces #86412.
~~Based on #86846 to get the tracking issue number for the `stdio_locked` feature.~~ Rebased after merge, so it's only one commit now.

r? `@joshtriplett`
`@rustbot` label +A-io +C-enhancement +D-newcomer-roadblock +T-libs-api

3 years agoAuto merge of #82653 - jyn514:submodules-on-demand, r=Mark-Simulacrum
bors [Wed, 21 Jul 2021 03:36:21 +0000 (03:36 +0000)]
Auto merge of #82653 - jyn514:submodules-on-demand, r=Mark-Simulacrum

Update all submodules that rustbuild doesn't depend on lazily

This only updates the submodules the first time they're needed, instead
of unconditionally the first time you run x.py.

Ideally, this would move *all* submodules to rustbuild and not exclude some tools and
backtrace. Unfortunately, cargo requires all `Cargo.toml` files in the
whole workspace to be present to build any crate.

On my machine, this takes the time for an initial submodule clone (for
`x.py --help`) from 55.70 to 15.87 seconds.

Helps with https://github.com/rust-lang/rust/issues/76653. Builds on https://github.com/rust-lang/rust/pull/86015 and should not be merged before (only the last commit is relevant).

3 years agoUpdate all submodules that rustbuild doesn't depend on lazily
Joshua Nelson [Mon, 1 Mar 2021 04:51:15 +0000 (23:51 -0500)]
Update all submodules that rustbuild doesn't depend on lazily

This only updates the submodules the first time they're needed, instead
of unconditionally the first time you run x.py.

Ideally, this would move *all* submodules and not exclude some tools and
backtrace. Unfortunately, cargo requires all `Cargo.toml` files in the
whole workspace to be present to build any crate.

On my machine, this takes the time for an initial submodule clone (for
`x.py --help`) from 55.70 to 15.87 seconds.

This uses exactly the same logic as the LLVM update used, modulo some
minor cleanups:
- Use a local variable for `src.join(relative_path)`
- Remove unnecessary arrays for `book!` macro and make the macro simpler to use
- Add more comments

3 years agoAuto merge of #87168 - the8472:flatten-len, r=scottmcm
bors [Tue, 20 Jul 2021 23:47:48 +0000 (23:47 +0000)]
Auto merge of #87168 - the8472:flatten-len, r=scottmcm

implement TrustedLen for Flatten/FlatMap if the U: IntoIterator == [T; N]

This only works if arrays are passed directly instead of array iterators
because we need to be sure that they have not been advanced before
Flatten does its size calculation.

resolves #87094

3 years agoAuto merge of #87312 - ehuss:update-books, r=ehuss
bors [Tue, 20 Jul 2021 18:44:35 +0000 (18:44 +0000)]
Auto merge of #87312 - ehuss:update-books, r=ehuss

Update books

## reference

6 commits in ab60513a3a5a0591e237fddff5d027a982648392..82d75cf423e4a7824fb36e73ccb18519d6900610
2021-07-05 08:27:31 -0700 to 2021-07-15 06:49:08 -0700
- fix wording/punctuation in "Lifetime bounds" (rust-lang/reference#1062)
- mention implicit `Sized` bound in more places (rust-lang/reference#1053)
-  (rust-lang/reference#1060)
- Remove inner attributes from non-block expressions. (rust-lang/reference#1051)
- Add note about the sign of the remainder (rust-lang/reference#1073)
- Clarify closure capture modes slightly (rust-lang/reference#1064)

## book

21 commits in a90f07f1e9a7fc75dc9105a6c6f16d5c13edceb0..eac55314210519238652f12b30fec9daea61f7fe
2021-07-05 14:43:12 -0400 to 2021-07-19 11:08:01 -0400
-  (rust-lang/book#2791)
- Add Deref trait to overload the deref operator in appendix table
- Revise linker installation instructions. Fixes rust-lang/book#2151.
- Clarify number literal type suffixes. Fixes rust-lang/book#1979.
- Add a note that lifetimes are coming up but aren't required
- Zip creates an iterator, not a vector. Fixes rust-lang/book#2762.
- Add Thai translation to the appendix. Connects to rust-lang/book#2636
- Derive Copy and Clone for Point to match stdlib docs example; fixes rust-lang/book#2657
- Make the definition of Option match the stdlib's, fixes rust-lang/book#2634
- Explain double quote backslash; closes rust-lang/book#2597
- Don't use the term 'anonymous struct' to fix rust-lang/book#2584
- Reword a sentence to fix rust-lang/book#2525
- Add Hindi translation. Connects to rust-lang/book#2496
- Remove unsafe Ferris designations from code. Fixes rust-lang/book#2555
- Add Traditional Chinese translation. Connects to rust-lang/book#2470
- Remove some more references to the authors field
- Make Appendix E be a link
- fix line wrapping
- remove description about the authors field
- remove the authors field
- remove the authors field

## rust-by-example

6 commits in 028f93a61500fe8f746ee7cc6b204ea6c9f42935..1db6bb483cc87ad3b424d9aba764fe622960a1be
2021-07-06 06:28:53 -0300 to 2021-07-15 06:17:42 -0300
- Updated the file destructure_tuple.md (rust-lang/rust-by-example#1452)
- Fix nomenclature around methods (rust-lang/rust-by-example#1450)
- std_misc/path.md: update `Show` to `Display` (rust-lang/rust-by-example#1449)
- Fix up github action (rust-lang/rust-by-example#1451)
- Remove github pages
- Support GitHub Actions (rust-lang/rust-by-example#1330)

## rustc-dev-guide

2 commits in 60e282559104035985331645907c3d9f842312c5..93422c21baca585dc88357ec886a48f6ddc7d665
2021-07-05 11:21:03 -0400 to 2021-07-13 12:45:58 -0400
- Update for merge of CrateDisambiguator into StableCrateId
- Minor capitalization fix (rust-lang/rustc-dev-guide#1170)

## edition-guide

8 commits in 5d57b3832f8d308a9f478ce0a69799548f27ad4d..af696ce8ea526445590ae0ca66a8128d2a95a69a
2021-07-05 10:33:32 +0200 to 2021-07-20 11:38:03 -0400
- Add migration section for panic-macro-consistency (rust-lang/edition-guide#258)
- Update transitioning chapter. (rust-lang/edition-guide#255)
- Add details on migrating the Cargo feature resolver. (rust-lang/edition-guide#259)
- Improve panic macro consistency summary (rust-lang/edition-guide#256)
- Add migration details to or-patterns guide (rust-lang/edition-guide#252)
- Add migration section to into-iterator (rust-lang/edition-guide#253)
- Add Rust 2021 prelude migration details (rust-lang/edition-guide#251)
- Provide more information about disjoint capture in closures and migration instructions (rust-lang/edition-guide#246)

## embedded-book

1 commits in 506840eb73b0749336e1d5274e16d6393892ee82..09986cd352404eb4659db44613b27cac9aa652fc
2021-06-24 00:01:32 +0000 to 2021-07-18 19:26:46 +0000
- Stop referring to the alloc crate as unstable  (rust-embedded/book#297)

3 years agoUpdate books
Eric Huss [Tue, 20 Jul 2021 16:10:17 +0000 (09:10 -0700)]
Update books

3 years agoAuto merge of #87247 - crlf0710:merge-libterm-into-libtest, r=nagisa
bors [Tue, 20 Jul 2021 16:03:47 +0000 (16:03 +0000)]
Auto merge of #87247 - crlf0710:merge-libterm-into-libtest, r=nagisa

Merge libterm into libtest

I think it's quite clear at this point that rust won't stablize the current libterm APIs to the outside world. And its only user is libtest. The compiler doesn't use this api at all. So I'm merging the crate into libtest as a module.

This also allows me to remove 15% of the libterm code, since these APIs are dead-code now.

3 years agoAuto merge of #87310 - spastorino:update_miri, r=RalfJung
bors [Tue, 20 Jul 2021 13:37:02 +0000 (13:37 +0000)]
Auto merge of #87310 - spastorino:update_miri, r=RalfJung

Update MIRI

Fixes #87306

r? `@RalfJung`

3 years agoUpdate MIRI
Santiago Pastorino [Tue, 20 Jul 2021 12:52:19 +0000 (09:52 -0300)]
Update MIRI

3 years agoAuto merge of #87244 - jackh726:issue-71883, r=estebank
bors [Tue, 20 Jul 2021 10:56:08 +0000 (10:56 +0000)]
Auto merge of #87244 - jackh726:issue-71883, r=estebank

Better diagnostics with mismatched types due to implicit static lifetime

Fixes #78113

I think this is my first diagnostics PR...definitely happy to hear thoughts on the direction/implementation here.

I was originally just trying to solve the error above, where the lifetime on a GAT was causing a cryptic "mismatched types" error. But as I was writing this, I realized that this (unintentionally) also applied to a different case: `wf-in-foreign-fn-decls-issue-80468.rs`. I'm not sure if this diagnostic should get a new error code, or even reuse an existing one. And, there might be some ways to make this even more generalized. Also, the error is a bit more lengthy and verbose than probably needed. So thoughts there are welcome too.

This PR essentially ended up adding a new nice region error pass that triggers if a type doesn't match the self type of an impl which is selected because of a predicate because of an implicit static bound on that self type.

r? `@estebank`

3 years agoAuto merge of #87224 - RalfJung:miri-ptr-oob, r=oli-obk
bors [Tue, 20 Jul 2021 08:15:15 +0000 (08:15 +0000)]
Auto merge of #87224 - RalfJung:miri-ptr-oob, r=oli-obk

miri: better ptr-out-of-bounds errors

For offsets larger than `isize::MAX`, display them as negative offsets.

r? `@oli-obk`

3 years agoAuto merge of #87141 - spastorino:remove_impl_trait_in_bindings, r=oli-obk
bors [Tue, 20 Jul 2021 05:34:22 +0000 (05:34 +0000)]
Auto merge of #87141 - spastorino:remove_impl_trait_in_bindings, r=oli-obk

Remove impl trait in bindings

Closes #86729

r? `@oli-obk`

3 years agoBetter errors when we don't have implicit statics in trait objects
jackh726 [Tue, 20 Jul 2021 03:44:35 +0000 (23:44 -0400)]
Better errors when we don't have implicit statics in trait objects

3 years agoAuto merge of #84959 - camsteffen:lint-suggest-group, r=estebank
bors [Tue, 20 Jul 2021 02:11:55 +0000 (02:11 +0000)]
Auto merge of #84959 - camsteffen:lint-suggest-group, r=estebank

Suggest lint groups

Fixes rust-lang/rust-clippy#6986

3 years agoAuto merge of #87284 - Aaron1011:remove-paren-special, r=petrochenkov
bors [Mon, 19 Jul 2021 23:50:23 +0000 (23:50 +0000)]
Auto merge of #87284 - Aaron1011:remove-paren-special, r=petrochenkov

Remove special case for `ExprKind::Paren` in `MutVisitor`

The special case breaks several useful invariants (`ExpnId`s are
globally unique, and never change). This special case
was added back in 2016 in https://github.com/rust-lang/rust/pull/34355

r? `@petrochenkov`

3 years agoRemove special case for `ExprKind::Paren` in `MutVisitor`
Aaron Hill [Mon, 19 Jul 2021 14:33:35 +0000 (09:33 -0500)]
Remove special case for `ExprKind::Paren` in `MutVisitor`

The special case breaks several useful invariants (`ExpnId`s are
globally unique, and never change). This special case
was added back in 2016 in https://github.com/rust-lang/rust/pull/34355

3 years agoBetter diagnostics when mismatched types due to implict static lifetime
jackh726 [Thu, 15 Jul 2021 14:03:39 +0000 (10:03 -0400)]
Better diagnostics when mismatched types due to implict static lifetime

3 years agoAuto merge of #87153 - michaelwoerister:debuginfo-names-dyn-trait-projection-bounds...
bors [Mon, 19 Jul 2021 21:25:43 +0000 (21:25 +0000)]
Auto merge of #87153 - michaelwoerister:debuginfo-names-dyn-trait-projection-bounds, r=wesleywiser

[debuginfo] Emit associated type bindings in trait object type names.

This PR updates debuginfo type name generation for trait objects to include associated type bindings and auto trait bounds -- so that, for example, the debuginfo type name of `&dyn Iterator<Item=Foo>` and `&dyn Iterator<Item=Bar>` don't both map to just `&dyn Iterator` anymore.

The following table shows examples of debuginfo type names before and after the PR:
| type | before |  after |
|------|---------|-------|
| `&dyn Iterator<Item=u32>>` | `&dyn Iterator` | `&dyn Iterator<Item=u32>` |
| `&(dyn Iterator<Item=u32>> + Sync)` | `&dyn Iterator` | `&(dyn Iterator<Item=u32> + Sync)` |
| `&(dyn SomeTrait<bool, i8, Bar=u32>> + Send)` | `&dyn SomeTrait<bool, i8>` | `&(dyn SomeTrait<bool, i8, Bar=u32>> + Send)`  |

For targets that need C++-like type names, we use `assoc$<Item,u32>` instead of `Item=u32`:
| type | before |  after |
|------|---------|-------|
| `&dyn Iterator<Item=u32>>` | `ref$<dyn$<Iterator> >` | `ref$<dyn$<Iterator<assoc$<Item,u32> > > >` |
| `&(dyn Iterator<Item=u32>> + Sync)` | `ref$<dyn$<Iterator> >` | `ref$<dyn$<Iterator<assoc$<Item,u32> >,Sync> >` |
| `&(dyn SomeTrait<bool, i8, Bar=u32>> + Send)` | `ref$<dyn$<SomeTrait<bool, i8> > >` | `ref$<dyn$<SomeTrait<bool,i8,assoc$<Bar,u32> > >,Send> >`  |

The PR also adds self-profiling measurements for debuginfo type name generation (re. https://github.com/rust-lang/rust/issues/86431). It looks like the compiler spends up to 0.5% of its time in that task, so the potential for optimizing it via caching seems limited.

However, the perf run also shows [the biggest regression](https://perf.rust-lang.org/detailed-query.html?commit=585e91c718b0b2c5319e1fffd0ff1e62aaf7ccc2&base_commit=b9197978a90be6f7570741eabe2da175fec75375&benchmark=tokio-webpush-simple-debug&run_name=incr-unchanged) in a test case that does not even invoke the code in question. This suggests that the length of the names we generate here can affect performance by influencing how much data the linker has to copy around.

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

3 years agoAuto merge of #87225 - estebank:cleanup, r=oli-obk
bors [Mon, 19 Jul 2021 18:44:27 +0000 (18:44 +0000)]
Auto merge of #87225 - estebank:cleanup, r=oli-obk

Various diagnostics clean ups/tweaks

* Always point at macros, including derive macros
* Point at non-local items that introduce a trait requirement
* On private associated item, point at definition

3 years agoreplace Option combinators with try block
The8472 [Mon, 19 Jul 2021 18:21:54 +0000 (20:21 +0200)]
replace Option combinators with try block

3 years agoAuto merge of #87271 - flip1995:clippyup, r=Manishearth
bors [Mon, 19 Jul 2021 16:03:35 +0000 (16:03 +0000)]
Auto merge of #87271 - flip1995:clippyup, r=Manishearth

Update Clippy

This is an out-of-cycle Clippy update, to fix 3 ICEs before the release (This should be merged before beta is branched):

rust-lang/rust-clippy#7470
rust-lang/rust-clippy#7471
rust-lang/rust-clippy#7473

cc `@jackh726` `@JohnTitor` rust-lang/rust-clippy#7470 was caused by #86867. I saw the same ICE in the last rustup for Clippy though, so this might be a more general problem. Is there something we should check before calling `layout_of`? Should we always check for `ty.has_escaping_bound_vars()` before calling `layout_of`? Or is this overkill?

r? `@Manishearth`

3 years agoVarious diagnostics clean ups/tweaks
Esteban Küber [Sat, 17 Jul 2021 18:13:50 +0000 (11:13 -0700)]
Various diagnostics clean ups/tweaks

* Always point at macros, including derive macros
* Point at non-local items that introduce a trait requirement
* On private associated item, point at definition

3 years ago[debuginfo] Adapt CDB tests after changes to whitespace usage in debuginfo type names.
Michael Woerister [Mon, 19 Jul 2021 09:00:21 +0000 (11:00 +0200)]
[debuginfo] Adapt CDB tests after changes to whitespace usage in debuginfo type names.

3 years agoImprove impl trait disallowed context error text
Santiago Pastorino [Mon, 19 Jul 2021 12:21:27 +0000 (09:21 -0300)]
Improve impl trait disallowed context error text

3 years agoAuto merge of #86970 - inquisitivecrystal:force-warn, r=davidtwco
bors [Mon, 19 Jul 2021 13:18:04 +0000 (13:18 +0000)]
Auto merge of #86970 - inquisitivecrystal:force-warn, r=davidtwco

Make `--force-warns` a normal lint level option

Now that `ForceWarn` is a lint level, there's no reason `--force-warns` should be treated differently from other options that set lint levels. This merges the `ForceWarn` handling in with the other lint level command line options. It also unifies all of the relevant selection logic in `compiler/rustc_lint/src/levels.rs`, rather than having some of it weirdly elsewhere.

Fixes #86958, which arose from the special-cased handling of `ForceWarn` having had an error in it.

3 years agoImprove impl_trait_in_bindings removed feature text
Santiago Pastorino [Mon, 19 Jul 2021 12:20:15 +0000 (09:20 -0300)]
Improve impl_trait_in_bindings removed feature text

3 years agoAuto merge of #87269 - GuillaumeGomez:rollup-qukedv0, r=GuillaumeGomez
bors [Mon, 19 Jul 2021 10:10:08 +0000 (10:10 +0000)]
Auto merge of #87269 - GuillaumeGomez:rollup-qukedv0, r=GuillaumeGomez

Rollup of 8 pull requests

Successful merges:

 - #86230 (Add --nocapture option to rustdoc)
 - #87210 (Rustdoc accessibility: make the sidebar headers actual headers)
 - #87227 (Move asm! and global_asm! to core::arch)
 - #87236 (Simplify command-line argument initialization on unix)
 - #87251 (Fix "item info" width)
 - #87256 (Extend HIR-based WF checking to associated type defaults)
 - #87259 (triagebot shortcut config)
 - #87268 (Don't create references to uninitialized data in `List::from_arena`)

Failed merges:

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

3 years agoMerge commit '4c41a222ca5d1325fb4b6709395bd06e766cc042' into clippyup
flip1995 [Mon, 19 Jul 2021 09:52:05 +0000 (11:52 +0200)]
Merge commit '4c41a222ca5d1325fb4b6709395bd06e766cc042' into clippyup

3 years agoAuto merge of #7476 - flip1995:rustup, r=flip1995
bors [Mon, 19 Jul 2021 09:49:57 +0000 (09:49 +0000)]
Auto merge of #7476 - flip1995:rustup, r=flip1995

Rustup

r? `@ghost`

Out of cycle sync for 2 ICE fixes #7470 #7471 #7473

changelog: none

3 years agoBump nightly version -> 2021-07-19
flip1995 [Mon, 19 Jul 2021 09:49:03 +0000 (11:49 +0200)]
Bump nightly version -> 2021-07-19

3 years agoMerge remote-tracking branch 'upstream/master' into rustup
flip1995 [Mon, 19 Jul 2021 09:38:40 +0000 (11:38 +0200)]
Merge remote-tracking branch 'upstream/master' into rustup

3 years agoRollup merge of #87268 - SkiFire13:fix-uninit-ref-list, r=nagisa
Guillaume Gomez [Mon, 19 Jul 2021 09:37:49 +0000 (11:37 +0200)]
Rollup merge of #87268 - SkiFire13:fix-uninit-ref-list, r=nagisa

Don't create references to uninitialized data in `List::from_arena`

Previously `result` and `arena_slice` were references pointing to uninitialized data, which is technically UB. They may have been fine because the pointed data is `Copy` and and they were only written to, but the semantics of this aren't clearly defined yet, and since we have a sound way to do the same thing I don't think we should keep the possibly-unsound way.

3 years agoRollup merge of #87259 - Llandy3d:triagebot_shortcuts, r=nikomatsakis
Guillaume Gomez [Mon, 19 Jul 2021 09:37:48 +0000 (11:37 +0200)]
Rollup merge of #87259 - Llandy3d:triagebot_shortcuts, r=nikomatsakis

triagebot shortcut config

Enable the new triagebot shortcuts as per [#1381/triagebot](https://github.com/rust-lang/triagebot/pull/1381)

3 years agoRollup merge of #87256 - Aaron1011:hir-wf-assoc-default, r=oli-obk
Guillaume Gomez [Mon, 19 Jul 2021 09:37:47 +0000 (11:37 +0200)]
Rollup merge of #87256 - Aaron1011:hir-wf-assoc-default, r=oli-obk

Extend HIR-based WF checking to associated type defaults

Previously, we would only look at associated types in `impl` blocks.

3 years agoRollup merge of #87251 - GuillaumeGomez:item-info-width, r=notriddle
Guillaume Gomez [Mon, 19 Jul 2021 09:37:46 +0000 (11:37 +0200)]
Rollup merge of #87251 - GuillaumeGomez:item-info-width, r=notriddle

Fix "item info" width

Fixes #87202.

It now looks again like this:

![Screenshot from 2021-07-18 12-33-27](https://user-images.githubusercontent.com/3050060/126064005-013acabc-7f17-4436-8dfc-cb6b9bc24413.png)

cc `@jyn514`

r? `@notriddle`

3 years agoRollup merge of #87236 - sunfishcode:avoid-locking-args, r=joshtriplett
Guillaume Gomez [Mon, 19 Jul 2021 09:37:45 +0000 (11:37 +0200)]
Rollup merge of #87236 - sunfishcode:avoid-locking-args, r=joshtriplett

Simplify command-line argument initialization on unix

Simplify Rust's command-line argument initialization code on unix:
 - The cleanup code isn't needed, because it was just zeroing out non-owning variables at runtime cleanup time. After 91c3eee1735ad72b579f99cbb6919c3471747d94, Rust's command-line initialization code on unix no longer allocates `CString`s and a `Vec` at startup time.
 - The `Mutex` isn't needed; if there's somehow a call to `args()` before argument initialization has happened, the code returns return an empty list, which we can do with a null check.

With these changes, a simple cdylib that doesn't use threads avoids getting `pthread_mutex_lock`/`pthread_mutex_unlock` in its symbol table.

3 years agoRollup merge of #87227 - bstrie:asm2arch, r=Amanieu
Guillaume Gomez [Mon, 19 Jul 2021 09:37:44 +0000 (11:37 +0200)]
Rollup merge of #87227 - bstrie:asm2arch, r=Amanieu

Move asm! and global_asm! to core::arch

Follow-up to https://github.com/rust-lang/stdarch/pull/1183 .

Implements the libs-api team decision from rust-lang/rust#84019 (comment) .

In order to not break nightly users, this PR also adds the newly-moved items to the prelude. However, a decision will need to be made before stabilization as to whether these items should remain in the prelude. I will file an issue for this separately.

Fixes #84019 .

r? `@Amanieu`

3 years agoRollup merge of #87210 - notriddle:notriddle/rustdoc-sidebar-headers, r=GuillaumeGomez
Guillaume Gomez [Mon, 19 Jul 2021 09:37:42 +0000 (11:37 +0200)]
Rollup merge of #87210 - notriddle:notriddle/rustdoc-sidebar-headers, r=GuillaumeGomez

Rustdoc accessibility: make the sidebar headers actual headers

Part of #87059

Preview it at: https://notriddle.com/notriddle-rustdoc-test/rustdoc-sidebar-header/std/index.html

3 years agoRollup merge of #86230 - GuillaumeGomez:nocapture, r=camelid
Guillaume Gomez [Mon, 19 Jul 2021 09:37:41 +0000 (11:37 +0200)]
Rollup merge of #86230 - GuillaumeGomez:nocapture, r=camelid

Add --nocapture option to rustdoc

Fixes https://github.com/rust-lang/rust/issues/26309.
Fixes #45724.

Once this PR is merged, I'll send a PR to cargo to also pass `--nocapture` to rustdoc.

cc `@jyn514`
r? `@camelid`

3 years agoAuto merge of #7470 - DevinR528:fix-ice7447, r=flip1995
bors [Mon, 19 Jul 2021 09:22:34 +0000 (09:22 +0000)]
Auto merge of #7470 - DevinR528:fix-ice7447, r=flip1995

Add check if ty has_escaping_bound_vars in zero_sized_map_values lint

Fixes: #7447
changelog: fix ICE in [`zero_sized_map_values`]

3 years agoDon't create references to uninitialized data in List::from_arena
Giacomo Stevanato [Mon, 19 Jul 2021 08:47:45 +0000 (10:47 +0200)]
Don't create references to uninitialized data in List::from_arena

3 years agoAuto merge of #87196 - oxalica:option-insert-must-use, r=joshtriplett
bors [Mon, 19 Jul 2021 07:03:36 +0000 (07:03 +0000)]
Auto merge of #87196 - oxalica:option-insert-must-use, r=joshtriplett

Mark `Option::insert` as must_use

Some people seems misled by the function name and use it in case where a simple assignment just works.
If the return value is not used, `option = Some(value);` should be preferred instead of `option.insert(value);`

3 years agoAuto merge of #7403 - Anthuang:redundant-method-names, r=Manishearth
bors [Mon, 19 Jul 2021 06:49:51 +0000 (06:49 +0000)]
Auto merge of #7403 - Anthuang:redundant-method-names, r=Manishearth

New lint: [`self_named_constructor`]

Adds the `self_named_constructor` lint for detecting when an implemented method has the same name as the type it is implemented for.

changelog: [`self_named_constructor`]

closes: #7142

3 years agoRun bless
Anthony Huang [Mon, 19 Jul 2021 05:21:06 +0000 (01:21 -0400)]
Run bless

3 years agoAuto merge of #87146 - Aaron1011:better-macro-lint, r=petrochenkov
bors [Mon, 19 Jul 2021 04:22:51 +0000 (04:22 +0000)]
Auto merge of #87146 - Aaron1011:better-macro-lint, r=petrochenkov

Compute a better `lint_node_id` during expansion

When we need to emit a lint at a macro invocation, we currently use the
`NodeId` of its parent definition (e.g. the enclosing function). This
means that any `#[allow]` / `#[deny]` attributes placed 'closer' to the
macro (e.g. on an enclosing block or statement) will have no effect.

This commit computes a better `lint_node_id` in `InvocationCollector`.
When we visit/flat_map an AST node, we assign it a `NodeId` (earlier
than we normally would), and store than `NodeId` in current
`ExpansionData`. When we collect a macro invocation, the current
`lint_node_id` gets cloned along with our `ExpansionData`, allowing it
to be used if we need to emit a lint later on.

This improves the handling of `#[allow]` / `#[deny]` for
`SEMICOLON_IN_EXPRESSIONS_FROM_MACROS` and some `asm!`-related lints.
The 'legacy derive helpers' lint retains its current behavior
(I've inlined the now-removed `lint_node_id` function), since
there isn't an `ExpansionData` readily available.

3 years agoAuto merge of #86848 - notriddle:notriddle/drop-dyn, r=varkor
bors [Mon, 19 Jul 2021 01:41:54 +0000 (01:41 +0000)]
Auto merge of #86848 - notriddle:notriddle/drop-dyn, r=varkor

feat(rustc_lint): add `dyn_drop`

Based on the conversation in #86747.

Explanation
-----------

A trait object bound of the form `dyn Drop` is most likely misleading and not what the programmer intended.

`Drop` bounds do not actually indicate whether a type can be trivially dropped or not, because a composite type containing `Drop` types does not necessarily implement `Drop` itself. Naïvely, one might be tempted to write a deferred drop system, to pull cleaning up memory out of a latency-sensitive code path, using `dyn Drop` trait objects. However, this breaks down e.g. when `T` is `String`, which does not implement `Drop`, but should probably be accepted.

To write a trait object bound that accepts anything, use a placeholder trait with a blanket implementation.

```rust
trait Placeholder {}
impl<T> Placeholder for T {}
fn foo(_x: Box<dyn Placeholder>) {}
```

3 years agoAuto merge of #87004 - JamieCunliffe:pgo-gc-sections, r=Mark-Simulacrum
bors [Sun, 18 Jul 2021 23:14:31 +0000 (23:14 +0000)]
Auto merge of #87004 - JamieCunliffe:pgo-gc-sections, r=Mark-Simulacrum

Don't use gc-sections with profile-generate.

When building with profile-generate don't call gc_sections as this can
can sometimes strip out profile data. This missing information in the
prof files can then result in missing functions when using the profile
information.

#78226

r? `@Mark-Simulacrum`

3 years agoMove asm! and global_asm! to core::arch
bstrie [Sat, 17 Jul 2021 18:48:00 +0000 (14:48 -0400)]
Move asm! and global_asm! to core::arch

3 years agoAuto merge of #86950 - tmiasko:personality, r=nagisa
bors [Sun, 18 Jul 2021 20:33:23 +0000 (20:33 +0000)]
Auto merge of #86950 - tmiasko:personality, r=nagisa

Use existing declaration of rust_eh_personality

If crate declares `rust_eh_personality`, re-use existing declaration
as otherwise attempts to set function attributes that follow the
declaration will fail (unless it happens to have exactly the same
type signature as the one predefined in the compiler).

Fixes #70117.
Fixes https://github.com/rust-lang/rust/pull/81469#issuecomment-809428126; probably.

3 years agotriagebot shortcut config
Llandy Riveron Del Risco [Sun, 18 Jul 2021 19:52:18 +0000 (21:52 +0200)]
triagebot shortcut config

3 years agoAuto merge of #7474 - camsteffen:binop, r=Manishearth
bors [Sun, 18 Jul 2021 15:52:49 +0000 (15:52 +0000)]
Auto merge of #7474 - camsteffen:binop, r=Manishearth

Use lang items for BinOp lints

changelog: none

3 years agoExtend HIR-based WF checking to associated type defaults
Aaron Hill [Sun, 18 Jul 2021 15:36:07 +0000 (10:36 -0500)]
Extend HIR-based WF checking to associated type defaults

Previously, we would only look at associated types in `impl` blocks.

3 years agofix(clippy): add missing allow(dyn_drop)
Michael Howell [Sun, 18 Jul 2021 14:57:03 +0000 (07:57 -0700)]
fix(clippy): add missing allow(dyn_drop)

3 years agoAdd `#![allow(dyn_drop)]` to test cases with `dyn Drop` in them
Michael Howell [Sat, 3 Jul 2021 18:52:19 +0000 (11:52 -0700)]
Add `#![allow(dyn_drop)]` to test cases with `dyn Drop` in them

These are all testing corner-cases in the compiler.
Adding a new warning broke these test cases, but --cap-lints stops
it from actually breaking things in production.

3 years agofeat(rustc_lint): add `dyn_drop`
Michael Howell [Sat, 3 Jul 2021 18:20:01 +0000 (11:20 -0700)]
feat(rustc_lint): add `dyn_drop`

Based on the conversation in #86747.

Explanation
-----------

A trait object bound of the form `dyn Drop` is most likely misleading
and not what the programmer intended.

`Drop` bounds do not actually indicate whether a type can be trivially
dropped or not, because a composite type containing `Drop` types does
not necessarily implement `Drop` itself. Naïvely, one might be tempted
to write a deferred drop system, to pull cleaning up memory out of a
latency-sensitive code path, using `dyn Drop` trait objects. However,
this breaks down e.g. when `T` is `String`, which does not implement
`Drop`, but should probably be accepted.

To write a trait object bound that accepts anything, use a placeholder
trait with a blanket implementation.

```rust
trait Placeholder {}
impl<T> Placeholder for T {}
fn foo(_x: Box<dyn Placeholder>) {}
```

3 years agoRemove unused stuff and switch to pub(crate) whenever possible.
Charles Lew [Sun, 18 Jul 2021 07:35:37 +0000 (15:35 +0800)]
Remove unused stuff and switch to pub(crate) whenever possible.

3 years agoAuto merge of #87252 - RalfJung:miri, r=RalfJung
bors [Sun, 18 Jul 2021 13:11:39 +0000 (13:11 +0000)]
Auto merge of #87252 - RalfJung:miri, r=RalfJung

update Miri

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

3 years agoFix compilation errors.
Charles Lew [Sun, 18 Jul 2021 06:52:46 +0000 (14:52 +0800)]
Fix compilation errors.

3 years agoMove `library/term/src` to `library/test/src/term/`.
Charles Lew [Sun, 18 Jul 2021 06:42:14 +0000 (14:42 +0800)]
Move `library/term/src` to `library/test/src/term/`.

3 years agoRemove impl_trait_in_bindings feature flag
Santiago Pastorino [Fri, 16 Jul 2021 13:06:26 +0000 (10:06 -0300)]
Remove impl_trait_in_bindings feature flag

3 years agoMove mir_def_id inside `eq_opaque_type_and_type`
Santiago Pastorino [Thu, 15 Jul 2021 12:55:13 +0000 (09:55 -0300)]
Move mir_def_id inside `eq_opaque_type_and_type`

3 years agoRemove `sub_types_or_anon`
Santiago Pastorino [Thu, 15 Jul 2021 12:48:14 +0000 (09:48 -0300)]
Remove `sub_types_or_anon`

3 years agoAdd `sub_types` docs
Santiago Pastorino [Thu, 15 Jul 2021 12:47:33 +0000 (09:47 -0300)]
Add `sub_types` docs

3 years agoRevert "structural_match: non-structural-match ty closures"
Santiago Pastorino [Wed, 14 Jul 2021 22:00:48 +0000 (19:00 -0300)]
Revert "structural_match: non-structural-match ty closures"

Reverts #73353

3 years agoRemove origin field from TypeAliasesOpaqueTy
Santiago Pastorino [Thu, 15 Jul 2021 15:43:54 +0000 (12:43 -0300)]
Remove origin field from TypeAliasesOpaqueTy

3 years agoUse == to compare OpaqueTyOrigin values
Santiago Pastorino [Thu, 15 Jul 2021 15:42:18 +0000 (12:42 -0300)]
Use == to compare OpaqueTyOrigin values

3 years agoRemove OpaqueTyOrigin::Misc, use TyAlias instead
Santiago Pastorino [Wed, 14 Jul 2021 21:23:36 +0000 (18:23 -0300)]
Remove OpaqueTyOrigin::Misc, use TyAlias instead

3 years agoRemoving unhandled region constraint error that is only for impl_trait_in_bindings
Santiago Pastorino [Wed, 14 Jul 2021 20:12:34 +0000 (17:12 -0300)]
Removing unhandled region constraint error that is only for impl_trait_in_bindings

3 years agoRemove impl_trait_in_bindings handling on inference error reporting
Santiago Pastorino [Wed, 14 Jul 2021 19:55:31 +0000 (16:55 -0300)]
Remove impl_trait_in_bindings handling on inference error reporting

3 years agoRemove impl trait bindings handling on const AST lowering
Santiago Pastorino [Wed, 14 Jul 2021 19:17:56 +0000 (16:17 -0300)]
Remove impl trait bindings handling on const AST lowering

3 years agoupdate Miri
Ralf Jung [Sun, 18 Jul 2021 10:43:39 +0000 (12:43 +0200)]
update Miri

3 years agoAuto merge of #86698 - cjgillot:modc, r=estebank
bors [Sun, 18 Jul 2021 10:42:23 +0000 (10:42 +0000)]
Auto merge of #86698 - cjgillot:modc, r=estebank

Move OnDiskCache to rustc_query_impl.

This should be the last remnant of the query implementation that was still in rustc_middle.

3 years agoAdd test to check width of item-info
Guillaume Gomez [Sun, 18 Jul 2021 10:32:26 +0000 (12:32 +0200)]
Add test to check width of item-info

3 years agoFix item info display
Guillaume Gomez [Sun, 18 Jul 2021 10:25:49 +0000 (12:25 +0200)]
Fix item info display

3 years agoAdd invalid rust code for test
Guillaume Gomez [Fri, 9 Jul 2021 09:06:20 +0000 (11:06 +0200)]
Add invalid rust code for test

3 years agoDon't capture child process output at all when --no-capture is used
Guillaume Gomez [Fri, 9 Jul 2021 08:58:02 +0000 (10:58 +0200)]
Don't capture child process output at all when --no-capture is used

3 years agoAdd doc for --nocapture
Guillaume Gomez [Fri, 11 Jun 2021 20:20:40 +0000 (22:20 +0200)]
Add doc for --nocapture

3 years agoAdd test for rustdoc --nocapture option
Guillaume Gomez [Fri, 11 Jun 2021 20:11:35 +0000 (22:11 +0200)]
Add test for rustdoc --nocapture option

3 years agoAdd --nocapture option to rustdoc
Guillaume Gomez [Fri, 11 Jun 2021 14:53:32 +0000 (16:53 +0200)]
Add --nocapture option to rustdoc

3 years agoRemove deadlock virtual call.
Camille GILLOT [Mon, 28 Jun 2021 19:33:47 +0000 (21:33 +0200)]
Remove deadlock virtual call.

3 years agoMove OnDiskCache to rustc_query_impl.
Camille GILLOT [Mon, 28 Jun 2021 19:12:01 +0000 (21:12 +0200)]
Move OnDiskCache to rustc_query_impl.

3 years agomiri: better ptr-out-of-bounds errors
Ralf Jung [Sat, 17 Jul 2021 18:12:28 +0000 (20:12 +0200)]
miri: better ptr-out-of-bounds errors

3 years agoAuto merge of #87242 - JohnTitor:rollup-t9rmwpo, r=JohnTitor
bors [Sun, 18 Jul 2021 08:15:17 +0000 (08:15 +0000)]
Auto merge of #87242 - JohnTitor:rollup-t9rmwpo, r=JohnTitor

Rollup of 8 pull requests

Successful merges:

 - #86763 (Add a regression test for issue-63355)
 - #86814 (Recover from a misplaced inner doc comment)
 - #86843 (Check that const parameters of trait methods have compatible types)
 - #86889 (rustdoc: Cleanup ExternalCrate)
 - #87092 (Remove nondeterminism in multiple-definitions test)
 - #87170 (Add diagnostic items for Clippy)
 - #87183 (fix typo in compile_fail doctest)
 - #87205 (rustc_middle: remove redundant clone)

Failed merges:

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

3 years agoAdd tests for command line lint control
inquisitivecrystal [Fri, 9 Jul 2021 04:35:26 +0000 (21:35 -0700)]
Add tests for command line lint control

3 years agoMake `--force-warns` a normal lint level option
inquisitivecrystal [Thu, 8 Jul 2021 07:05:38 +0000 (00:05 -0700)]
Make `--force-warns` a normal lint level option

3 years agoAuto merge of #87071 - inquisitivecrystal:inclusive-range, r=estebank
bors [Sun, 18 Jul 2021 05:58:16 +0000 (05:58 +0000)]
Auto merge of #87071 - inquisitivecrystal:inclusive-range, r=estebank

Add diagnostics for mistyped inclusive range

Inclusive ranges are correctly typed as `..=`. However, it's quite easy to think of it as being like `==`, and type `..==` instead. This PR adds helpful diagnostics for this case.

Resolves #86395 (there are some other cases there, but I think those should probably have separate issues).

r? `@estebank`

3 years agoRollup merge of #87205 - matthiaskrgr:clippy_cln, r=oli-obk
Yuki Okushi [Sun, 18 Jul 2021 05:21:59 +0000 (14:21 +0900)]
Rollup merge of #87205 - matthiaskrgr:clippy_cln, r=oli-obk

rustc_middle: remove redundant clone

found while looking through some clippy lint warnings

3 years agoRollup merge of #87183 - RalfJung:option-doctest, r=jyn514
Yuki Okushi [Sun, 18 Jul 2021 05:21:58 +0000 (14:21 +0900)]
Rollup merge of #87183 - RalfJung:option-doctest, r=jyn514

fix typo in compile_fail doctest

Fixes a typo introduced by https://github.com/rust-lang/rust/pull/86211. For some reason this typo makes Miri go all crazy when running libcore doctests (https://github.com/rust-lang/miri/issues/1852). Kudos to ``@hyd-dev`` for noticing the typo.

Cc ``@tlyu`` ``@joshtriplett``

3 years agoRollup merge of #87170 - xFrednet:clippy-5393-add-diagnostic-items, r=Manishearth...
Yuki Okushi [Sun, 18 Jul 2021 05:21:57 +0000 (14:21 +0900)]
Rollup merge of #87170 - xFrednet:clippy-5393-add-diagnostic-items, r=Manishearth,oli-obk

Add diagnostic items for Clippy

This adds a bunch of diagnostic items to `std`/`core`/`alloc` functions, structs and traits used in Clippy. The actual refactorings in Clippy to use these items will be done in a different PR in Clippy after the next sync.

This PR doesn't include all paths Clippy uses, I've only gone through the first 85 lines of Clippy's [`paths.rs`](https://github.com/rust-lang/rust-clippy/blob/ecf85f4bdc319f9d9d853d1fff68a8a25e64c7a8/clippy_utils/src/paths.rs) (after rust-lang/rust-clippy#7466) to get some feedback early on. I've also decided against adding diagnostic items to methods, as it would be nicer and more scalable to access them in a nicer fashion, like adding a `is_diagnostic_assoc_item(did, sym::Iterator, sym::map)` function or something similar (Suggested by `@camsteffen` [on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/147480-t-compiler.2Fwg-diagnostics/topic/Diagnostic.20Item.20Naming.20Convention.3F/near/225024603))

There seems to be some different naming conventions when it comes to diagnostic items, some use UpperCamelCase (`BinaryHeap`) and some snake_case (`hashmap_type`). This PR uses UpperCamelCase for structs and traits and snake_case with the module name as a prefix for functions. Any feedback on is this welcome.

cc: rust-lang/rust-clippy#5393

r? `@Manishearth`

3 years agoRollup merge of #87092 - ricobbe:fix-raw-dylib-multiple-definitions, r=petrochenkov
Yuki Okushi [Sun, 18 Jul 2021 05:21:56 +0000 (14:21 +0900)]
Rollup merge of #87092 - ricobbe:fix-raw-dylib-multiple-definitions, r=petrochenkov

Remove nondeterminism in multiple-definitions test

Compare all fields in `DllImport` when sorting to avoid nondeterminism in the error for multiple inconsistent definitions of an extern function.  Restore the multiple-definitions test.

Resolves #87084.

3 years agoRollup merge of #86889 - jyn514:crate-cleanup, r=camelid
Yuki Okushi [Sun, 18 Jul 2021 05:21:55 +0000 (14:21 +0900)]
Rollup merge of #86889 - jyn514:crate-cleanup, r=camelid

rustdoc: Cleanup ExternalCrate

- Remove unnecessary CrateNum from Cache.externs
- Remove trival impl Clean for CrateNum

3 years agoRollup merge of #86843 - FabianWolff:issue-86820, r=lcnr
Yuki Okushi [Sun, 18 Jul 2021 05:21:54 +0000 (14:21 +0900)]
Rollup merge of #86843 - FabianWolff:issue-86820, r=lcnr

Check that const parameters of trait methods have compatible types

This PR fixes #86820. The problem is that this currently passes the type checker:
```rust
trait Tr {
    fn foo<const N: u8>(self) -> u8;
}

impl Tr for f32 {
    fn foo<const N: bool>(self) -> u8 { 42 }
}
```
i.e. the type checker fails to check whether const parameters in `impl` methods have the same type as the corresponding declaration in the trait. With my changes, I get, for the above code:
```
error[E0053]: method `foo` has an incompatible const parameter type for trait
 --> test.rs:6:18
  |
6 |     fn foo<const N: bool>(self) -> u8 { 42 }
  |                  ^
  |
note: the const parameter `N` has type `bool`, but the declaration in trait `Tr::foo` has type `u8`
 --> test.rs:2:18
  |
2 |     fn foo<const N: u8>(self) -> u8;
  |                  ^

error: aborting due to previous error
```
This fixes #86820, where an ICE happens later on because the trait method is declared with a const parameter of type `u8`, but the `impl` uses one of type `usize`:
> `expected int of size 8, but got size 1`

3 years agoRollup merge of #86814 - Aaron1011:inner-doc-recover, r=estebank
Yuki Okushi [Sun, 18 Jul 2021 05:21:53 +0000 (14:21 +0900)]
Rollup merge of #86814 - Aaron1011:inner-doc-recover, r=estebank

Recover from a misplaced inner doc comment

Fixes #86781

3 years agoRollup merge of #86763 - JohnTitor:test-63355, r=oli-obk
Yuki Okushi [Sun, 18 Jul 2021 05:21:52 +0000 (14:21 +0900)]
Rollup merge of #86763 - JohnTitor:test-63355, r=oli-obk

Add a regression test for issue-63355

Closes #63355
r? ``@nikomatsakis``

3 years agoAdd test for `#[allow]` for warnings on attribute macro
Aaron Hill [Sat, 17 Jul 2021 13:31:13 +0000 (08:31 -0500)]
Add test for `#[allow]` for warnings on attribute macro

3 years agoOnly use `assign_id!` for ast nodes that support attributes
Aaron Hill [Sat, 17 Jul 2021 13:22:09 +0000 (08:22 -0500)]
Only use `assign_id!` for ast nodes that support attributes

3 years agoAdd additional missing lint handling logic
Aaron Hill [Thu, 15 Jul 2021 19:26:27 +0000 (14:26 -0500)]
Add additional missing lint handling logic

3 years agoAdd missing `visit_expr_field`
Aaron Hill [Thu, 15 Jul 2021 01:07:56 +0000 (20:07 -0500)]
Add missing `visit_expr_field`

3 years agoCompute a better `lint_node_id` during expansion
Aaron Hill [Wed, 14 Jul 2021 23:24:12 +0000 (18:24 -0500)]
Compute a better `lint_node_id` during expansion

When we need to emit a lint at a macro invocation, we currently use the
`NodeId` of its parent definition (e.g. the enclosing function). This
means that any `#[allow]` / `#[deny]` attributes placed 'closer' to the
macro (e.g. on an enclosing block or statement) will have no effect.

This commit computes a better `lint_node_id` in `InvocationCollector`.
When we visit/flat_map an AST node, we assign it a `NodeId` (earlier
than we normally would), and store than `NodeId` in current
`ExpansionData`. When we collect a macro invocation, the current
`lint_node_id` gets cloned along with our `ExpansionData`, allowing it
to be used if we need to emit a lint later on.

This improves the handling of `#[allow]` / `#[deny]` for
`SEMICOLON_IN_EXPRESSIONS_FROM_MACROS` and some `asm!`-related lints.
The 'legacy derive helpers' lint retains its current behavior
(I've inlined the now-removed `lint_node_id` function), since
there isn't an `ExpansionData` readily available.

3 years agoAuto merge of #7473 - Jarcho:ice_7340, r=Manishearth
bors [Sun, 18 Jul 2021 03:32:31 +0000 (03:32 +0000)]
Auto merge of #7473 - Jarcho:ice_7340, r=Manishearth

Fix ICE in `is_integer_const`

fixes: #7340
changelog: Fix ICE in `modulo_one` in const contexts