]> git.lizzy.rs Git - rust.git/log
rust.git
2 years agoUpdate Copy/Clone documentation WRT arrays
bstrie [Sat, 5 Jun 2021 21:20:51 +0000 (17:20 -0400)]
Update Copy/Clone documentation WRT arrays

2 years agoimpl Copy/Clone for arrays in std, not in compiler
bstrie [Sat, 5 Jun 2021 21:17:35 +0000 (17:17 -0400)]
impl Copy/Clone for arrays in std, not in compiler

2 years agoAdd comments regarding superfluous `!Sync` impls
bstrie [Tue, 27 Jul 2021 22:50:34 +0000 (18:50 -0400)]
Add comments regarding superfluous `!Sync` impls

2 years agoRecord more artifact sizes during self-profiling.
Michael Woerister [Mon, 8 Nov 2021 15:59:36 +0000 (16:59 +0100)]
Record more artifact sizes during self-profiling.

2 years agofmt
Deadbeef [Mon, 8 Nov 2021 15:55:51 +0000 (23:55 +0800)]
fmt

2 years agoMake select_* methods return Vec for TraitEngine
Deadbeef [Mon, 8 Nov 2021 15:35:23 +0000 (23:35 +0800)]
Make select_* methods return Vec for TraitEngine

2 years agoRollup merge of #90689 - lnicola:rust-analyzer-2021-11-08, r=lnicola
Guillaume Gomez [Mon, 8 Nov 2021 14:15:25 +0000 (15:15 +0100)]
Rollup merge of #90689 - lnicola:rust-analyzer-2021-11-08, r=lnicola

:arrow_up: rust-analyzer

r? ``@ghost``

2 years agoRollup merge of #90657 - GuillaumeGomez:one-char-last-line-removed, r=jyn514
Guillaume Gomez [Mon, 8 Nov 2021 14:15:24 +0000 (15:15 +0100)]
Rollup merge of #90657 - GuillaumeGomez:one-char-last-line-removed, r=jyn514

Fix bug with `#[doc]` string single-character last lines

Fixes #90618.

This is because `.iter().all(|c| c == '*')` returns `true` if there is no character checked. And in case the last line has only one character, it simply returns `true`, making the last line behind removed.

2 years agoRollup merge of #90652 - matthiaskrgr:unnnec_filter_map, r=jyn514
Guillaume Gomez [Mon, 8 Nov 2021 14:15:23 +0000 (15:15 +0100)]
Rollup merge of #90652 - matthiaskrgr:unnnec_filter_map, r=jyn514

use filter(|x| matches!(..)) instead of filter_map(|x| match x ... => Some(xy))

2 years agoRollup merge of #90494 - Meziu:armv6k-3ds-target, r=sanxiyn
Guillaume Gomez [Mon, 8 Nov 2021 14:15:22 +0000 (15:15 +0100)]
Rollup merge of #90494 - Meziu:armv6k-3ds-target, r=sanxiyn

ARMv6K Horizon OS panic change

