]> git.lizzy.rs Git - rust.git/log
rust.git
2 years agoGive inline const separate DefKind
Gary Guo [Sat, 2 Oct 2021 11:59:26 +0000 (12:59 +0100)]
Give inline const separate DefKind

2 years agoAuto merge of #90661 - matthiaskrgr:rollup-1umbdlx, r=matthiaskrgr
bors [Sat, 6 Nov 2021 22:55:37 +0000 (22:55 +0000)]
Auto merge of #90661 - matthiaskrgr:rollup-1umbdlx, r=matthiaskrgr

Rollup of 6 pull requests

Successful merges:

 - #90487 (Add a chapter on reading Rustdoc output)
 - #90508 (Apply adjustments for field expression even if inaccessible)
 - #90627 (Suggest dereference of `Box` when inner type is expected)
 - #90642 (use matches!() macro in more places)
 - #90646 (type error go brrrrrrrr)
 - #90649 (Run reveal_all on MIR when inlining is activated.)

Failed merges:

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

2 years agoRollup merge of #90649 - cjgillot:reveal-all-2, r=lcnr
Matthias Krüger [Sat, 6 Nov 2021 22:12:06 +0000 (23:12 +0100)]
Rollup merge of #90649 - cjgillot:reveal-all-2, r=lcnr

Run reveal_all on MIR when inlining is activated.

Fix logic error in https://github.com/rust-lang/rust/pull/85254 which prevented the pass from running when needed.
Fixes https://github.com/rust-lang/rust/issues/78442
r? ``@lcnr``

2 years agoRollup merge of #90646 - BoxyUwU:funky_ice, r=estebank
Matthias Krüger [Sat, 6 Nov 2021 22:12:06 +0000 (23:12 +0100)]
Rollup merge of #90646 - BoxyUwU:funky_ice, r=estebank

type error go brrrrrrrr

Fixes #90444

when we relate something like:
`fn(fn((), (), u32))` with `fn(fn((), (), ()))`
we relate the inner fn ptrs:
`fn((), (), u32)` with `fn((), (), ())`
yielding a `TypeError::ArgumentSorts(_, 2)` which we then use as the `TypeError` for the `fn(fn(..))` which later causes the ICE as the `2` does not correspond to any input or output types in `fn(_)`

r? `@estebank`

2 years agoRollup merge of #90642 - matthiaskrgr:clippy_matches, r=cjgillot
Matthias Krüger [Sat, 6 Nov 2021 22:12:05 +0000 (23:12 +0100)]
Rollup merge of #90642 - matthiaskrgr:clippy_matches, r=cjgillot

use matches!() macro in more places

2 years agoRollup merge of #90627 - camelid:suggest-box-deref, r=davidtwco
Matthias Krüger [Sat, 6 Nov 2021 22:12:04 +0000 (23:12 +0100)]
Rollup merge of #90627 - camelid:suggest-box-deref, r=davidtwco

Suggest dereference of `Box` when inner type is expected

For example:

    enum Ty {
        Unit,
        List(Box<Ty>),
    }

    fn foo(x: Ty) -> Ty {
        match x {
            Ty::Unit => Ty::Unit,
            Ty::List(elem) => foo(elem),
        }
    }

Before, the only suggestion was to rewrap `inner` with `Ty::Wrapper`,
which is unhelpful and confusing:

    error[E0308]: mismatched types
     --> src/test/ui/suggestions/boxed-variant-field.rs:9:31
      |
    9 |         Ty::List(elem) => foo(elem),
      |                               ^^^^
      |                               |
      |                               expected enum `Ty`, found struct `Box`
      |                               help: try using a variant of the expected enum: `Ty::List(elem)`
      |
      = note: expected enum `Ty`
               found struct `Box<Ty>`

Now, rustc will first suggest dereferencing the `Box`, which is most
likely what the user intended:

    error[E0308]: mismatched types
     --> src/test/ui/suggestions/boxed-variant-field.rs:9:31
      |
    9 |         Ty::List(elem) => foo(elem),
      |                               ^^^^ expected enum `Ty`, found struct `Box`
      |
      = note: expected enum `Ty`
               found struct `Box<Ty>`
    help: try dereferencing the `Box`
      |
    9 |         Ty::List(elem) => foo(*elem),
      |                               +
    help: try using a variant of the expected enum
      |
    9 |         Ty::List(elem) => foo(Ty::List(elem)),
      |                               ~~~~~~~~~~~~~~

r? ``@davidtwco``

2 years agoRollup merge of #90508 - nbdd0121:issue-90483, r=davidtwco
Matthias Krüger [Sat, 6 Nov 2021 22:12:03 +0000 (23:12 +0100)]
Rollup merge of #90508 - nbdd0121:issue-90483, r=davidtwco

Apply adjustments for field expression even if inaccessible

The adjustments are used later by ExprUseVisitor to build Place projections and without adjustments it can produce invalid result.

Fix #90483

``@rustbot`` label: T-compiler

2 years agoRollup merge of #90487 - NoraCodes:nora/how-to-read-rustdoc, r=jyn514
Matthias Krüger [Sat, 6 Nov 2021 22:12:02 +0000 (23:12 +0100)]
Rollup merge of #90487 - NoraCodes:nora/how-to-read-rustdoc, r=jyn514

Add a chapter on reading Rustdoc output

Includes documentation for:
 - general page structure
 - navigation
 - searching
 - themes
 - deep-linking

Doesn't include docs on the settings page.

Per https://github.com/rust-lang/rust/issues/90309

2 years agoAuto merge of #90655 - the8472:drain-dot-dot, r=jyn514
bors [Sat, 6 Nov 2021 20:14:37 +0000 (20:14 +0000)]
Auto merge of #90655 - the8472:drain-dot-dot, r=jyn514

