]> git.lizzy.rs Git - rust.git/log
rust.git
3 years agoAuto merge of #76381 - petrochenkov:nomingwcomp, r=Mark-Simulacrum
bors [Fri, 11 Sep 2020 06:36:43 +0000 (06:36 +0000)]
Auto merge of #76381 - petrochenkov:nomingwcomp, r=Mark-Simulacrum

rustbuild: Do not use `rust-mingw` component when bootstrapping windows-gnu targets

Addresses https://github.com/rust-lang/rust/pull/76326#issuecomment-687273473 (ancient `x86_64-w64-mingw32-gcc` is selected as a linker wrapper, which is not usable in `use_lld=true` mode).

Perhaps the comment about incompatible mingw was true in the past, but many things changed since then.
With this change I was able to build everything successfully locally using a newer mingw toolchain, if it passes through the older toolchain on CI, then it should be good, I think.

3 years agoAuto merge of #75800 - Aaron1011:feature/full-nt-tokens, r=petrochenkov
bors [Fri, 11 Sep 2020 02:35:01 +0000 (02:35 +0000)]
Auto merge of #75800 - Aaron1011:feature/full-nt-tokens, r=petrochenkov

Attach tokens to all AST types used in `Nonterminal`

We perform token capturing when we have outer attributes (for nonterminals that support attributes - e.g. `Stmt`), or when we parse a `Nonterminal` for a `macro_rules!` argument. The full list of `Nonterminals` affected by this PR is:

* `NtBlock`
* `NtStmt`
* `NtTy`
* `NtMeta`
* `NtPath`
* `NtVis`
* `NtLiteral`

Of these nonterminals, only `NtStmt` and `NtLiteral` (which is actually just an `Expr`), support outer attributes - the rest only ever have token capturing perform when they match a `macro_rules!` argument.

This makes progress towards solving https://github.com/rust-lang/rust/issues/43081 - we now collect tokens for everything that might need them. However, we still need to handle `#[cfg]`, inner attributes, and misc pretty-printing issues (e.g. #75734)

I've separated the changes into (mostly) independent commits, which could be split into individual PRs for each `Nonterminal` variant. The purpose of having them all in one PR is to do a single Crater run for all of them.

Most of the changes in this PR are trivial (adding `tokens: None` everywhere we construct the various AST structs). The significant changes are:

* `ast::Visibility` is changed from `type Visibility = Spanned<VisibilityKind>` to a `struct Visibility { kind, span, tokens }`.
* `maybe_collect_tokens` is made generic, and used for both `ast::Expr` and `ast::Stmt`.
* Some of the statement-parsing functions are refactored so that we can capture the trailing semicolon.
* `Nonterminal` and `Expr` both grew by 8 bytes, as some of the structs which are stored inline (rather than behind a `P`) now have an `Option<TokenStream>` field. Hopefully the performance impact of doing this is negligible.

3 years agoAuto merge of #74437 - ssomers:btree_no_root_in_noderef, r=Mark-Simulacrum
bors [Thu, 10 Sep 2020 23:29:57 +0000 (23:29 +0000)]
Auto merge of #74437 - ssomers:btree_no_root_in_noderef, r=Mark-Simulacrum

BTreeMap: move up reference to map's root from NodeRef

Since the introduction of `NodeRef` years ago, it also contained a mutable reference to the owner of the root node of the tree (somewhat disguised as *const). Its intent is to be used only when the rest of the `NodeRef` is no longer needed. Moving this to where it's actually used, thought me 2 things:
- Some sort of "postponed mutable reference" is required in most places that it is/was used, and that's exactly where we also need to store a reference to the length (number of elements) of the tree, for the same reason. The length reference can be a normal reference, because the tree code does not care about tree length (just length per node).
- It's downright obfuscation in `from_sorted_iter` (transplanted to #75329)
- It's one of the reasons for the scary notice on `reborrow_mut`, the other one being addressed in #73971.

This does repeat the raw pointer code in a few places, but it could be bundled up with the length reference.

r? `@Mark-Simulacrum`

3 years agoFully integrate token collection for additional AST structs
Aaron Hill [Sat, 22 Aug 2020 02:11:41 +0000 (22:11 -0400)]
Fully integrate token collection for additional AST structs

This commit contains miscellaneous changes that don't fit into any of
the other commits in this PR

3 years agoAttach tokens to `ast::Stmt`
Aaron Hill [Thu, 10 Sep 2020 20:59:30 +0000 (16:59 -0400)]
Attach tokens to `ast::Stmt`

We currently only attach tokens when parsing a `:stmt` matcher for a
`macro_rules!` macro. Proc-macro attributes on statements are still
unstable, and need additional work.

3 years agoAttach `TokenStream` to `ast::Visibility`
Aaron Hill [Fri, 21 Aug 2020 23:11:00 +0000 (19:11 -0400)]
Attach `TokenStream` to `ast::Visibility`

A `Visibility` does not have outer attributes, so we only capture tokens
when parsing a `macro_rules!` matcher

3 years agoAttach `TokenStream` to `ast::Path`
Aaron Hill [Fri, 21 Aug 2020 22:51:23 +0000 (18:51 -0400)]
Attach `TokenStream` to `ast::Path`

3 years agoAttach tokens to `NtMeta` (`ast::AttrItem`)
Aaron Hill [Fri, 21 Aug 2020 22:37:34 +0000 (18:37 -0400)]
Attach tokens to `NtMeta` (`ast::AttrItem`)

An `AttrItem` does not have outer attributes, so we only capture tokens
when parsing a `macro_rules!` matcher

3 years agoCollect tokens when handling `:literal` matcher
Aaron Hill [Fri, 21 Aug 2020 22:28:47 +0000 (18:28 -0400)]
Collect tokens when handling `:literal` matcher

An `NtLiteral` just wraps an `Expr`, so we don't need to add a new `tokens`
field to an AST struct.

3 years agoAttach `TokenStream` to `ast::Ty`
Aaron Hill [Fri, 21 Aug 2020 22:18:04 +0000 (18:18 -0400)]
Attach `TokenStream` to `ast::Ty`

A `Ty` does not have outer attributes, so we only capture tokens
when parsing a `macro_rules!` matcher

3 years agoAttach `TokenStream` to `ast::Block`
Aaron Hill [Fri, 21 Aug 2020 21:52:52 +0000 (17:52 -0400)]
Attach `TokenStream` to `ast::Block`