After a small change to `backtrace-rs` ([#448](https://github.com/rust-lang/backtrace-rs/pull/448)), `PanicStrategy::Unwind` is now fully supported.

2 years agoAuto merge of #90361 - Mark-Simulacrum:always-verify, r=michaelwoerister
bors [Mon, 8 Nov 2021 13:38:08 +0000 (13:38 +0000)]
Auto merge of #90361 - Mark-Simulacrum:always-verify, r=michaelwoerister

Enable verification for 1/32th of queries loaded from disk

This is a limited enabling of incremental verification for query results loaded from disk, which previously did not run without -Zincremental-verify-ich. If enabled for all queries, we see a probably unacceptable hit of ~50% in the worst case, so this pairs back the verification to a more limited set based on the hash key.

Per collected [perf results](https://github.com/rust-lang/rust/pull/84227#issuecomment-953350582), this is a regression of at most 7% on coercions opt incr-unchanged, and typically less than 0.5% on other benchmarks (largely limited to incr-unchanged). I believe this is acceptable performance to land, and we can either ratchet it up or down fairly easily.

We have no real sense of whether this will lead to a large amount of assertions in the wild, but since those assertions may lead to miscompilations today, it seems potentially warranted. We have a good bit of lead time until the next stable release, though the holiday season will also start soon; we may wish to discuss the timing of enabling this and weigh the desire to prevent (possible) miscompilations against assertions.

cc `@rust-lang/wg-incr-comp`

2 years agokmc-solid: Avoid the use of `asm_const`
Tomoaki Kawada [Mon, 8 Nov 2021 09:27:24 +0000 (18:27 +0900)]
kmc-solid: Avoid the use of `asm_const`

2 years ago:arrow_up: rust-analyzer
Laurențiu Nicola [Mon, 8 Nov 2021 10:07:03 +0000 (12:07 +0200)]
:arrow_up: rust-analyzer

2 years agoenable `dotprod` target feature in arm
SparrowLii [Mon, 8 Nov 2021 08:24:50 +0000 (16:24 +0800)]
enable `dotprod` target feature in arm

2 years agoAuto merge of #90675 - camelid:cleanup-impl, r=jyn514
bors [Mon, 8 Nov 2021 08:21:51 +0000 (08:21 +0000)]
Auto merge of #90675 - camelid:cleanup-impl, r=jyn514

rustdoc: Cleanup `clean::Impl` and other parts of `clean`

This PR cleans up and reduces the size of `clean::Impl`, makes some other small performance improvements, and removes some Clean impls that are either unnecessary or potentially confusing.

r? `@jyn514`

2 years agoAuto merge of #90680 - calebcartwright:rustfmt-sync, r=calebcartwright
bors [Mon, 8 Nov 2021 05:13:41 +0000 (05:13 +0000)]
Auto merge of #90680 - calebcartwright:rustfmt-sync, r=calebcartwright

sync rustfmt subtree

2 years agox.py: remove fixme by deleting code
Joshua Nelson [Mon, 8 Nov 2021 04:45:15 +0000 (04:45 +0000)]
x.py: remove fixme by deleting code

As far as I can tell, this parameter was never used, so just delete it
as unnecessary.

2 years agoMake `compiler-docs` only control the default instead of being a hard off-switch
Joshua Nelson [Mon, 8 Nov 2021 04:16:34 +0000 (04:16 +0000)]
Make `compiler-docs` only control the default instead of being a hard off-switch

This also fixes `x doc src/tools/clippy` when compiler-docs is disabled.

2 years agoMerge commit 'ea199bacef07213dbe008841b89c450e3bf0c638' into rustfmt-sync
Caleb Cartwright [Mon, 8 Nov 2021 02:37:34 +0000 (20:37 -0600)]
Merge commit 'ea199bacef07213dbe008841b89c450e3bf0c638' into rustfmt-sync

2 years agoGo back to loading all external crates unconditionally
Joshua Nelson [Mon, 1 Nov 2021 23:01:39 +0000 (23:01 +0000)]
Go back to loading all external crates unconditionally

This *continues* to cause regressions. This code will be unnecessary
once access to the resolver happens fully before creating the tyctxt
(#83761), so load all crates unconditionally for now.

2 years agoAdd more missing methods to `IntraLinkCrateLoader`
Joshua Nelson [Mon, 8 Nov 2021 01:45:10 +0000 (01:45 +0000)]
Add more missing methods to `IntraLinkCrateLoader`

This helps with (but does not fix)
https://github.com/rust-lang/rust/issues/84738. I tested on
https://github.com/jyn514/objr/commit/edcee7b8124abf0e4c63873e8422ff81beb11ebb
and still hit ICEs.

2 years agorustdoc: Remove top-level wrappers for `ImplKind` methods
Noah Lev [Mon, 8 Nov 2021 02:26:37 +0000 (18:26 -0800)]
rustdoc: Remove top-level wrappers for `ImplKind` methods

The `ImplKind` methods can just be used directly instead.

2 years agoAuto merge of #89488 - c410-f3r:testsssssss, r=petrochenkov
bors [Mon, 8 Nov 2021 02:04:31 +0000 (02:04 +0000)]
Auto merge of #89488 - c410-f3r:testsssssss, r=petrochenkov

Move some tests to more reasonable directories - 8

cc #73494
r? `@petrochenkov`

2 years agoMerge pull request #5070 from calebcartwright/rustup-2021-11-s1
Caleb Cartwright [Mon, 8 Nov 2021 01:40:15 +0000 (19:40 -0600)]
Merge pull request #5070 from calebcartwright/rustup-2021-11-s1

subtree sync

2 years agoUse `has_errors_or_lint_errors` in rustdoc instead of `abort_if_errors()`
Joshua Nelson [Thu, 16 Sep 2021 05:35:23 +0000 (05:35 +0000)]
Use `has_errors_or_lint_errors` in rustdoc instead of `abort_if_errors()`

Rustdoc is special as usual and doesn't go through RunCompiler, so it
needs its own explicit checks. The rest of the tools go through
RunCompiler, so they should be fine.

2 years agoDon't proceed to codegen if there are lint errors
Joshua Nelson [Thu, 22 Jul 2021 23:47:46 +0000 (23:47 +0000)]
Don't proceed to codegen if there are lint errors

2 years agoDon't abort compilation after giving a lint error
Joshua Nelson [Wed, 21 Jul 2021 03:23:22 +0000 (23:23 -0400)]
Don't abort compilation after giving a lint error

The only reason to use `abort_if_errors` is when the program is so broken that either:
1. later passes get confused and ICE
2. any diagnostics from later passes would be noise

This is never the case for lints, because the compiler has to be able to deal with `allow`-ed lints.
So it can continue to lint and compile even if there are lint errors.

2 years agochore: bump toolchain
Caleb Cartwright [Mon, 8 Nov 2021 01:06:24 +0000 (19:06 -0600)]
chore: bump toolchain

2 years agoAuto merge of #88368 - jyn514:metadata-error, r=petrochenkov
bors [Sun, 7 Nov 2021 23:03:55 +0000 (23:03 +0000)]
Auto merge of #88368 - jyn514:metadata-error, r=petrochenkov

 Improve error when an .rlib can't be parsed

This usually describes either an error in the compiler itself or some
sort of IO error. Either way, we should report it to the user rather
than just saying "crate not found".

This only gives an error if the crate couldn't be loaded at all - if the
compiler finds another .rlib or .rmeta file which was valid, it will
continue to compile the crate.

Example output:
```
error[E0785]: found invalid metadata files for crate `foo`
 --> bar.rs:3:24
  |
3 |         println!("{}", foo::FOO_11_49[0]);
  |                        ^^^
  |
  = warning: failed to parse rlib '/home/joshua/test-rustdoc/libfoo.rlib': Invalid archive extended name offset
```

cc `@ehuss`

2 years agoMerge remote-tracking branch 'upstream/master' into rustup-2021-11-s1
Caleb Cartwright [Sun, 7 Nov 2021 20:44:33 +0000 (14:44 -0600)]
Merge remote-tracking branch 'upstream/master' into rustup-2021-11-s1

2 years agoAuto merge of #90668 - matthiaskrgr:clippy_nov7, r=jyn514
bors [Sun, 7 Nov 2021 20:04:54 +0000 (20:04 +0000)]
Auto merge of #90668 - matthiaskrgr:clippy_nov7, r=jyn514

more clippy fixes

2 years agoThere is a -Clinker='arm-none-eabi-gcc' that seems to be causing trouble.
Tor Hovland [Sun, 7 Nov 2021 19:08:42 +0000 (20:08 +0100)]
There is a -Clinker='arm-none-eabi-gcc' that seems to be causing trouble.

2 years agoAlmost all the other tests use '-include', so we'll do too.
Tor Hovland [Sun, 7 Nov 2021 19:06:22 +0000 (20:06 +0100)]
Almost all the other tests use '-include', so we'll do too.

2 years agoRemove Clean impl for `&T`
Noah Lev [Sun, 7 Nov 2021 17:23:33 +0000 (09:23 -0800)]
Remove Clean impl for `&T`

2 years agoRemove unused Clean impl for `Rc<T>`
Noah Lev [Sun, 7 Nov 2021 17:20:35 +0000 (09:20 -0800)]
Remove unused Clean impl for `Rc<T>`

2 years agoRemove Clean impl for `Vec<T>`
Noah Lev [Sun, 7 Nov 2021 17:19:25 +0000 (09:19 -0800)]
Remove Clean impl for `Vec<T>`

2 years agoRemove Clean impl for `IndexVec<T>`
Noah Lev [Sun, 7 Nov 2021 17:09:10 +0000 (09:09 -0800)]
Remove Clean impl for `IndexVec<T>`

2 years agoRemove Clean impl for `Option<T>`
Noah Lev [Sun, 7 Nov 2021 17:06:50 +0000 (09:06 -0800)]
Remove Clean impl for `Option<T>`

2 years agorustdoc: Use `ty::ImplPolarity` instead of custom enum
Noah Lev [Sun, 7 Nov 2021 16:57:33 +0000 (08:57 -0800)]
rustdoc: Use `ty::ImplPolarity` instead of custom enum

2 years agoUse an enum to record polarity in `clean::Impl`
Noah Lev [Sun, 7 Nov 2021 16:52:28 +0000 (08:52 -0800)]
Use an enum to record polarity in `clean::Impl`

2 years agorustdoc: Refactor `Impl.{synthetic,blanket_impl}` into enum
Noah Lev [Sun, 7 Nov 2021 06:10:01 +0000 (23:10 -0700)]
rustdoc: Refactor `Impl.{synthetic,blanket_impl}` into enum

This change has two advantages:

1. It makes the possible states clearer, and it makes it impossible to
   construct invalid states, such as a blanket impl that is also an auto
   trait impl.

2. It shrinks the size of `Impl` a bit, since now there is only one
   field, rather than two.

2 years agomore clippy fixes
Matthias Krüger [Sun, 7 Nov 2021 09:33:27 +0000 (10:33 +0100)]
more clippy fixes

2 years agoAuto merge of #90671 - petrochenkov:astnaming, r=jackh726
bors [Sun, 7 Nov 2021 15:19:11 +0000 (15:19 +0000)]
Auto merge of #90671 - petrochenkov:astnaming, r=jackh726

ast: Fix naming conventions in AST structures

TraitKind -> Trait
TyAliasKind -> TyAlias
ImplKind -> Impl
FnKind -> Fn

All `*Kind`s in AST are supposed to be enums.

Tuple structs are converted to braced structs for the types above, and fields are reordered in syntactic order.

Also, mutable AST visitor now correctly visit spans in defaultness, unsafety, impl polarity and constness.

Noticed when reviewing #90076.

2 years agoImprove error when an .rlib can't be parsed
Joshua Nelson [Thu, 26 Aug 2021 18:37:44 +0000 (18:37 +0000)]
Improve error when an .rlib can't be parsed

This usually describes either an error in the compiler itself or some
sort of IO error. Either way, we should report it to the user rather
than just saying "crate not found".

This only gives an error if the crate couldn't be loaded at all - if the
compiler finds another .rlib or .rmeta file which was valid, it will
continue to compile the crate.

Example output:
```
error[E0785]: found invalid metadata files for crate `foo`
 --> bar.rs:3:24
  |
3 |         println!("{}", foo::FOO_11_49[0]);
  |                        ^^^
  |
  = warning: failed to parse rlib '/home/joshua/test-rustdoc/libfoo.rlib': Invalid archive extended name offset
```

2 years agorefactor: dedupe associated item visitation
Caleb Cartwright [Sat, 6 Nov 2021 22:12:25 +0000 (17:12 -0500)]
refactor: dedupe associated item visitation

2 years agoast: Fix naming conventions in AST structures
Vadim Petrochenkov [Sun, 7 Nov 2021 08:43:49 +0000 (16:43 +0800)]
ast: Fix naming conventions in AST structures

TraitKind -> Trait
TyAliasKind -> TyAlias
ImplKind -> Impl
FnKind -> Fn

All `*Kind`s in AST are supposed to be enums.

Tuple structs are converted to braced structs for the types above, and fields are reordered in syntactic order.

Also, mutable AST visitor now correctly visit spans in defaultness, unsafety, impl polarity and constness.

2 years agoast: Fix naming conventions in AST structures
Vadim Petrochenkov [Sun, 7 Nov 2021 08:43:49 +0000 (16:43 +0800)]
ast: Fix naming conventions in AST structures

TraitKind -> Trait
TyAliasKind -> TyAlias
ImplKind -> Impl
FnKind -> Fn

All `*Kind`s in AST are supposed to be enums.

Tuple structs are converted to braced structs for the types above, and fields are reordered in syntactic order.

Also, mutable AST visitor now correctly visit spans in defaultness, unsafety, impl polarity and constness.

2 years agoRemove some fields from `ObligationCauseCode`
Matthew Jasper [Sun, 31 Oct 2021 22:06:26 +0000 (22:06 +0000)]
Remove some fields from `ObligationCauseCode`

2 years agoAuto merge of #89310 - joshtriplett:available-concurrency-affinity, r=m-ou-se
bors [Sun, 7 Nov 2021 11:53:25 +0000 (11:53 +0000)]
Auto merge of #89310 - joshtriplett:available-concurrency-affinity, r=m-ou-se

Make `std::thread::available_concurrency` support process-limited number of CPUs

Use `libc::sched_getaffinity` and count the number of CPUs in the returned mask. This handles cases where the process doesn't have access to all CPUs, such as when limited via `taskset` or similar.

This also covers cgroup cpusets.

2 years agoMade temps-dir an unstable option.
Tor Hovland [Sat, 6 Nov 2021 23:14:54 +0000 (00:14 +0100)]
Made temps-dir an unstable option.

2 years agorustdoc: Remove redundant `Impl.span` field
Noah Lev [Sun, 31 Oct 2021 21:49:32 +0000 (14:49 -0700)]
rustdoc: Remove redundant `Impl.span` field

It can be computed on-demand in `Item::span()`.

2 years agoAuto merge of #90348 - Amanieu:asm_feature_gates, r=joshtriplett
bors [Sun, 7 Nov 2021 04:59:42 +0000 (04:59 +0000)]
Auto merge of #90348 - Amanieu:asm_feature_gates, r=joshtriplett

Add features gates for experimental asm features

This PR splits off parts of `asm!` into separate features because they are not ready for stabilization.

Specifically this adds:
- `asm_const` for `const` operands.
- `asm_sym` for `sym` operands.
- `asm_experimental_arch` for architectures other than x86, x86_64, arm, aarch64 and riscv.

r? `@nagisa`

2 years agoRename functions reflect that inline const is also "typeck_child"
Gary Guo [Sat, 6 Nov 2021 20:01:35 +0000 (20:01 +0000)]
Rename functions reflect that inline const is also "typeck_child"

2 years agoFix closures within inline const
Gary Guo [Sat, 23 Oct 2021 23:26:40 +0000 (00:26 +0100)]
Fix closures within inline const

2 years agoAdd a FIXME note about what's missing
Gary Guo [Sun, 3 Oct 2021 15:05:55 +0000 (16:05 +0100)]
Add a FIXME note about what's missing

2 years agoEnsure closure requirements are proven for inline const
Gary Guo [Sun, 3 Oct 2021 22:14:33 +0000 (23:14 +0100)]
Ensure closure requirements are proven for inline const

2 years agoAdd unit test for issue 78174
Gary Guo [Sun, 3 Oct 2021 15:04:30 +0000 (16:04 +0100)]
Add unit test for issue 78174

2 years agoAdd unit test for issue 78132
Gary Guo [Sun, 3 Oct 2021 15:03:34 +0000 (16:03 +0100)]
Add unit test for issue 78132

2 years agoImplement type inference for inline consts
Gary Guo [Sat, 2 Oct 2021 12:12:33 +0000 (13:12 +0100)]
Implement type inference for inline consts

In most cases it is handled in the same way as closures.

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 agoRestrict tests that use needs-asm-support to non-experimental
Amanieu d'Antras [Wed, 3 Nov 2021 16:10:09 +0000 (16:10 +0000)]
Restrict tests that use needs-asm-support to non-experimental
architectures

2 years agoAuto merge of #90635 - matthiaskrgr:rustdoc_compl, r=GuillaumeGomez
bors [Sun, 7 Nov 2021 02:17:35 +0000 (02:17 +0000)]
Auto merge of #90635 - matthiaskrgr:rustdoc_compl, r=GuillaumeGomez

rustdoc: clippy::complexity fixes

2 years agoSupport early stopping too old pre-installed `tidy` command for macOS in the HTML...
Ken Matsui [Sun, 7 Nov 2021 01:25:04 +0000 (10:25 +0900)]
Support early stopping too old pre-installed `tidy` command for macOS in the HTML checker

2 years agoAdd features gates for experimental asm features
Amanieu d'Antras [Wed, 27 Oct 2021 17:37:18 +0000 (18:37 +0100)]
Add features gates for experimental asm features

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 agorefactor: dedupe & simplify ty alias formatting
Caleb Cartwright [Sat, 6 Nov 2021 17:59:06 +0000 (12:59 -0500)]
refactor: dedupe & simplify ty alias formatting

2 years agoFix Clippy with changed format_args!
Cameron Steffen [Sat, 6 Nov 2021 21:03:32 +0000 (16:03 -0500)]
Fix Clippy with changed format_args!

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 agoFactor out some Vecs
Cameron Steffen [Mon, 1 Nov 2021 19:12:17 +0000 (14:12 -0500)]
Factor out some Vecs

2 years agoDon't destructure args tuple in format_args!
Cameron Steffen [Mon, 1 Nov 2021 16:56:38 +0000 (11:56 -0500)]
Don't destructure args tuple in format_args!

2 years agoAdd test for removed one character last line in rustdoc
Guillaume Gomez [Sat, 6 Nov 2021 18:42:43 +0000 (19:42 +0100)]
Add test for removed one character last line in rustdoc

2 years agoFix last doc code comment being removed if it only had one character
Guillaume Gomez [Sat, 6 Nov 2021 18:41:33 +0000 (19:41 +0100)]
Fix last doc code comment being removed if it only had one character

2 years agoMove some tests to more reasonable directories
Caio [Sat, 6 Nov 2021 18:35:20 +0000 (15:35 -0300)]
Move some tests to more reasonable directories

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 agouse filter(|x| matches!(..)) instead of filter_map(|x| match x ... => Some(xy))
Matthias Krüger [Sat, 6 Nov 2021 15:36:23 +0000 (16:36 +0100)]
use filter(|x| matches!(..)) instead of filter_map(|x| match x ... => Some(xy))

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 agoDisable bitmask test on big endian
Caleb Zulawski [Sat, 6 Nov 2021 02:29:03 +0000 (02:29 +0000)]
Disable bitmask test on big endian

2 years agoFix off-by-one error uncovered by std::simd tests
Caleb Zulawski [Mon, 13 Sep 2021 00:45:18 +0000 (00:45 +0000)]
Fix off-by-one error uncovered by std::simd tests

2 years agoAllow simd_select_bitmask to take byte arrays
Caleb Zulawski [Sun, 12 Sep 2021 02:37:23 +0000 (02:37 +0000)]
Allow simd_select_bitmask to take byte arrays

2 years agoAllow simd_bitmask to return byte arrays
Caleb Zulawski [Sat, 11 Sep 2021 18:00:48 +0000 (18:00 +0000)]
Allow simd_bitmask to return byte arrays

2 years agoPut empty trait braces on same line if possible
mujpao [Tue, 2 Nov 2021 06:13:30 +0000 (23:13 -0700)]
Put empty trait braces on same line if possible

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 agoUpdate IntelliJ Integration (#4238)
Dmitry Murzin [Sat, 6 Jun 2020 14:19:50 +0000 (17:19 +0300)]
Update IntelliJ Integration (#4238)

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