Replace some uses of vec.drain(..) with vec.into_iter()

IntoIter should optimize better than Drain

2 years agoSuggest dereference of `Box` when inner type is expected
Noah Lev [Fri, 5 Nov 2021 06:25:16 +0000 (23:25 -0700)]
Suggest dereference of `Box` when inner type is expected

For example:

    enum Ty {
        Unit,
        List(Box<Ty>),
    }

    fn foo(x: Ty) -> Ty {
        match x {
            Ty::Unit => Ty::Unit,
            Ty::List(elem) => foo(elem),
        }
    }

Before, the only suggestion was to rewrap `elem` with `Ty::List`,
which is unhelpful and confusing:

    error[E0308]: mismatched types
     --> src/test/ui/suggestions/boxed-variant-field.rs:9:31
      |
    9 |         Ty::List(elem) => foo(elem),
      |                               ^^^^
      |                               |
      |                               expected enum `Ty`, found struct `Box`
      |                               help: try using a variant of the expected enum: `Ty::List(elem)`
      |
      = note: expected enum `Ty`
               found struct `Box<Ty>`

Now, rustc will first suggest dereferencing the `Box`, which is most
likely what the user intended:

    error[E0308]: mismatched types
     --> src/test/ui/suggestions/boxed-variant-field.rs:9:31
      |
    9 |         Ty::List(elem) => foo(elem),
      |                               ^^^^ expected enum `Ty`, found struct `Box`
      |
      = note: expected enum `Ty`
               found struct `Box<Ty>`
    help: try dereferencing the `Box`
      |
    9 |         Ty::List(elem) => foo(*elem),
      |                               +
    help: try using a variant of the expected enum
      |
    9 |         Ty::List(elem) => foo(Ty::List(elem)),
      |                               ~~~~~~~~~~~~~~

2 years agoReplace some uses of vec.drain(..) with vec.into_iter()
The8472 [Sat, 6 Nov 2021 17:42:07 +0000 (18:42 +0100)]
Replace some uses of vec.drain(..) with vec.into_iter()

IntoIter should optimize better than Drain

2 years agoAuto merge of #90559 - rusticstuff:optimize-bidi-detection, r=davidtwco
bors [Sat, 6 Nov 2021 16:25:00 +0000 (16:25 +0000)]
Auto merge of #90559 - rusticstuff:optimize-bidi-detection, r=davidtwco

Optimize bidi character detection.

Should fix most of the performance regression of the bidi character detection (#90514), to be confirmed with a perf run.

2 years agouse matches!() macro in more places
Matthias Krüger [Sat, 6 Nov 2021 00:31:32 +0000 (01:31 +0100)]
use matches!() macro in more places

2 years agoRun reveal_all on MIR more often.
Camille GILLOT [Sat, 6 Nov 2021 14:56:29 +0000 (15:56 +0100)]
Run reveal_all on MIR more often.

2 years agoAuto merge of #90641 - matthiaskrgr:mut, r=cjgillot
bors [Sat, 6 Nov 2021 13:19:22 +0000 (13:19 +0000)]
Auto merge of #90641 - matthiaskrgr:mut, r=cjgillot

pointee_info_at() does not need mutable access

2 years agotype error go brrrrrrrr
Ellen [Sat, 6 Nov 2021 10:32:11 +0000 (10:32 +0000)]
type error go brrrrrrrr

2 years agoAuto merge of #90617 - tmiasko:time-trace-threads, r=wesleywiser
bors [Sat, 6 Nov 2021 09:55:50 +0000 (09:55 +0000)]
Auto merge of #90617 - tmiasko:time-trace-threads, r=wesleywiser

Initialize LLVM time trace profiler on each code generation thread

In https://reviews.llvm.org/D71059 LLVM 11, the time trace profiler was
extended to support multiple threads.

`timeTraceProfilerInitialize` creates a thread local profiler instance.
When a thread finishes `timeTraceProfilerFinishThread` moves a thread
local instance into a global collection of instances. Finally when all
codegen work is complete `timeTraceProfilerWrite` writes data from the
current thread local instance and the instances in global collection
of instances.

Previously, the profiler was intialized on a single thread only. Since
this thread performs no code generation on its own, the resulting
profile was empty.

Update LLVM codegen to initialize & finish time trace profiler on each
code generation thread.

cc `@tmandry`
r? `@wesleywiser`

2 years agoAuto merge of #90297 - dtolnay:dotzero, r=petrochenkov
bors [Sat, 6 Nov 2021 07:15:05 +0000 (07:15 +0000)]
Auto merge of #90297 - dtolnay:dotzero, r=petrochenkov

Append .0 to unsuffixed float if it would otherwise become int token

Previously the unsuffixed f32/f64 constructors of `proc_macro::Literal` would create literal tokens that are definitely not a float:

```rust
Literal::f32_unsuffixed(10.0)  // 10
Literal::f32_suffixed(10.0)    // 10f32
Literal::f64_unsuffixed(10.0)  // 10
Literal::f64_suffixed(10.0)    // 10f64
```

Notice that the `10` are actually integer tokens if you were to reparse them, not float tokens.

This diff updates `Literal::f32_unsuffixed` and `Literal::f64_unsuffixed` to produce tokens that unambiguously parse as a float. This matches longstanding behavior of the proc-macro2 crate's implementation of these APIs dating back at least 3.5 years, so it's likely an unobjectionable behavior.

```rust
Literal::f32_unsuffixed(10.0)  // 10.0
Literal::f32_suffixed(10.0)    // 10f32
Literal::f64_unsuffixed(10.0)  // 10.0
Literal::f64_suffixed(10.0)    // 10f64
```

Fixes https://github.com/dtolnay/syn/issues/1085.

2 years agoAuto merge of #89970 - jackh726:gats_diagnostics, r=nikomatsakis
bors [Sat, 6 Nov 2021 04:15:22 +0000 (04:15 +0000)]
Auto merge of #89970 - jackh726:gats_diagnostics, r=nikomatsakis

Implementation of GATs outlives lint

See #87479 for background. Closes #87479

The basic premise of this lint/error is to require the user to write where clauses on a GAT when those bounds can be implied or proven from any function on the trait returning that GAT.

## Intuitive Explanation (Attempt) ##
Let's take this trait definition as an example:
```rust
trait Iterable {
    type Item<'x>;
    fn iter<'a>(&'a self) -> Self::Item<'a>;
}
```
Let's focus on the `iter` function. The first thing to realize is that we know that `Self: 'a` because of `&'a self`. If an impl wants `Self::Item` to contain any data with references, then those references must be derived from `&'a self`. Thus, they must live only as long as `'a`. Furthermore, because of the `Self: 'a` implied bound, they must live only as long as `Self`. Since it's `'a` is used in place of `'x`, it is reasonable to assume that any value of `Self::Item<'x>`, and thus `'x`, will only be able to live as long as `Self`. Therefore, we require this bound on `Item` in the trait.

As another example:
```rust
trait Deserializer<T> {
    type Out<'x>;
    fn deserialize<'a>(&self, input: &'a T) -> Self::Out<'a>;
}
```
The intuition is similar here, except rather than a `Self: 'a` implied bound, we have a `T: 'a` implied bound. Thus, the data on `Self::Out<'a>` is derived from `&'a T`, and thus it is reasonable to expect that the lifetime `'x` will always be less than `T`.