A `Block` does not have outer attributes, so we only capture tokens when
parsing a `macro_rules!` matcher

3 years agoAuto merge of #76574 - flip1995:clippyup, r=Manishearth
bors [Thu, 10 Sep 2020 21:25:55 +0000 (21:25 +0000)]
Auto merge of #76574 - flip1995:clippyup, r=Manishearth

Update Clippy

Biweekly Clippy update

r? `@Manishearth`

3 years agoAuto merge of #76582 - tmandry:rollup-lwwc93b, r=tmandry
bors [Thu, 10 Sep 2020 19:23:11 +0000 (19:23 +0000)]
Auto merge of #76582 - tmandry:rollup-lwwc93b, r=tmandry

Rollup of 11 pull requests

Successful merges:

 - #75857 (Syntactically permit unsafety on mods)
 - #76289 (Add docs about crate level documentation support)
 - #76514 (Add revisions to const generic issue UI tests.)
 - #76524 (typeck: don't suggest inaccessible private fields)
 - #76548 (Validate removal of AscribeUserType, FakeRead, and Shallow borrow)
 - #76555 (Reword `trivial_casts` lint in rustc book to better explain what it does.)
 - #76559 (add the `const_evaluatable_checked` feature)
 - #76563 (small typo fix in rustc_parse docs)
 - #76565 (take reference to Place directly instead of taking reference to Box<Place>)
 - #76567 (use push(char) to add chars (single-char &strs) to strings instead of push_str(&str))
 - #76568 (Add missing examples on core traits' method)

Failed merges:

r? `@ghost`

3 years agoRollup merge of #76568 - GuillaumeGomez:add-missing-examples, r=jyn514
Tyler Mandry [Thu, 10 Sep 2020 19:20:15 +0000 (12:20 -0700)]
Rollup merge of #76568 - GuillaumeGomez:add-missing-examples, r=jyn514

Add missing examples on core traits' method

Linked to #76450.

r? @jyn514

3 years agoRollup merge of #76567 - matthiaskrgr:clone_on_copy, r=varkor
Tyler Mandry [Thu, 10 Sep 2020 19:20:12 +0000 (12:20 -0700)]
Rollup merge of #76567 - matthiaskrgr:clone_on_copy, r=varkor

use push(char) to add chars (single-char &strs) to strings instead of push_str(&str)

3 years agoRollup merge of #76565 - matthiaskrgr:box_place, r=oli-obk
Tyler Mandry [Thu, 10 Sep 2020 19:20:11 +0000 (12:20 -0700)]
Rollup merge of #76565 - matthiaskrgr:box_place, r=oli-obk

take reference to Place directly instead of taking reference to Box<Place>

clippy::borrowed_box

3 years agoRollup merge of #76563 - yokodake:patch-1, r=jonas-schievink
Tyler Mandry [Thu, 10 Sep 2020 19:20:09 +0000 (12:20 -0700)]
Rollup merge of #76563 - yokodake:patch-1, r=jonas-schievink

small typo fix in rustc_parse docs

small typo in rustc_parse::new_parser_from_file's documentation

I'm not sure a PR is the way to do this though.

3 years agoRollup merge of #76559 - lcnr:const-evaluatable, r=oli-obk
Tyler Mandry [Thu, 10 Sep 2020 19:20:07 +0000 (12:20 -0700)]
Rollup merge of #76559 - lcnr:const-evaluatable, r=oli-obk

add the `const_evaluatable_checked` feature

Implements a rather small subset of https://github.com/rust-lang/compiler-team/issues/340

Unlike the MCP, this does not try to compare different constant, but instead only adds the constants found in where clauses
to the predicates of a function. This PR adds the feature gate `const_evaluatable_checked`, without which nothing should change.

r? @oli-obk @eddyb

3 years agoRollup merge of #76555 - alilleybrinker:reword_trivial_casts_lint_doc, r=steveklabnik
Tyler Mandry [Thu, 10 Sep 2020 19:20:06 +0000 (12:20 -0700)]
Rollup merge of #76555 - alilleybrinker:reword_trivial_casts_lint_doc, r=steveklabnik

Reword `trivial_casts` lint in rustc book to better explain what it does.

The current description of the trivial casts lint under the "allowed
by default" listing in the rustc book indicates the lint is for casts
which may be removed, which is less clear than saying it's for casts
which may be replaced by coercion (which is the wording used by the
error message included in the doc).

This commit changes the wording slightly to better describe what the
lint does.

This issue bit me in some recent code where I was attempting to
convert a `Vec<SomeType>` to a `Vec<SomeTraitObject>`, and
hit my project-wide `#![deny(trivial_casts)]` with
`map(|o| Box::new(o) as TraitObject)`. I'd read the book docs for
`trivial_casts` and was surprised by the error, as I took it to mean
the cast ought to be removed (rather than replaced by ascription
in this case). Removing the cast meant other code didn't compile,
and I then found issues like #23742 and realized my misunderstanding.

3 years agoRollup merge of #76548 - tmiasko:validate, r=davidtwco
Tyler Mandry [Thu, 10 Sep 2020 19:20:04 +0000 (12:20 -0700)]
Rollup merge of #76548 - tmiasko:validate, r=davidtwco

Validate removal of AscribeUserType, FakeRead, and Shallow borrow

Those statements are removed by CleanupNonCodegenStatements pass
in drop lowering phase, and should not occur afterwards.

3 years agoRollup merge of #76524 - davidtwco:issue-76077-inaccessible-private-fields, r=estebank
Tyler Mandry [Thu, 10 Sep 2020 19:20:02 +0000 (12:20 -0700)]
Rollup merge of #76524 - davidtwco:issue-76077-inaccessible-private-fields, r=estebank

typeck: don't suggest inaccessible private fields

Fixes #76077.

This PR adjusts the missing field diagnostic logic in typeck so that when none of the missing fields in a struct expr are accessible then the error is less confusing.

r? @estebank

3 years agoRollup merge of #76514 - hameerabbasi:const-generics-revs, r=lcnr
Tyler Mandry [Thu, 10 Sep 2020 19:20:01 +0000 (12:20 -0700)]
Rollup merge of #76514 - hameerabbasi:const-generics-revs, r=lcnr