## Implementation Algorithm ##
* Given a GAT `<P0 as Trait<P1..Pi>>::G<Pi...Pn>` declared as `trait T<A1..Ai> for A0 { type G<Ai...An>; }` used in return type of one associated function `F`
* Given env `E` (including implied bounds) for `F`
* For each lifetime parameter `'a` in `P0...Pn`:
    * For each other type parameter `Pi != 'a` in `P0...Pn`: // FIXME: this include of lifetime parameters too
        * If `E => (P: 'a)`:
            * Require where clause `Ai: 'a`

## Follow-up questions ##
* What should we do when we don't pass params exactly?
For this example:
```rust
trait Des {
    type Out<'x, D>;
    fn des<'z, T>(&self, data: &'z Wrap<T>) -> Self::Out<'z, Wrap<T>>;
}
```
Should we be requiring a `D: 'x` clause? We pass `Wrap<T>` as `D` and `'z` as `'x`, and should be able to prove that `Wrap<T>: 'z`.

r? `@nikomatsakis`

2 years agoReview comments
jackh726 [Sat, 6 Nov 2021 01:33:14 +0000 (21:33 -0400)]
Review comments

2 years agoAuto merge of #88441 - jackh726:closure_norm, r=nikomatsakis
bors [Sat, 6 Nov 2021 01:12:39 +0000 (01:12 +0000)]
Auto merge of #88441 - jackh726:closure_norm, r=nikomatsakis

Normalize obligations for closure confirmation

Based on #90017

Fixes #74261
Fixes #71955
Fixes #88459

r? `@nikomatsakis`

2 years agopointee_info_at() does not need mutable access
Matthias Krüger [Sat, 6 Nov 2021 00:03:56 +0000 (01:03 +0100)]
pointee_info_at() does not need mutable access

2 years agoAuto merge of #90631 - matthiaskrgr:rollup-a5tzjh3, r=matthiaskrgr
bors [Fri, 5 Nov 2021 22:12:31 +0000 (22:12 +0000)]
Auto merge of #90631 - matthiaskrgr:rollup-a5tzjh3, r=matthiaskrgr

Rollup of 5 pull requests

Successful merges:

 - #89942 (Reorder `widening_impl`s to make the doc clearer)
 - #90569 (Fix tests using `only-i686` to use the correct `only-x86` directive)
 - #90597 (Warn for variables that are no longer captured)
 - #90623 (Remove more checks for LLVM < 12)
 - #90626 (Properly register text_direction_codepoint_in_comment lint.)

Failed merges:

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

2 years agoRollup merge of #90626 - rusticstuff:be-more-accepting, r=jyn514
Matthias Krüger [Fri, 5 Nov 2021 20:12:31 +0000 (21:12 +0100)]
Rollup merge of #90626 - rusticstuff:be-more-accepting, r=jyn514

Properly register text_direction_codepoint_in_comment lint.

This makes it known to the compiler so it can be configured like with `#![allow(text_direction_codepoint_in_comment)]`.

Fixes #90614.

2 years agoRollup merge of #90623 - cuviper:llvm-12, r=nikic
Matthias Krüger [Fri, 5 Nov 2021 20:12:30 +0000 (21:12 +0100)]
Rollup merge of #90623 - cuviper:llvm-12, r=nikic

Remove more checks for LLVM < 12

We already updated the minimum to 12 in #90175, but we missed a few `get_version()` checks.

2 years agoRollup merge of #90597 - nikomatsakis:issue-90465, r=wesleywiser
Matthias Krüger [Fri, 5 Nov 2021 20:12:29 +0000 (21:12 +0100)]
Rollup merge of #90597 - nikomatsakis:issue-90465, r=wesleywiser

Warn for variables that are no longer captured

r? `@wesleywiser`

cc `@rust-lang/wg-rfc-2229`

Fixes #90465

2 years agoRollup merge of #90569 - wesleywiser:fix_only_i686_tests, r=Mark-Simulacrum
Matthias Krüger [Fri, 5 Nov 2021 20:12:28 +0000 (21:12 +0100)]
Rollup merge of #90569 - wesleywiser:fix_only_i686_tests, r=Mark-Simulacrum