Add revisions to const generic issue UI tests.

Fixes #75279.

I have gotten into the flow, so I can do more of these if requested. I'm looking for feedback as to whether my work is on the right track so far.

3 years agoRollup merge of #76289 - arijit79:master, r=jyn514
Tyler Mandry [Thu, 10 Sep 2020 19:19:59 +0000 (12:19 -0700)]
Rollup merge of #76289 - arijit79:master, r=jyn514

Add docs about crate level documentation support

Wrote information about how to write documentation on the crate level in rhe rustdoc book

3 years agoRollup merge of #75857 - dtolnay:unsafe, r=nagisa
Tyler Mandry [Thu, 10 Sep 2020 19:19:57 +0000 (12:19 -0700)]
Rollup merge of #75857 - dtolnay:unsafe, r=nagisa

Syntactically permit unsafety on mods

Similar to https://github.com/rust-lang/rust/pull/66183; we will accept these constructs syntactically but reject with a semantic check after macro expansion if a proc macro hasn't replaced it with something else meaningful to Rust.

```rust
#[mymacro]
unsafe mod m {
    ...
}

#[mymacro]
unsafe extern "C++" {
    ...
}
```

The intention is that this might be used as a kind of "item-level unsafe" in attribute macro DSLs -- holding things which are unsafe to declare but potentially safe to use. For example I look forward to using this in https://github.com/dtolnay/cxx.

In the absence of a procedural macro rewriting them to something else, they'll continue to be rejected at compile time though with a better error message than before.

### Before:

```console
error: expected item, found keyword `unsafe`
 --> src/main.rs:1:1
  |
1 | unsafe mod m {
  | ^^^^^^ expected item
```

### After:

```console
error: module cannot be declared unsafe
 --> src/main.rs:1:1
  |
1 | unsafe mod m {
  | ^^^^^^

error: extern block cannot be declared unsafe
 --> src/main.rs:4:1
  |
4 | unsafe extern "C++" {
  | ^^^^^^
```

Closes #68048.

3 years agotypeck/pat: inaccessible private fields
David Wood [Thu, 10 Sep 2020 11:32:45 +0000 (12:32 +0100)]
typeck/pat: inaccessible private fields

This commit adjusts the missing field diagnostic logic for struct
patterns in typeck to improve the diagnostic when the missing fields are
inaccessible.

Signed-off-by: David Wood <david@davidtw.co>
3 years agotypeck/expr: inaccessible private fields
David Wood [Wed, 9 Sep 2020 14:42:37 +0000 (15:42 +0100)]
typeck/expr: inaccessible private fields

This commit adjusts the missing field diagnostic logic for struct
expressions in typeck to improve the diagnostic when the missing
fields are inaccessible.

Signed-off-by: David Wood <david@davidtw.co>
3 years agoAuto merge of #76564 - pietroalbini:ci-avoid-wasting-10-minutes, r=Mark-Simulacrum
bors [Thu, 10 Sep 2020 16:42:00 +0000 (16:42 +0000)]
Auto merge of #76564 - pietroalbini:ci-avoid-wasting-10-minutes, r=Mark-Simulacrum

ci: avoid moving the build directory on GHA

While waiting for a PR job to start testing my code, I noticed the symlink-build-dir step took 10 minutes to complete, so I investigated what caused that.

It seems like something changed in the build environment between version 20200901.1 (where the step took 45 seconds) and version 20200908.1 (where the step took 10 minutes). At the time of writing this commit, the rust-lang organization is on vertsion 20200908.1, while the rust-lang-ci organization is at version 20200901.1 (and is not affected by this yet).

There is no need for this step anymore on GHA, as our XL builders got an increase in the root paritition size, so this commit removes the code that moved stuff around on GHA (while keeping it on Azure).

For the record, at the time of writing this, the disk situation is:

```
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       667G   60G  607G   9% /
/dev/sdb1       110G  4.1G  101G   4% /mnt
```

r? `@Mark-Simulacrum`

3 years agoMerge commit '5034d47f721ff4c3a3ff2aca9ef2ef3e1d067f9f' into clippyup
flip1995 [Thu, 10 Sep 2020 15:47:07 +0000 (17:47 +0200)]
Merge commit '5034d47f721ff4c3a3ff2aca9ef2ef3e1d067f9f' into clippyup

3 years agoAuto merge of #5980 - matsujika:create-dir, r=flip1995
bors [Thu, 10 Sep 2020 14:34:22 +0000 (14:34 +0000)]
Auto merge of #5980 - matsujika:create-dir, r=flip1995

Add a lint to prevent `create_dir` from being used

This closes #5950
changelog: none

3 years agoAdd docs about crate level documentation support
arijit79 [Thu, 3 Sep 2020 14:38:15 +0000 (20:08 +0530)]
Add docs about crate level documentation support

3 years agoAuto merge of #5931 - montrivo:unit-arg, r=flip1995
bors [Thu, 10 Sep 2020 14:11:27 +0000 (14:11 +0000)]
Auto merge of #5931 - montrivo:unit-arg, r=flip1995

improve the suggestion of the lint `unit-arg`

Fixes #5823
Fixes #6015

Changes
```
help: move the expression in front of the call...
  |
3 |     g();
  |
help: ...and use a unit literal instead
  |
3 |     o.map_or((), |i| f(i))
  |
```
into
```
help: move the expression in front of the call and replace it with the unit literal `()`
  |
3 |     g();
  |     o.map_or((), |i| f(i))
  |
```
changelog: improve the suggestion of the lint `unit-arg`

3 years agoSyntactically permit unsafety on mods
David Tolnay [Sun, 23 Aug 2020 10:42:19 +0000 (03:42 -0700)]
Syntactically permit unsafety on mods

3 years agoAuto merge of #6023 - matthiaskrgr:box, r=flip1995
bors [Thu, 10 Sep 2020 13:49:50 +0000 (13:49 +0000)]
Auto merge of #6023 - matthiaskrgr:box, r=flip1995

link to the Box docs in related lint documentation.

changelog: link to the box docs in lint docs

3 years agoAuto merge of #6027 - flip1995:rustup, r=flip1995
bors [Thu, 10 Sep 2020 13:25:39 +0000 (13:25 +0000)]
Auto merge of #6027 - flip1995:rustup, r=flip1995

Rustup

r? `@ghost`

changelog: none

3 years agoCleanup of rustup
flip1995 [Thu, 10 Sep 2020 12:18:05 +0000 (14:18 +0200)]
Cleanup of rustup

3 years agoAdd missing examples on core traits' method
Guillaume Gomez [Thu, 10 Sep 2020 12:11:25 +0000 (14:11 +0200)]
Add missing examples on core traits' method

3 years agouse push(char) instead of push_str(&str) to add single chars to strings
Matthias Krüger [Thu, 10 Sep 2020 11:57:40 +0000 (13:57 +0200)]
use push(char) instead of push_str(&str) to add single chars to strings

clippy::single-char-push-str

3 years agodon't clone types that are copy (clippy::clone_on_copy)
Matthias Krüger [Thu, 10 Sep 2020 11:20:33 +0000 (13:20 +0200)]
don't clone types that are copy (clippy::clone_on_copy)

3 years agouse String::from instead of format!() macro to craft string clippy::useless_format
Matthias Krüger [Thu, 10 Sep 2020 11:16:35 +0000 (13:16 +0200)]
use String::from instead of format!() macro to craft string clippy::useless_format

3 years agotake reference to Place directly instead of taking reference to Box<Place>
Matthias Krüger [Thu, 10 Sep 2020 11:08:28 +0000 (13:08 +0200)]
take reference to Place directly instead of taking reference to Box<Place>

clippy::borrowed_box

3 years agoci: avoid moving the build directory on GHA
Pietro Albini [Thu, 10 Sep 2020 10:54:29 +0000 (12:54 +0200)]
ci: avoid moving the build directory on GHA

While waiting for a PR job to start testing my code, I noticed the
symlink-build-dir step took 10 minutes to complete, so I investigated
what caused that.

It seems like something changed in the build environment between version
20200901.1 (where the step took 45 seconds) and version 20200908.1
(where the step took 10 minutes). At the time of writing this commit,
the rust-lang organization is on vertsion 20200908.1, while the
rust-lang-ci organization is at version 20200901.1 (and is not affected
by this yet).

There is no need for this step anymore on GHA, as our XL builders got an
increase in the root paritition size, so this commit removes the code
that moved stuff around on GHA (while keeping it on Azure).

For the record, at the time of writing this, the disk situation is:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       667G   60G  607G   9% /
/dev/sdb1       110G  4.1G  101G   4% /mnt

3 years agoAuto merge of #76378 - petrochenkov:lldtest, r=Mark-Simulacrum
bors [Thu, 10 Sep 2020 10:06:44 +0000 (10:06 +0000)]
Auto merge of #76378 - petrochenkov:lldtest, r=Mark-Simulacrum

rustbuild: Build tests with LLD if `use-lld = true` was passed

Addresses https://github.com/rust-lang/rust/pull/76127#discussion_r479932392.