Fix tests using `only-i686` to use the correct `only-x86` directive

We translate `i686` to `x86` which means tests marked as `only-i686`
never ran. Update those tests to use `only-x86`.

We parse the `only-` architecture directive here

https://github.com/rust-lang/rust/blob/27143a9094b55a00d5f440b05b0cb4233b300d33/src/tools/compiletest/src/util.rs#L160-L168

and we translate `i686` to `x86` here

https://github.com/rust-lang/rust/blob/27143a9094b55a00d5f440b05b0cb4233b300d33/src/tools/compiletest/src/util.rs#L56

2 years agoRollup merge of #89942 - JohnTitor:reorder-widening_impl, r=dtolnay
Matthias Krüger [Fri, 5 Nov 2021 20:12:28 +0000 (21:12 +0100)]
Rollup merge of #89942 - JohnTitor:reorder-widening_impl, r=dtolnay

Reorder `widening_impl`s to make the doc clearer

Fixes #88736
This moves `{widening,carrying}_mul`s to the bottom to place consts on the top.

2 years agoAdd a chapter on reading Rustdoc output
Leonora Tindall [Mon, 1 Nov 2021 21:45:01 +0000 (16:45 -0500)]
Add a chapter on reading Rustdoc output

Includes documentation for:
 - general page structure
 - navigation
 - searching
 - themes
 - deep-linking

Doesn't include docs on the settings page.

2 years agoUpdate LLVM comments around NoAliasMutRef
Josh Stone [Fri, 5 Nov 2021 19:22:51 +0000 (12:22 -0700)]
Update LLVM comments around NoAliasMutRef

2 years agoProperly register text_direction_codepoint_in_comment lint.
Hans Kratz [Fri, 5 Nov 2021 18:59:06 +0000 (19:59 +0100)]
Properly register text_direction_codepoint_in_comment lint.

2 years agoAdd test to confirm fnn_unsuffixed does not emit exponent notation
David Tolnay [Fri, 5 Nov 2021 18:48:28 +0000 (11:48 -0700)]
Add test to confirm fnn_unsuffixed does not emit exponent notation

2 years agoAuto merge of #90583 - willcrichton:example-analyzer, r=jyn514
bors [Fri, 5 Nov 2021 19:05:36 +0000 (19:05 +0000)]
Auto merge of #90583 - willcrichton:example-analyzer, r=jyn514

Fix ICE when rustdoc is scraping examples inside of a proc macro

This PR provides a clearer semantics for how --scrape-examples interacts with macros. If an expression's span AND it's enclosing item's span both are not `from_expansion`, then the example will be scraped. The added test case `rustdoc-scrape-examples-macros` shows a variety of situations.

* A macro-rules macro that takes a function call as input: good
* A macro-rules macro that generates a function call as output: bad
* A proc-macro that generates a function call as output: bad
* An attribute macro that generates a function call as output: bad
* An attribute macro that takes a function call as input: good, if the proc macro is designed to propagate the input spans

I ran this updated rustdoc on pyo3 and confirmed that it successfully scrapes examples from inside a proc macro, eg

<img width="1013" alt="Screen Shot 2021-11-04 at 1 11 28 PM" src="https://user-images.githubusercontent.com/663326/140412691-81a3bb6b-a448-4a1b-a293-f7a795553634.png">