Our test suite is generally ready to run with an explicitly specified linker (https://github.com/rust-lang/rust/pull/45191),
 so LLD specified with `use-lld = true` works as well.

Only 4 tests fail (on `x86_64-pc-windows-msvc`):
```
ui/panic-runtime/lto-unwind.rs
run-make-fulldeps/debug-assertions
run-make-fulldeps/foreign-exceptions
run-make-fulldeps/test-harness
```
All of them are legitimate issues with LLD (or at least with combination Rust+LLD) and manifest in segfaults on access to TLS (https://github.com/rust-lang/rust/pull/76127#issuecomment-683473325). UPD: These issues are caused by https://github.com/rust-lang/rust/issues/72145 and appear because I had `-Ctarget-cpu=native` set.

UPD: Further commits build tests with LLD for non-MSVC targets and propagate LLD to more places when `use-lld` is enabled.

3 years agosmall typo fix in rustc_parse docs
Nanami [Thu, 10 Sep 2020 09:56:11 +0000 (11:56 +0200)]
small typo fix in rustc_parse docs

3 years agoAuto merge of #76291 - matklad:spacing, r=petrochenkov
bors [Thu, 10 Sep 2020 08:07:48 +0000 (08:07 +0000)]
Auto merge of #76291 - matklad:spacing, r=petrochenkov

Rename IsJoint -> Spacing

Builds on #76286 and might conflict with #76285

r? `@petrochenkov`

3 years agoAuto merge of #6024 - matthiaskrgr:unit_type, r=phansch
bors [Thu, 10 Sep 2020 07:49:07 +0000 (07:49 +0000)]
Auto merge of #6024 - matthiaskrgr:unit_type, r=phansch

print the unit type `()` in related lint messages.

changelog: print the unit type `()` in related lint messages

3 years agofix tidy, small cleanup
Bastian Kauschke [Thu, 10 Sep 2020 07:48:02 +0000 (09:48 +0200)]
fix tidy, small cleanup

3 years agoAdd revisions to const generic UI tests.
Hameer Abbasi [Thu, 10 Sep 2020 07:30:05 +0000 (09:30 +0200)]
Add revisions to const generic UI tests.

3 years agoAdd revisions to const generic default UI tests.
Hameer Abbasi [Thu, 10 Sep 2020 07:18:40 +0000 (09:18 +0200)]
Add revisions to const generic default UI tests.

3 years agoRespond to review comments.
Hameer Abbasi [Thu, 10 Sep 2020 07:04:14 +0000 (09:04 +0200)]
Respond to review comments.

3 years agoimplement `const_evaluatable_checked` feature MVP
Bastian Kauschke [Thu, 10 Sep 2020 06:52:02 +0000 (08:52 +0200)]
implement `const_evaluatable_checked` feature MVP

3 years agoAuto merge of #75573 - Aaron1011:feature/const-mutation-lint, r=oli-obk
bors [Thu, 10 Sep 2020 05:54:26 +0000 (05:54 +0000)]
Auto merge of #75573 - Aaron1011:feature/const-mutation-lint, r=oli-obk

Add CONST_ITEM_MUTATION lint

Fixes #74053
Fixes #55721

This PR adds a new lint `CONST_ITEM_MUTATION`.
Given an item `const FOO: SomeType = ..`, this lint fires on:

* Attempting to write directly to a field (`FOO.field = some_val`) or
  array entry (`FOO.array_field[0] = val`)
* Taking a mutable reference to the `const` item (`&mut FOO`), including
  through an autoderef `FOO.some_mut_self_method()`

The lint message explains that since each use of a constant creates a
new temporary, the original `const` item will not be modified.

3 years agoAuto merge of #75573 - Aaron1011:feature/const-mutation-lint, r=oli-obk
bors [Thu, 10 Sep 2020 05:54:26 +0000 (05:54 +0000)]
Auto merge of #75573 - Aaron1011:feature/const-mutation-lint, r=oli-obk

Add CONST_ITEM_MUTATION lint

Fixes #74053
Fixes #55721

This PR adds a new lint `CONST_ITEM_MUTATION`.
Given an item `const FOO: SomeType = ..`, this lint fires on:

* Attempting to write directly to a field (`FOO.field = some_val`) or
  array entry (`FOO.array_field[0] = val`)
* Taking a mutable reference to the `const` item (`&mut FOO`), including
  through an autoderef `FOO.some_mut_self_method()`

The lint message explains that since each use of a constant creates a
new temporary, the original `const` item will not be modified.

3 years agoAuto merge of #76558 - tmandry:rollup-bskim2r, r=tmandry
bors [Thu, 10 Sep 2020 04:03:28 +0000 (04:03 +0000)]
Auto merge of #76558 - tmandry:rollup-bskim2r, r=tmandry

Rollup of 7 pull requests

Successful merges:

 - #74787 (Move `rustllvm` into `compiler/rustc_llvm`)
 - #76458 (Add drain_filter method to HashMap and HashSet)
 - #76472 (rustbuild: don't set PYTHON_EXECUTABLE and WITH_POLLY cmake vars since they are no longer supported by llvm)
 - #76497 (Use intra-doc links in `core::ptr`)
 - #76500 (Add -Zgraphviz_dark_mode and monospace font fix)
 - #76543 (Document btree's unwrap_unchecked)
 - #76556 (Revert #76285)

Failed merges:

r? `@ghost`

3 years agoRollup merge of #76556 - tmandry:revert-76285, r=tmandry
Tyler Mandry [Thu, 10 Sep 2020 04:02:38 +0000 (21:02 -0700)]
Rollup merge of #76556 - tmandry:revert-76285, r=tmandry

Revert #76285

Fixes #76399. Reverting because the issue is P-critical and there are no PRs up to fix it.

r? @Mark-Simulacrum
cc @matklad @dtolnay

3 years agoRollup merge of #76543 - ssomers:btree_cleanup_4, r=Mark-Simulacrum
Tyler Mandry [Thu, 10 Sep 2020 04:02:36 +0000 (21:02 -0700)]
Rollup merge of #76543 - ssomers:btree_cleanup_4, r=Mark-Simulacrum

Document btree's unwrap_unchecked

#74693's second wind

3 years agoRollup merge of #76500 - richkadel:mir-graphviz-dark, r=tmandry
Tyler Mandry [Thu, 10 Sep 2020 04:02:35 +0000 (21:02 -0700)]
Rollup merge of #76500 - richkadel:mir-graphviz-dark, r=tmandry

Add -Zgraphviz_dark_mode and monospace font fix

Many developers use a dark theme with editors and IDEs, but this
typically doesn't extend to graphviz output.

When I bring up a MIR graphviz document, the white background is
strikingly bright. This new option changes the colors used for graphviz
output to work better in dark-themed UIs.

<img width="1305" alt="Screen Shot 2020-09-09 at 3 00 31 PM" src="https://user-images.githubusercontent.com/3827298/92659478-4b9bff00-f2ad-11ea-8894-b40d3a873cb9.png">

Also fixed the monospace font for common graphviz renders (e.g., VS Code extensions), as described in https://github.com/rust-lang/rust/pull/76500#issuecomment-689837948

**Before:**
<img width="943" alt="Screen Shot 2020-09-09 at 2 48 44 PM" src="https://user-images.githubusercontent.com/3827298/92658939-47231680-f2ac-11ea-97ac-96727e4dd622.png">

**Now with fix:**
<img width="943" alt="Screen Shot 2020-09-09 at 2 49 02 PM" src="https://user-images.githubusercontent.com/3827298/92658959-51451500-f2ac-11ea-9aae-de982d466d6a.png">

3 years agoRollup merge of #76497 - camelid:intra-doc-links-for-core-ptr, r=jyn514
Tyler Mandry [Thu, 10 Sep 2020 04:02:33 +0000 (21:02 -0700)]
Rollup merge of #76497 - camelid:intra-doc-links-for-core-ptr, r=jyn514

Use intra-doc links in `core::ptr`

Part of #75080.

The only link that I did not change is a link to a function on the
`pointer` primitive because intra-doc links for the `pointer` primitive
don't work yet (see #63351).

---

@rustbot modify labels: A-intra-doc-links T-doc

3 years agoRollup merge of #76472 - matthiaskrgr:llvm_cmake_vars, r=Mark-Simulacrum
Tyler Mandry [Thu, 10 Sep 2020 04:02:32 +0000 (21:02 -0700)]
Rollup merge of #76472 - matthiaskrgr:llvm_cmake_vars, r=Mark-Simulacrum

rustbuild: don't set PYTHON_EXECUTABLE and WITH_POLLY cmake vars since they are no longer supported by llvm

This resolves

CMake Warning:
  Manually-specified variables were not used by the project:

    PYTHON_EXECUTABLE
    WITH_POLLY

3 years agoRollup merge of #76458 - mbrubeck:hash_drain_filter, r=Amanieu
Tyler Mandry [Thu, 10 Sep 2020 04:02:27 +0000 (21:02 -0700)]
Rollup merge of #76458 - mbrubeck:hash_drain_filter, r=Amanieu

Add drain_filter method to HashMap and HashSet

Add `HashMap::drain_filter` and `HashSet::drain_filter`, implementing part of rust-lang/rfcs#2140.  These new methods are unstable.  The tracking issue is #59618.

The added iterators behave the same as `BTreeMap::drain_filter` and `BTreeSet::drain_filter`, except their iteration order is arbitrary.  The unit tests are adapted from `alloc::collections::btree`.

This branch rewrites `HashSet` to be a wrapper around `hashbrown::HashSet` rather than `std::collections::HashMap`.
 (Both are themselves wrappers around `hashbrown::HashMap`, so the in-memory representation is the same either way.)  This lets `std` re-use more iterator code from `hashbrown`.  Without this change, we would need to duplicate much more code to implement `HashSet::drain_filter`.

This branch also updates the `hashbrown` crate to version 0.9.0.  Aside from changes related to the `DrainFilter` iterators, this version only changes features that are not used in libstd or rustc.  And it updates `indexmap` to version 1.6.0, whose only change is compatibility with `hashbrown` 0.9.0.

3 years agoRollup merge of #74787 - petrochenkov:rustllvm, r=cuviper
Tyler Mandry [Thu, 10 Sep 2020 04:02:24 +0000 (21:02 -0700)]
Rollup merge of #74787 - petrochenkov:rustllvm, r=cuviper

Move `rustllvm` into `compiler/rustc_llvm`

The `rustllvm` directory is not self-contained, it contains C++ code built by a build script of the `rustc_llvm` crate which is then linked into that crate.
So it makes sense to make `rustllvm` a part of `rustc_llvm` and move it into its directory.
I replaced `rustllvm` with more obvious `llvm-wrapper` as the subdirectory name, but something like `llvm-adapter` would work as well, other suggestions are welcome.

To make things more confusing, the Rust side of FFI functions defined in `rustllvm` can be found in `rustc_codegen_llvm` rather than in `rustc_llvm`. Perhaps they need to be moved as well, but this PR doesn't do that.

The presence of multiple LLVM-related directories in `src` (`llvm-project`, `rustllvm`, `librustc_llvm`, `librustc_codegen_llvm` and their predecessors) historically confused me and made me wonder about their purpose.
With this PR we will have LLVM itself (`llvm-project`), a FFI crate (`rustc_llvm`, kind of `llvm-sys`) and a codegen backend crate using LLVM through the FFI crate (`rustc_codegen_llvm`).

3 years agoReword `trivial_casts` lint to better explain.
Andrew Lilley Brinker [Thu, 10 Sep 2020 02:36:15 +0000 (19:36 -0700)]
Reword `trivial_casts` lint to better explain.

The current description of the trivial casts lint under the "allowed
by default" listing in the rustc book indicates the lint is for lints
which may be removed, which is less clear than saying it's for lints
which may be replaced by coercion (which is the wording used by the
error message included in the doc).

This commit changes the wording slightly to better describe what the
lint does.

3 years agoRevert "Rollup merge of #76285 - matklad:censor-spacing, r=petrochenkov"
Tyler Mandry [Thu, 10 Sep 2020 02:18:46 +0000 (02:18 +0000)]
Revert "Rollup merge of #76285 - matklad:censor-spacing, r=petrochenkov"

This reverts commit 85cee57fd791d670d92dc61e0ad71594128dd45a, reversing
changes made to b4d387302416c90a3f70211770292d8d8ab5e07d.

3 years agoValidate removal of AscribeUserType, FakeRead, and Shallow borrow
Tomasz Miąsko [Thu, 10 Sep 2020 00:00:00 +0000 (00:00 +0000)]
Validate removal of AscribeUserType, FakeRead, and Shallow borrow

Those statements are removed by CleanupNonCodegenStatements pass
in drop lowering phase, and should not occur afterwards.

3 years agoDocument btree's unwrap_unchecked
Stein Somers [Thu, 23 Jul 2020 18:15:47 +0000 (20:15 +0200)]
Document btree's unwrap_unchecked

3 years agoAuto merge of #76540 - tmandry:rollup-5ogt8x0, r=tmandry
bors [Wed, 9 Sep 2020 22:17:42 +0000 (22:17 +0000)]
Auto merge of #76540 - tmandry:rollup-5ogt8x0, r=tmandry

Rollup of 14 pull requests

Successful merges:

 - #75094 (Add `-Z combine_cgu` flag)
 - #75984 (Improve unresolved use error message)
 - #76141 (Address review comments about config.toml from rustc-dev-guide PR)
 - #76313 (Improved the MIR spanview output)
 - #76430 (Add align to rustc-attrs unstable book)
 - #76465 (Add a script to automatically update Rust/Clang versions in documentation)
 - #76473 (Add missed spaces to GCC-WARNING.txt)
 - #76481 (Convert repetitive target_pointer_width checks to const solution.)
 - #76493 (Remove a stray ignore-tidy-undocumented-unsafe)
 - #76504 (Capitalize safety comments)
 - #76515 (SessionDiagnostic: Fix non-determinism in generated format string.)
 - #76516 (Enable GitHub Releases synchronization)
 - #76522 (remove redundant clones)
 - #76523 (Remove unused PlaceContext::NonUse(NonUseContext::Coverage))

Failed merges:

r? `@ghost`

3 years agoRollup merge of #76523 - tmiasko:non-use-context-coverage, r=wesleywiser
Tyler Mandry [Wed, 9 Sep 2020 22:06:07 +0000 (15:06 -0700)]
Rollup merge of #76523 - tmiasko:non-use-context-coverage, r=wesleywiser

Remove unused PlaceContext::NonUse(NonUseContext::Coverage)

r? @richkadel / @wesleywiser

3 years agoRollup merge of #76522 - matthiaskrgr:redundant_clone, r=jonas-schievink
Tyler Mandry [Wed, 9 Sep 2020 22:06:05 +0000 (15:06 -0700)]
Rollup merge of #76522 - matthiaskrgr:redundant_clone, r=jonas-schievink

remove redundant clones

(clippy::redundant_clone)

3 years agoRollup merge of #76516 - pietroalbini:github-releases, r=Mark-Simulacrum
Tyler Mandry [Wed, 9 Sep 2020 22:06:04 +0000 (15:06 -0700)]
Rollup merge of #76516 - pietroalbini:github-releases, r=Mark-Simulacrum

Enable GitHub Releases synchronization

This PR enables the triagebot feature to automatically populate [GitHub Releases](https://github.com/rust-lang/rust/releases) for this repository based on the changelog. See https://github.com/rust-lang/triagebot/pull/811 for the implementation of this feature on triagebot's side, and more insights on how it works.

Note: once this lands people subscribed to the ~~firehose~~ rust-lang/rust repository will probably receive a ton of notifications for all the releases being created, but this should be a one-time thing.

r? @Mark-Simulacrum
cc @rust-lang/release

3 years agoRollup merge of #76515 - jumbatm:issue76496-reproducibility-regression, r=oli-obk
Tyler Mandry [Wed, 9 Sep 2020 22:06:02 +0000 (15:06 -0700)]
Rollup merge of #76515 - jumbatm:issue76496-reproducibility-regression, r=oli-obk

SessionDiagnostic: Fix non-determinism in generated format string.

Fixes #76496.

r? @oli-obk

3 years agoRollup merge of #76504 - Flying-Toast:master, r=lcnr
Tyler Mandry [Wed, 9 Sep 2020 22:06:00 +0000 (15:06 -0700)]
Rollup merge of #76504 - Flying-Toast:master, r=lcnr

Capitalize safety comments

3 years agoRollup merge of #76493 - moonheart08:unique-quick, r=jyn514
Tyler Mandry [Wed, 9 Sep 2020 22:05:59 +0000 (15:05 -0700)]
Rollup merge of #76493 - moonheart08:unique-quick, r=jyn514

Remove a stray ignore-tidy-undocumented-unsafe

There were no undocumented unsafe blocks in the file. This shouldn't require any special review.

3 years agoRollup merge of #76481 - moonheart08:vec_deque_constify, r=sfackler
Tyler Mandry [Wed, 9 Sep 2020 22:05:56 +0000 (15:05 -0700)]
Rollup merge of #76481 - moonheart08:vec_deque_constify, r=sfackler

Convert repetitive target_pointer_width checks to const solution.

Simply a quick code tidying change. Not sure if more needs to be said.

3 years agoRollup merge of #76473 - ortem:fix-gcc-warning, r=jonas-schievink
Tyler Mandry [Wed, 9 Sep 2020 22:05:54 +0000 (15:05 -0700)]
Rollup merge of #76473 - ortem:fix-gcc-warning, r=jonas-schievink

Add missed spaces to GCC-WARNING.txt

3 years agoRollup merge of #76465 - jyn514:auto-versioning, r=elichai
Tyler Mandry [Wed, 9 Sep 2020 22:05:53 +0000 (15:05 -0700)]
Rollup merge of #76465 - jyn514:auto-versioning, r=elichai

Add a script to automatically update Rust/Clang versions in documentation

From https://github.com/rust-lang/rust/pull/76402#issuecomment-687974508.

r? @elichai

3 years agoRollup merge of #76430 - pickfire:patch-7, r=steveklabnik
Tyler Mandry [Wed, 9 Sep 2020 22:05:51 +0000 (15:05 -0700)]
Rollup merge of #76430 - pickfire:patch-7, r=steveklabnik

Add align to rustc-attrs unstable book

3 years agoRollup merge of #76313 - richkadel:mir-spanview-2, r=wesleywiser
Tyler Mandry [Wed, 9 Sep 2020 22:05:49 +0000 (15:05 -0700)]
Rollup merge of #76313 - richkadel:mir-spanview-2, r=wesleywiser

Improved the MIR spanview output

* Adds missing "tail" spans (spans that continue beyond the end of
overlapping spans)
* Adds a caret to highlight empty spans associated with MIR elements
that have a position, but otherwise would not be visible.
* Adds visual pointing brackets at the beginning and end of each span

<img width="590" alt="Screen Shot 2020-09-03 at 8 38 08 PM" src="https://user-images.githubusercontent.com/3827298/92202571-25510c00-ee34-11ea-89bc-89eea939476d.png">
<img width="1061" alt="Screen Shot 2020-09-03 at 8 41 04 PM" src="https://user-images.githubusercontent.com/3827298/92202629-49145200-ee34-11ea-8fda-fc6e62c80736.png">
<img width="1113" alt="Screen Shot 2020-09-06 at 5 42 57 PM" src="https://user-images.githubusercontent.com/3827298/92339198-ca085f00-f069-11ea-96d1-c01ced50e2ba.png">
<img width="1692" alt="Screen Shot 2020-09-06 at 5 45 54 PM" src="https://user-images.githubusercontent.com/3827298/92339209-d4c2f400-f069-11ea-94c0-b4d36c200878.png">

r? @tmandry
FYI: @wesleywiser

3 years agoRollup merge of #76141 - jyn514:config.toml, r=Mark-Simulacrum
Tyler Mandry [Wed, 9 Sep 2020 22:05:47 +0000 (15:05 -0700)]
Rollup merge of #76141 - jyn514:config.toml, r=Mark-Simulacrum

Address review comments about config.toml from rustc-dev-guide PR

This info was lost in https://github.com/rust-lang/rust/pull/74334. See also https://github.com/rust-lang/rustc-dev-guide/pull/795#pullrequestreview-478197674.
r? @Mark-Simulacrum or @eddyb

3 years agoRollup merge of #75984 - kornelski:typeormodule, r=matthewjasper
Tyler Mandry [Wed, 9 Sep 2020 22:05:45 +0000 (15:05 -0700)]
Rollup merge of #75984 - kornelski:typeormodule, r=matthewjasper

Improve unresolved use error message

"use of undeclared type or module `foo`" doesn't mention that it could be a crate.

This error can happen when users forget to add a dependency to `Cargo.toml`, so I think it's important to mention that it could be a missing crate.

I've used a heuristic based on Rust's naming conventions. It complains about an unknown type if the ident starts with an upper-case letter, and crate or module otherwise. It seems to work very well. The expanded error help covers both an unknown type and a missing crate case.

3 years agoRollup merge of #75094 - 0dvictor:cgu, r=oli-obk
Tyler Mandry [Wed, 9 Sep 2020 22:05:43 +0000 (15:05 -0700)]
Rollup merge of #75094 - 0dvictor:cgu, r=oli-obk

Add `-Z combine_cgu` flag

Introduce a compiler option to let rustc combines all regular CGUs into a single one at the end of compilation.

Part of Issue #64191

3 years agoBTreeMap: pull the map's root out of NodeRef
Stein Somers [Sun, 16 Aug 2020 20:32:50 +0000 (22:32 +0200)]
BTreeMap: pull the map's root out of NodeRef

3 years agoAlso fixed monospace font for d3-graphviz engine
Rich Kadel [Wed, 9 Sep 2020 21:49:32 +0000 (14:49 -0700)]
Also fixed monospace font for d3-graphviz engine

VS code graphviz extensions use d3-graphviz, which supports `Courier`
fontname but does not support `monospace`. This caused graphs to render
poorly because the text sizes were wrong.

3 years agoFix anchor links
Camelid [Wed, 9 Sep 2020 20:42:57 +0000 (13:42 -0700)]
Fix anchor links

#safety -> self#safety

3 years agoMove `rustllvm` into `rustc_llvm`
Vadim Petrochenkov [Sun, 26 Jul 2020 17:11:30 +0000 (20:11 +0300)]
Move `rustllvm` into `rustc_llvm`

3 years agoAuto merge of #74595 - lcnr:ConstEvaluatable-fut-compat, r=oli-obk
bors [Wed, 9 Sep 2020 20:04:04 +0000 (20:04 +0000)]
Auto merge of #74595 - lcnr:ConstEvaluatable-fut-compat, r=oli-obk

make `ConstEvaluatable` more strict

relevant zulip discussion: https://rust-lang.zulipchat.com/#narrow/stream/146212-t-compiler.2Fconst-eval/topic/.60ConstEvaluatable.60.20generic.20functions/near/204125452

Let's see how much this impacts. Depending on how this goes this should probably be a future compat warning.

Short explanation: we currently forbid anonymous constants which depend on generic types, e.g. `[0; std::mem::size_of::<T>]` currently errors.

We previously checked this by evaluating the constant and returned an error if that failed. This however allows things like
```rust
const fn foo<T>() -> usize {
    if std::mem::size_of::<*mut T>() < 8 { // size of *mut T does not depend on T
        std::mem::size_of::<T>()
    } else {
        8
    }
}

fn test<T>() {
    let _ = [0; foo::<T>()];
}
```
which is a backwards compatibility hazard. This also has worrying interactions with mir optimizations (https://github.com/rust-lang/rust/pull/74491#issuecomment-661890421) and intrinsics (#74538).

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

3 years agofix test on 32 bit systems
Bastian Kauschke [Wed, 9 Sep 2020 18:10:23 +0000 (20:10 +0200)]
fix test on 32 bit systems

3 years agoAuto merge of #73971 - ssomers:slice_slasher, r=Mark-Simulacrum
bors [Wed, 9 Sep 2020 17:40:46 +0000 (17:40 +0000)]
Auto merge of #73971 - ssomers:slice_slasher, r=Mark-Simulacrum

BTreeMap mutable iterators should not take any reference to visited nodes during iteration

Fixes #73915, overlapping mutable references during BTreeMap iteration

r? `@RalfJung`

3 years agoprint the unit type `()` in related lint messages.
Matthias Krüger [Wed, 9 Sep 2020 15:59:13 +0000 (17:59 +0200)]
print the unit type `()` in related lint messages.

3 years agoRemove unused PlaceContext::NonUse(NonUseContext::Coverage)
Tomasz Miąsko [Wed, 9 Sep 2020 00:00:00 +0000 (00:00 +0000)]
Remove unused PlaceContext::NonUse(NonUseContext::Coverage)

3 years agolink to the Box docs in related lint documentation.
Matthias Krüger [Wed, 9 Sep 2020 14:53:45 +0000 (16:53 +0200)]
link to the Box docs in related lint documentation.

3 years agoremove redundant clones
Matthias Krüger [Wed, 9 Sep 2020 14:32:55 +0000 (16:32 +0200)]
remove redundant clones

(clippy::redundant_clone)

3 years agoAuto merge of #76445 - jyn514:doctests, r=Mark-Simulacrum,ollie27
bors [Wed, 9 Sep 2020 13:33:01 +0000 (13:33 +0000)]
Auto merge of #76445 - jyn514:doctests, r=Mark-Simulacrum,ollie27

Make rustdoc output deterministic for UI tests

Closes https://github.com/rust-lang/rust/issues/76442 (hopefully, since it's non-deterministic I don't have a way to test).

r? `@Mark-Simulacrum`
cc `@GuillaumeGomez`

3 years agoBTreeMap: avoid aliasing by avoiding slices
Stein Somers [Sun, 16 Aug 2020 17:07:30 +0000 (19:07 +0200)]
BTreeMap: avoid aliasing by avoiding slices

3 years agomake as_leaf return a raw pointer, to reduce aliasing assumptions
Ralf Jung [Thu, 2 Jul 2020 08:36:56 +0000 (10:36 +0200)]
make as_leaf return a raw pointer, to reduce aliasing assumptions

3 years agoAdd revisions to const generic issue UI tests.
Hameer Abbasi [Wed, 9 Sep 2020 11:28:41 +0000 (13:28 +0200)]
Add revisions to const generic issue UI tests.

3 years agoAuto merge of #76513 - rust-lang:rust-analyzer-2020-09-09, r=jonas-schievink
bors [Wed, 9 Sep 2020 11:28:17 +0000 (11:28 +0000)]
Auto merge of #76513 - rust-lang:rust-analyzer-2020-09-09, r=jonas-schievink

:arrow_up: rust-analyzer

r? `@ghost`

3 years agoFix non-determinism in generated format string.
jumbatm [Wed, 9 Sep 2020 11:23:25 +0000 (21:23 +1000)]
Fix non-determinism in generated format string.

3 years ago:arrow_up: rust-analyzer
Jonas Schievink [Wed, 9 Sep 2020 10:41:32 +0000 (12:41 +0200)]
:arrow_up: rust-analyzer

3 years agoAuto merge of #76406 - GuillaumeGomez:create-e0774, r=pickfire,jyn514
bors [Wed, 9 Sep 2020 08:23:33 +0000 (08:23 +0000)]
Auto merge of #76406 - GuillaumeGomez:create-e0774, r=pickfire,jyn514

Create E0774

3 years agoAdd `-Z combine_cgu` flag
Victor Ding [Wed, 9 Sep 2020 04:51:16 +0000 (14:51 +1000)]
Add `-Z combine_cgu` flag

Introduce a compiler option to let rustc combines all regular CGUs into
a single one at the end of compilation.

Part of Issue #64191

3 years agoAuto merge of #76463 - camelid:improve-E0607-explanation, r=jyn514
bors [Wed, 9 Sep 2020 06:33:03 +0000 (06:33 +0000)]
Auto merge of #76463 - camelid:improve-E0607-explanation, r=jyn514

Improve wording of E0607 explanation

`@rustbot` modify labels: A-diagnostics C-enhancement