(cc `@mejrs)`

Additionally, this PR fixes an ordering bug in the highlighting logic.

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

r? `@jyn514`

2 years agoUpdate the documented default of -Zmutable-noalias
Josh Stone [Fri, 5 Nov 2021 19:01:59 +0000 (12:01 -0700)]
Update the documented default of -Zmutable-noalias

2 years agoReorder `widening_impl`s to make the doc clearer
Yuki Okushi [Sat, 16 Oct 2021 08:00:03 +0000 (17:00 +0900)]
Reorder `widening_impl`s to make the doc clearer

2 years agoMove outline-atomics to aarch64-linux target definitions
Josh Stone [Fri, 5 Nov 2021 17:28:12 +0000 (10:28 -0700)]
Move outline-atomics to aarch64-linux target definitions

2 years agoRemove some minor checks for LLVM < 12
Josh Stone [Fri, 5 Nov 2021 17:26:16 +0000 (10:26 -0700)]
Remove some minor checks for LLVM < 12

2 years agoInitialize LLVM time trace profiler on each code generation thread
Tomasz Miąsko [Fri, 5 Nov 2021 00:00:00 +0000 (00:00 +0000)]
Initialize LLVM time trace profiler on each code generation thread

In https://reviews.llvm.org/D71059 LLVM 11, the time trace profiler was
extended to support multiple threads.

`timeTraceProfilerInitialize` creates a thread local profiler instance.
When a thread finishes `timeTraceProfilerFinishThread` moves a thread
local instance into a global collection of instances. Finally when all
codegen work is complete `timeTraceProfilerWrite` writes data from the
current thread local instance and the instances in global collection
of instances.

Previously, the profiler was intialized on a single thread only. Since
this thread performs no code generation on its own, the resulting
profile was empty.

Update LLVM codegen to initialize & finish time trace profiler on each
code generation thread.

2 years agoapply suggestions from code review
Niko Matsakis [Fri, 5 Nov 2021 16:43:42 +0000 (12:43 -0400)]
apply suggestions from code review

2 years agoFix rustdoc-scrape-examples-macros test not being cross-platform
Will Crichton [Fri, 5 Nov 2021 16:32:04 +0000 (09:32 -0700)]
Fix rustdoc-scrape-examples-macros test not being cross-platform

2 years agoAuto merge of #90616 - mathstuf:error_codes-comment-uniformity, r=GuillaumeGomez
bors [Fri, 5 Nov 2021 16:00:23 +0000 (16:00 +0000)]
Auto merge of #90616 - mathstuf:error_codes-comment-uniformity, r=GuillaumeGomez

error_codes: uniformly comment error codes

2 years agoerror_codes: uniformly comment error codes
Ben Boeckel [Fri, 5 Nov 2021 15:57:17 +0000 (11:57 -0400)]
error_codes: uniformly comment error codes

2 years agoAuto merge of #90604 - mbartlett21:iterator-reexports, r=kennytm
bors [Fri, 5 Nov 2021 12:22:13 +0000 (12:22 +0000)]
Auto merge of #90604 - mbartlett21:iterator-reexports, r=kennytm

Re-export some iterators from `core` in `std`

These iterators seem to have been forgotten to be re-exported from `std` (through `alloc`)

These are stable:

`core::slice::{SplitInclusive, SplitInclusiveMut}`

This one is still unstable:

`core::slice::EscapeAscii` (cc #77174)

2 years agoAuto merge of #90577 - matthiaskrgr:clippy_perf_nov, r=petrochenkov
bors [Fri, 5 Nov 2021 09:17:39 +0000 (09:17 +0000)]
Auto merge of #90577 - matthiaskrgr:clippy_perf_nov, r=petrochenkov

clippy::perf fixes

2 years agoFix `str::SplitInclusive` stabilisation date
mbartlett21 [Fri, 5 Nov 2021 07:46:58 +0000 (17:46 +1000)]
Fix `str::SplitInclusive` stabilisation date

2 years agoAdd feature to `alloc` so we can re-export.
mbartlett21 [Fri, 5 Nov 2021 07:35:07 +0000 (17:35 +1000)]
Add feature to `alloc` so we can re-export.

2 years agoRe-export `core::slice::EscapeAscii`
mbartlett21 [Fri, 5 Nov 2021 07:14:57 +0000 (17:14 +1000)]
Re-export `core::slice::EscapeAscii`

2 years agoRe-export `core::slice::SplitInclusive[Mut]`
mbartlett21 [Fri, 5 Nov 2021 05:44:43 +0000 (15:44 +1000)]
Re-export `core::slice::SplitInclusive[Mut]`

2 years agoAuto merge of #90598 - JohnTitor:rollup-kz1qioz, r=JohnTitor
bors [Fri, 5 Nov 2021 04:35:13 +0000 (04:35 +0000)]
Auto merge of #90598 - JohnTitor:rollup-kz1qioz, r=JohnTitor

Rollup of 9 pull requests

Successful merges:

 - #90507 (Suggest `extern crate alloc` when using undeclared module `alloc`)
 - #90530 (Simplify js tester a bit)
 - #90533 (Add note about x86 instruction prefixes in asm! to unstable book)
 - #90537 (Update aarch64 `target_feature` list for LLVM 12.)
 - #90544 (Demote metadata load warning to "info".)
 - #90554 (Clean up some `-Z unstable-options` in tests.)
 - #90556 (Add more text and examples to `carrying_{add|mul}`)
 - #90563 (rustbot allow labels)
 - #90571 (Fix missing bottom border for headings in sidebar)

Failed merges:

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

2 years agoMove rustdoc-scrape-examples-macros test to run-make-fulldeps
Will Crichton [Fri, 5 Nov 2021 01:52:59 +0000 (18:52 -0700)]
Move rustdoc-scrape-examples-macros test to run-make-fulldeps

2 years agoRollup merge of #90571 - GuillaumeGomez:missing-bottom-border-sidebar, r=jsha
Yuki Okushi [Fri, 5 Nov 2021 01:32:47 +0000 (10:32 +0900)]
Rollup merge of #90571 - GuillaumeGomez:missing-bottom-border-sidebar, r=jsha

Fix missing bottom border for headings in sidebar

Fixes #90568.

r? ```@jsha```

2 years agoRollup merge of #90563 - joshtriplett:rustbot-allow-labels, r=Mark-Simulacrum
Yuki Okushi [Fri, 5 Nov 2021 01:32:47 +0000 (10:32 +0900)]
Rollup merge of #90563 - joshtriplett:rustbot-allow-labels, r=Mark-Simulacrum

rustbot allow labels

`relnotes` was inspired by https://github.com/rust-lang/rust/pull/90521 , and by the various `must_use` PRs; in all of those cases, the submitter of the PR could know that `relnotes` applied, but couldn't apply it themselves.

For `needs-fcp`, I think people should be able to help triage by observing that a change needs an FCP before we can apply it.

2 years agoRollup merge of #90556 - scottmcm:carrying_comments, r=joshtriplett
Yuki Okushi [Fri, 5 Nov 2021 01:32:46 +0000 (10:32 +0900)]
Rollup merge of #90556 - scottmcm:carrying_comments, r=joshtriplett

Add more text and examples to `carrying_{add|mul}`

`feature(bigint_helper_methods)` tracking issue https://github.com/rust-lang/rust/issues/85532

cc `````@clarfonthey`````

2 years agoRollup merge of #90554 - ehuss:unstable-options-cleanup, r=joshtriplett
Yuki Okushi [Fri, 5 Nov 2021 01:32:45 +0000 (10:32 +0900)]
Rollup merge of #90554 - ehuss:unstable-options-cleanup, r=joshtriplett

Clean up some `-Z unstable-options` in tests.

Several of these tests were for features that have been stabilized, or otherwise don't need `-Z unstable-options`.

2 years agoRollup merge of #90544 - ehuss:demote-locator-warn, r=petrochenkov
Yuki Okushi [Fri, 5 Nov 2021 01:32:44 +0000 (10:32 +0900)]
Rollup merge of #90544 - ehuss:demote-locator-warn, r=petrochenkov

Demote metadata load warning to "info".

There is a warn log message for whenever the crate loader fails to load metadata from a candidate file. I think this warning is too aggressive, as there are several situations where metadata information might not be found in a candidate file, which is normal. Also, this warning is somewhat confusing, and non-actionable in most cases for a user (most users will not know what it means).

If the crate loader ultimately does not find a valid crate, then an error will be reported (and hopefully #88368 will improve that error message).

If a rustc developer wants to debug a loader problem, they can still use `RUSTC_LOG=rustc_metadata=debug` and get the details.

There is more discussion of this particular warning at https://github.com/rust-lang/rust/issues/89795#issuecomment-940798190.

Fixes #90525

2 years agoRollup merge of #90537 - adamgemmell:dev/aarch64-target-feature, r=Amanieu
Yuki Okushi [Fri, 5 Nov 2021 01:32:42 +0000 (10:32 +0900)]
Rollup merge of #90537 - adamgemmell:dev/aarch64-target-feature, r=Amanieu

Update aarch64 `target_feature` list for LLVM 12.

Many of these feature are now available on all valid LLVM versions.

I've also added a few new ones to the list.

r? `@Amanieu`

2 years agoRollup merge of #90533 - Smittyvb:patch-1, r=joshtriplett
Yuki Okushi [Fri, 5 Nov 2021 01:32:41 +0000 (10:32 +0900)]
Rollup merge of #90533 - Smittyvb:patch-1, r=joshtriplett

Add note about x86 instruction prefixes in asm! to unstable book

Since rustc doesn't do the assembly parsing itself, it is unable to detect when inline assembly ends with an instruction prefix, which doesn't make sense since it would apply to instructions from the compiler. This fixes #82314 by mentioning that x86 instruction prefixes must not be used in inline assembly. AFAICT x86 is the only instruction set with instruction prefixes.

2 years agoRollup merge of #90530 - GuillaumeGomez:simplify-js-tester, r=notriddle
Yuki Okushi [Fri, 5 Nov 2021 01:32:40 +0000 (10:32 +0900)]
Rollup merge of #90530 - GuillaumeGomez:simplify-js-tester, r=notriddle

Simplify js tester a bit

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

2 years agoRollup merge of #90507 - TaKO8Ki:suggest-extern-crate-alloc, r=jackh726
Yuki Okushi [Fri, 5 Nov 2021 01:32:39 +0000 (10:32 +0900)]
Rollup merge of #90507 - TaKO8Ki:suggest-extern-crate-alloc, r=jackh726

Suggest `extern crate alloc` when using undeclared module `alloc`

closes #90136

2 years agoAuto merge of #90574 - notriddle:notriddle/doc-fold-stripped-conditional, r=camelid...
bors [Fri, 5 Nov 2021 01:29:41 +0000 (01:29 +0000)]
Auto merge of #90574 - notriddle:notriddle/doc-fold-stripped-conditional, r=camelid,GuillaumeGomez

rustdoc: Use conditional for _stripped fold

Followup: https://github.com/rust-lang/rust/pull/90475#discussion_r741405472

2 years agohandle case of a variable not captured
Niko Matsakis [Fri, 5 Nov 2021 01:26:47 +0000 (21:26 -0400)]
handle case of a variable not captured

2 years agorework diagnostic reporting to be more structured
Niko Matsakis [Thu, 4 Nov 2021 21:44:29 +0000 (17:44 -0400)]
rework diagnostic reporting to be more structured

2 years agoUse one match instead of a staggered match.
Hans Kratz [Thu, 4 Nov 2021 23:39:34 +0000 (00:39 +0100)]
Use one match instead of a staggered match.

2 years agoRemove now unused feature from rustc_parse
Hans Kratz [Thu, 4 Nov 2021 22:40:59 +0000 (23:40 +0100)]
Remove now unused feature from rustc_parse

2 years agoOptimize literal, doc comment lint as well, extract function.
Hans Kratz [Thu, 4 Nov 2021 22:31:42 +0000 (23:31 +0100)]
Optimize literal, doc comment lint as well, extract function.

2 years agoAuto merge of #90536 - crlf0710:fix_vtable_hrtb, r=jackh726
bors [Thu, 4 Nov 2021 21:52:21 +0000 (21:52 +0000)]
Auto merge of #90536 - crlf0710:fix_vtable_hrtb, r=jackh726

Erase regions within `vtable_trait_first_method_offset`

Fixes #90177 .

r? `@jackh726`

2 years agoFix ICE when rustdoc is scraping examples inside of a proc macro
Will Crichton [Thu, 4 Nov 2021 20:57:39 +0000 (13:57 -0700)]
Fix ICE when rustdoc is scraping examples inside of a proc macro

2 years agoSort scraped call locations before serializing
Will Crichton [Thu, 4 Nov 2021 20:57:09 +0000 (13:57 -0700)]
Sort scraped call locations before serializing

2 years agoclippy::perf fixes
Matthias Krüger [Thu, 4 Nov 2021 19:16:57 +0000 (20:16 +0100)]
clippy::perf fixes

2 years agoFix missing bottom border for headings in sidebar
Guillaume Gomez [Thu, 4 Nov 2021 15:27:02 +0000 (16:27 +0100)]
Fix missing bottom border for headings in sidebar

2 years agointroduce an enum for tracking the 2229 migration causes
Niko Matsakis [Thu, 4 Nov 2021 16:50:24 +0000 (12:50 -0400)]
introduce an enum for tracking the 2229 migration causes

2 years agorustdoc: Use conditional for _stripped fold
Michael Howell [Thu, 4 Nov 2021 16:43:13 +0000 (09:43 -0700)]
rustdoc: Use conditional for _stripped fold

Followup: https://github.com/rust-lang/rust/pull/90475#discussion_r741405472

2 years agoCreate subslice as that leads to a smaller code size.
Hans Kratz [Thu, 4 Nov 2021 16:03:13 +0000 (17:03 +0100)]
Create subslice as that leads to a smaller code size.

2 years agoMention possible future rejections
Smittyvb [Thu, 4 Nov 2021 15:31:03 +0000 (11:31 -0400)]
Mention possible future rejections

Co-authored-by: Josh Triplett <josh@joshtriplett.org>
2 years agoFix tests using `only-i686` to use the correct `only-x86` directive
Wesley Wiser [Thu, 4 Nov 2021 14:30:23 +0000 (10:30 -0400)]
Fix tests using `only-i686` to use the correct `only-x86` directive

We translate `i686` to `x86` which means tests marked as `only-i686`
never ran. Update those tests to use `only-x86`.

2 years agoAuto merge of #90564 - flip1995:clippyup, r=Manishearth
bors [Thu, 4 Nov 2021 14:21:59 +0000 (14:21 +0000)]
Auto merge of #90564 - flip1995:clippyup, r=Manishearth

Update Clippy

r? `@Manishearth`

2 years agoUpdate Cargo.lock
flip1995 [Thu, 4 Nov 2021 12:56:54 +0000 (12:56 +0000)]
Update Cargo.lock

2 years agoMerge commit 'e18101137866b79045fee0ef996e696e68c920b4' into clippyup
flip1995 [Thu, 4 Nov 2021 12:52:36 +0000 (12:52 +0000)]
Merge commit 'e18101137866b79045fee0ef996e696e68c920b4' into clippyup

2 years agorustbot: Allow applying needs-fcp label
Josh Triplett [Thu, 4 Nov 2021 12:35:10 +0000 (13:35 +0100)]
rustbot: Allow applying needs-fcp label

People should be able to help triage by observing that a change needs an
FCP before we can apply it.

2 years agorustbot: Allow applying relnotes label
Josh Triplett [Thu, 4 Nov 2021 12:34:10 +0000 (13:34 +0100)]
rustbot: Allow applying relnotes label

Inspired by https://github.com/rust-lang/rust/pull/90521 , and by the
various `must_use` PRs; in all of those cases, the submitter of the PR
could know that `relnotes` applied, but couldn't apply it themselves.

2 years agoAuto merge of #7929 - flip1995:rustup, r=flip1995
bors [Thu, 4 Nov 2021 12:07:07 +0000 (12:07 +0000)]
Auto merge of #7929 - flip1995:rustup, r=flip1995

Rustup

r? `@ghost`

changelog: none

2 years agoBump nightly version -> 2021-11-04
flip1995 [Thu, 4 Nov 2021 12:03:53 +0000 (12:03 +0000)]
Bump nightly version -> 2021-11-04

2 years agoMerge remote-tracking branch 'upstream/master' into rustup
flip1995 [Thu, 4 Nov 2021 12:03:28 +0000 (12:03 +0000)]
Merge remote-tracking branch 'upstream/master' into rustup

2 years agoOptimize bidi character detection.
Hans Kratz [Wed, 3 Nov 2021 22:37:23 +0000 (23:37 +0100)]
Optimize bidi character detection.

2 years agoAuto merge of #90518 - calebcartwright:rustc-ast-docs, r=wesleywiser
bors [Thu, 4 Nov 2021 09:40:25 +0000 (09:40 +0000)]
Auto merge of #90518 - calebcartwright:rustc-ast-docs, r=wesleywiser

update rustc_ast crate descriptions in documentation

I noticed this the other day and figured I'd suggest a refresh. It seems like a relic from the days of `libsyntax` that got missed as things were split out into separate crates, since the current documentation text references elements that were moved into their own respective crates (e.g. `rustc_parse`)

2 years agoAdd more text and examples to `carrying_{add|mul}"
Scott McMurray [Thu, 4 Nov 2021 07:51:45 +0000 (00:51 -0700)]
Add more text and examples to `carrying_{add|mul}"

2 years agoAuto merge of #87467 - inquisitivecrystal:ref-unwind, r=dtolnay
bors [Thu, 4 Nov 2021 06:54:21 +0000 (06:54 +0000)]
Auto merge of #87467 - inquisitivecrystal:ref-unwind, r=dtolnay

Implement `RefUnwindSafe` for `Rc<T>`

This PR implements `RefUnwindSafe` for `Rc<T>`, where `T: RefUnwindSafe`.

This impl was omitted by an apparent oversight. `Rc<T>` already implements `UnwindSafe`. `Arc<T>` implements both `UnwindSafe` and `RefUnwindSafe`. There is no reason why an `&Rc<T>` is any less unwind safe than a `Rc<T>` or an `&Arc<T>`, so this should be safe to add.

Resolves #45924.

2 years agoAuto merge of #7926 - lengyijun:patch-1, r=giraffate
bors [Thu, 4 Nov 2021 05:12:59 +0000 (05:12 +0000)]
Auto merge of #7926 - lengyijun:patch-1, r=giraffate

lower_case in  span_lint_and_help document

changelog: none

2 years agoUpdate diagnostics.rs
lyj [Thu, 4 Nov 2021 03:57:14 +0000 (11:57 +0800)]
Update diagnostics.rs

2 years agoAuto merge of #90392 - solid-rs:fix-solid-support, r=Mark-Simulacrum
bors [Thu, 4 Nov 2021 03:48:43 +0000 (03:48 +0000)]
Auto merge of #90392 - solid-rs:fix-solid-support, r=Mark-Simulacrum

kmc-solid: Fix SOLID target

This PR is a follow-up for #86191 and necessary to make the [`*-kmc-solid_*`](https://doc.rust-lang.org/nightly/rustc/platform-support/kmc-solid.html) Tier 3 targets actually usable.

 - Bumps `libc` to 0.2.106, which includes <https://github.com/rust-lang/libc/pull/2227>.
 - Applies the change made by #89324 to this target's target-specific code.

2 years agoClean up some `-Z unstable-options` in tests.
Eric Huss [Thu, 4 Nov 2021 03:00:00 +0000 (20:00 -0700)]
Clean up some `-Z unstable-options` in tests.

2 years agoAuto merge of #90179 - Nilstrieb:lifetime-elision-mismatch-hint, r=estebank
bors [Thu, 4 Nov 2021 00:39:21 +0000 (00:39 +0000)]
Auto merge of #90179 - Nilstrieb:lifetime-elision-mismatch-hint, r=estebank

Add beginner friendly lifetime elision hint to E0623

Address #90170

Suggest adding a new lifetime parameter when two elided lifetimes should match up but don't.

Example:

```
error[E0623]: lifetime mismatch
  --> $DIR/issue-90170-elision-mismatch.rs:2:35
   |
LL | fn foo(slice_a: &mut [u8], slice_b: &mut [u8]) {
   |                 ---------           --------- these two types are declared with different lifetimes...
LL |     core::mem::swap(&mut slice_a, &mut slice_b);
   |                                   ^^^^^^^^^^^^ ...but data from `slice_b` flows into `slice_a` here
   |
   = note: each elided lifetime in input position becomes a distinct lifetime
help: explicitly declare a lifetime and assign it to both
   |
LL | fn foo<'a>(slice_a: &'a mut [u8], slice_b: &'a mut [u8]) {
   |       ++++           ++                     ++

```

for

```rust
fn foo(slice_a: &mut [u8], slice_b: &mut [u8]) {
    core::mem::swap(&mut slice_a, &mut slice_b);
}
```

2 years agoAuto merge of #90475 - camelid:docvisitor, r=notriddle
bors [Wed, 3 Nov 2021 21:10:22 +0000 (21:10 +0000)]
Auto merge of #90475 - camelid:docvisitor, r=notriddle

rustdoc: Add `DocVisitor` and use it where possible

`DocFolder` allows transforming the docs, accomplished by making its methods take and return types by-value. However, several of the rustdoc `DocFolder` impls only *visit* the docs; they don't change anything. Passing around types by-value is thus unnecessary, confusing, and potentially inefficient for those impls.

`DocVisitor` is very similar to `DocFolder`, except that its methods take shared references and return nothing (i.e., the unit type). This should both be more efficient and make the code clearer.

There is an additional reason to add `DocVisitor`, too. As part of my cleanup of `external_traits`, I'm planning to add a `fn cache(&mut self) -> &mut Cache` method to `DocFolder` so that `external_traits` can be retrieved explicitly from the `Cache`, rather than implicitly via `Crate.external_traits` (which is an `Rc<RefCell<...>>`). However, some of the `DocFolder` impls that could be turned into `DocVisitor` impls only have a shared reference to the `Cache`, because they are used during rendering. (They have to access the `Cache` via `html::render::Context.shared.cache`, which involves an `Rc`.)

Since `DocVisitor` does not mutate any of the types it's visiting, its equivalent `cache()` method will only need a shared reference to the `Cache`, avoiding the problem described above.

r? `@GuillaumeGomez`
cc `@jyn514`

2 years agoDemote metadata load warning to "info".
Eric Huss [Wed, 3 Nov 2021 20:39:37 +0000 (13:39 -0700)]
Demote metadata load warning to "info".

2 years agoSimplify js tester a bit
Guillaume Gomez [Wed, 3 Nov 2021 14:44:04 +0000 (15:44 +0100)]
Simplify js tester a bit

2 years agoAdd beginner friendly lifetime elision hint to E0623
Nilstrieb [Tue, 2 Nov 2021 20:22:41 +0000 (21:22 +0100)]
Add beginner friendly lifetime elision hint to E0623

Suggest adding a new lifetime parameter when two elided lifetimes should match up but don't

Issue #90170

This also changes the tests introduced by the previous commits because of another rustc issue (#90258)

2 years agoAuto merge of #90413 - tmiasko:addr-of-mutable, r=RalfJung,oli-obk
bors [Wed, 3 Nov 2021 18:13:11 +0000 (18:13 +0000)]
Auto merge of #90413 - tmiasko:addr-of-mutable, r=RalfJung,oli-obk

`addr_of!` grants mutable access, maybe?

The exact set of permissions granted when forming a raw reference is
currently undecided https://github.com/rust-lang/rust/issues/56604.

To avoid presupposing any particular outcome, adjust the const
qualification to be compatible with decision where raw reference
constructed from `addr_of!` grants mutable access.

Additionally, to avoid keeping `MaybeMutBorrowedLocals` in sync with
const qualification, remove it. It's no longer used.

`@rust-lang/wg-const-eval`

2 years agoUpdate aarch64 `target_feature` list for LLVM 12.
Adam Gemmell [Mon, 1 Nov 2021 16:22:29 +0000 (16:22 +0000)]
Update aarch64 `target_feature` list for LLVM 12.

2 years agoErase regions within `vtable_trait_first_method_offset`.
Charles Lew [Wed, 3 Nov 2021 15:37:50 +0000 (23:37 +0800)]
Erase regions within `vtable_trait_first_method_offset`.

2 years ago`addr_of!` grants mutable access, maybe?
Tomasz Miąsko [Sat, 30 Oct 2021 00:00:00 +0000 (00:00 +0000)]
`addr_of!` grants mutable access, maybe?

The exact set of permissions granted when forming a raw reference is
currently undecided https://github.com/rust-lang/rust/issues/56604.

To avoid presupposing any particular outcome, adjust the const
qualification to be compatible with decision where raw reference
constructed from `addr_of!` grants mutable access.