]> git.lizzy.rs Git - rust.git/log
rust.git
2 years agoRollup merge of #95058 - wcampbell0x2a:use-then-in-unix-process, r=dtolnay
Matthias Krüger [Fri, 18 Mar 2022 20:50:49 +0000 (21:50 +0100)]
Rollup merge of #95058 - wcampbell0x2a:use-then-in-unix-process, r=dtolnay

Add use of bool::then in sys/unix/process

Remove `else { None }` in favor of using `bool::then()`

2 years agoRollup merge of #95017 - zachs18:cmp_ordering_derive_eq, r=Dylan-DPC
Matthias Krüger [Fri, 18 Mar 2022 20:50:48 +0000 (21:50 +0100)]
Rollup merge of #95017 - zachs18:cmp_ordering_derive_eq, r=Dylan-DPC

Derive Eq for std::cmp::Ordering, instead of using manual impl.

This allows consts of type Ordering to be used in patterns, and with feature(adt_const_params) allows using `Ordering` as a const generic parameter.

Currently, `std::cmp::Ordering` implements `Eq` using a manually written `impl Eq for Ordering {}`, instead of `derive(Eq)`. This means that it does not implement `StructuralEq`.

This commit removes the manually written impl, and adds `derive(Eq)` to `Ordering`, so that it will implement `StructuralEq`.

2 years agoRollup merge of #94993 - GrishaVar:too-many-hashes-test, r=Dylan-DPC
Matthias Krüger [Fri, 18 Mar 2022 20:50:48 +0000 (21:50 +0100)]
Rollup merge of #94993 - GrishaVar:too-many-hashes-test, r=Dylan-DPC

Add test for >65535 hashes in lexing raw string

2 years agoRollup merge of #94848 - GuillaumeGomez:browser-ui-test-version, r=Mark-Simulacrum
Matthias Krüger [Fri, 18 Mar 2022 20:50:47 +0000 (21:50 +0100)]
Rollup merge of #94848 - GuillaumeGomez:browser-ui-test-version, r=Mark-Simulacrum

Compare installed browser-ui-test version to the one used in CI

I happened a few times to run into (local) rustdoc GUI tests errors because I forgot to update my browser-ui-test version. I know at least two others who encountered the same problem so I think emitting a warning to let us know about this version mismatch would make it easier to figure out.

So now, I'm not too sure that this PR is the right approach because it requires to parse a Dockerfile, which feels pretty bad. I had the idea to instead store the browser-ui-test version into a docker ARG like:

```docker
ARG BROWSER_UI_TEST_VERSION=0.8.0
```

And then use it as such in the command to make the parsing more reliable.

Or we could store this version into a file and import this file into the Dockerfile and read it from the builder.

Any preference or maybe another solution?

r? ``@Mark-Simulacrum``

2 years agoRollup merge of #94295 - Urgau:cfg-always-eval-all-predicate, r=petrochenkov
Matthias Krüger [Fri, 18 Mar 2022 20:50:46 +0000 (21:50 +0100)]
Rollup merge of #94295 - Urgau:cfg-always-eval-all-predicate, r=petrochenkov

Always evaluate all cfg predicate in all() and any()

This pull-request adjust the handling of the `all()` and `any()` to always evaluate every cfg predicate because not doing so result in accepting incorrect `cfg`:

```rust
#[cfg(any(unix, foo::bar))] // Should error on foo::bar, but does not on unix platform (but does on non unix platform)
fn foo1() {}

#[cfg(all(foo, foo::bar))] // Should error on foo::bar, but does not
fn foo2() {}

#[cfg(all(foo::bar, foo))] // Correctly error on foo::bar
fn foo3() {}

#[cfg(any(foo::bar, foo))] // Correctly error on foo::bar
fn foo4() {}
```
This pull-request take the side to directly turn it into a hard error instead of having a future incompatibility lint because the combination to get this incorrect behavior is unusual and highly probable that some code have this without noticing.

A [search](https://cs.github.com/?scopeName=All+repos&scope=&q=lang%3Arust+%2Fany%5C%28%5Ba-zA-Z%5D%2C+%5Ba-zA-Z%5D%2B%3A%3A%5Ba-zA-Z%5D%2B%2F) on Github reveal no such instance nevertheless a Crater run should probably be done before merging this.

This was discover in https://github.com/rust-lang/rust/pull/94175 when trying to lint on the second predicate. Also note that this seems to have being introduce with Rust 1.27.0: https://rust.godbolt.org/z/KnfqKv15f.

r? `@petrochenkov`

2 years agoRollup merge of #94115 - scottmcm:iter-process-by-ref, r=yaahc
Matthias Krüger [Fri, 18 Mar 2022 20:50:44 +0000 (21:50 +0100)]
Rollup merge of #94115 - scottmcm:iter-process-by-ref, r=yaahc

Let `try_collect` take advantage of `try_fold` overrides

No public API changes.

With this change, `try_collect` (#94047) is no longer going through the `impl Iterator for &mut impl Iterator`, and thus will be able to use `try_fold` overrides instead of being forced through `next` for every element.

Here's the test added, to see that it fails before this PR (once a new enough nightly is out): https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=462f2896f2fed2c238ee63ca1a7e7c56

This might as well go to the same person as my last `try_process` PR  (#93572), so
r? ``@yaahc``

2 years agoAuto merge of #95068 - TaKO8Ki:use-create-snapshot-for-diagnostic, r=davidtwco
bors [Fri, 18 Mar 2022 14:50:29 +0000 (14:50 +0000)]
Auto merge of #95068 - TaKO8Ki:use-create-snapshot-for-diagnostic, r=davidtwco

Use `Parser.create_snapshot_for_diagnostic` instead of `Parser.clone()`

Use [`create_snapshot_for_diagnostic`](https://github.com/rust-lang/rust/blob/cd119057160cedea245aa2679add56723f3dc784/compiler/rustc_parse/src/parser/diagnostics.rs#L214-L223) I implemented in https://github.com/rust-lang/rust/pull/94731 instead of `self.clone()` to avoid duplicate unclosed delims errors being emitted when the `Parser` is dropped.

2 years agoAuto merge of #95067 - nnethercote:parse_tt-more-refactoring, r=petrochenkov
bors [Fri, 18 Mar 2022 12:34:05 +0000 (12:34 +0000)]
Auto merge of #95067 - nnethercote:parse_tt-more-refactoring, r=petrochenkov

Still more refactoring of `parse_tt`

r? `@petrochenkov`

2 years agoRun rustdoc GUI tests when browser-ui-test version is updated
Guillaume Gomez [Fri, 18 Mar 2022 09:50:53 +0000 (10:50 +0100)]
Run rustdoc GUI tests when browser-ui-test version is updated

2 years agoCompare installed browser-ui-test version to the one used in CI
Guillaume Gomez [Fri, 11 Mar 2022 14:29:11 +0000 (15:29 +0100)]
Compare installed browser-ui-test version to the one used in CI

2 years agouse `self.create_snapshot_for_diagnostic` instead of `self.clone()`
Takayuki Maeda [Fri, 18 Mar 2022 07:56:43 +0000 (16:56 +0900)]
use `self.create_snapshot_for_diagnostic` instead of `self.clone()`

2 years agoRename `TtSeq` as `TtSlice`.
Nicholas Nethercote [Fri, 18 Mar 2022 06:39:13 +0000 (17:39 +1100)]
Rename `TtSeq` as `TtSlice`.

It's a better name because (a) it holds a slice, and (b) "sequence" has
other meanings in this file.

2 years agoTweak a bunch of comments.
Nicholas Nethercote [Fri, 18 Mar 2022 06:13:41 +0000 (17:13 +1100)]
Tweak a bunch of comments.

I've been staring at these enough lately that they're annoying me, let's
make them better.

2 years agoAuto merge of #95065 - matthiaskrgr:rollup-75i6oz5, r=matthiaskrgr
bors [Fri, 18 Mar 2022 05:26:14 +0000 (05:26 +0000)]
Auto merge of #95065 - matthiaskrgr:rollup-75i6oz5, r=matthiaskrgr

Rollup of 4 pull requests

Successful merges:

 - #95013 (Update browser-ui-test version to 0.8.2)
 - #95039 (Make negative coherence work when there's impl negative on super predicates)
 - #95047 (Refactor: remove an unnecessary pattern for ignoring all parts)
 - #95048 (update Miri)

Failed merges:

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

2 years agoRollup merge of #95048 - RalfJung:miri, r=RalfJung
Matthias Krüger [Fri, 18 Mar 2022 04:21:57 +0000 (05:21 +0100)]
Rollup merge of #95048 - RalfJung:miri, r=RalfJung

update Miri

Let's get those SIMD intrinsics out there. :)
r? `@ghost`

2 years agoRollup merge of #95047 - TaKO8Ki:remove-unnecessary-pattern-for-ignoring-all-parts...
Matthias Krüger [Fri, 18 Mar 2022 04:21:56 +0000 (05:21 +0100)]
Rollup merge of #95047 - TaKO8Ki:remove-unnecessary-pattern-for-ignoring-all-parts, r=wesleywiser

Refactor: remove an unnecessary pattern for ignoring all parts

2 years agoRollup merge of #95039 - spastorino:overlap-super-predicates, r=nikomatsakis
Matthias Krüger [Fri, 18 Mar 2022 04:21:55 +0000 (05:21 +0100)]
Rollup merge of #95039 - spastorino:overlap-super-predicates, r=nikomatsakis

Make negative coherence work when there's impl negative on super predicates

r? `@nikomatsakis`

2 years agoRollup merge of #95013 - GuillaumeGomez:browser-ui-test-v, r=notriddle
Matthias Krüger [Fri, 18 Mar 2022 04:21:54 +0000 (05:21 +0100)]
Rollup merge of #95013 - GuillaumeGomez:browser-ui-test-v, r=notriddle

Update browser-ui-test version to 0.8.2

It brings mostly debugging improvements: it doesn't stop at the first failing command but rather at the first "fatal error".

r? `@notriddle`

2 years agoReorder cases in `parse_tt_inner`.
Nicholas Nethercote [Fri, 18 Mar 2022 03:16:45 +0000 (14:16 +1100)]
Reorder cases in `parse_tt_inner`.

I find the new order easier to read: within a matcher; past the end of a
repetition; at end of input. It also reduces the indentation level by
one for

2 years agoOnly modify `eof_items` if `token == Eof`.
Nicholas Nethercote [Fri, 18 Mar 2022 03:11:01 +0000 (14:11 +1100)]
Only modify `eof_items` if `token == Eof`.

Because that's the condition under which `eof_items` is used.

2 years agoFactor out some code into `MatcherPos::repetition`.
Nicholas Nethercote [Fri, 18 Mar 2022 03:09:02 +0000 (14:09 +1100)]
Factor out some code into `MatcherPos::repetition`.

Also move `create_matches` within `impl MatcherPos`, because it's only
used within that impl block.

2 years agoAuto merge of #88098 - Amanieu:oom_panic, r=nagisa
bors [Fri, 18 Mar 2022 03:01:46 +0000 (03:01 +0000)]
Auto merge of #88098 - Amanieu:oom_panic, r=nagisa

Implement -Z oom=panic

This PR removes the `#[rustc_allocator_nounwind]` attribute on `alloc_error_handler` which allows it to unwind with a panic instead of always aborting. This is then used to implement `-Z oom=panic` as per RFC 2116 (tracking issue #43596).

Perf and binary size tests show negligible impact.

2 years agoAdd two useful assertions.
Nicholas Nethercote [Fri, 18 Mar 2022 01:51:01 +0000 (12:51 +1100)]
Add two useful assertions.

2 years agoAuto merge of #95056 - Dylan-DPC:rollup-swtuw2n, r=Dylan-DPC
bors [Fri, 18 Mar 2022 00:35:19 +0000 (00:35 +0000)]
Auto merge of #95056 - Dylan-DPC:rollup-swtuw2n, r=Dylan-DPC

Rollup of 10 pull requests

Successful merges:

 - #91133 (Improve `unsafe` diagnostic)
 - #93222 (Make ErrorReported impossible to construct outside `rustc_errors`)
 - #93745 (Stabilize ADX target feature)
 - #94309 ([generator_interior] Be more precise with scopes of borrowed places)
 - #94698 (Remove redundant code from copy-suggestions)
 - #94731 (Suggest adding `{ .. }` around a const function call with arguments)
 - #94960 (Fix many spelling mistakes)
 - #94982 (Add deprecated_safe feature gate and attribute, cc #94978)
 - #94997 (debuginfo: Fix ICE when generating name for type that produces a layout error.)
 - #95000 (Fixed wrong type name in comment)

Failed merges:

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

2 years agofeat: Add use of bool::then in sys/unix/process
wcampbell [Thu, 17 Mar 2022 23:12:09 +0000 (19:12 -0400)]
feat: Add use of bool::then in sys/unix/process

Remove else { None } in favor of using bool::then()

2 years agoRollup merge of #95000 - fee1-dead:fee1-dead-patch-1, r=Mark-Simulacrum
Dylan DPC [Thu, 17 Mar 2022 21:55:08 +0000 (22:55 +0100)]
Rollup merge of #95000 - fee1-dead:fee1-dead-patch-1, r=Mark-Simulacrum

Fixed wrong type name in comment

95kth issue/pr!

2 years agoRollup merge of #94997 - michaelwoerister:fix-enum-type-name-layout-error, r=wesleywiser
Dylan DPC [Thu, 17 Mar 2022 21:55:07 +0000 (22:55 +0100)]
Rollup merge of #94997 - michaelwoerister:fix-enum-type-name-layout-error, r=wesleywiser

debuginfo: Fix ICE when generating name for type that produces a layout error.

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

2 years agoRollup merge of #94982 - skippy10110:deprecated_safe, r=Dylan-DPC
Dylan DPC [Thu, 17 Mar 2022 21:55:06 +0000 (22:55 +0100)]
Rollup merge of #94982 - skippy10110:deprecated_safe, r=Dylan-DPC

Add deprecated_safe feature gate and attribute, cc #94978

2 years agoRollup merge of #94960 - codehorseman:master, r=oli-obk
Dylan DPC [Thu, 17 Mar 2022 21:55:05 +0000 (22:55 +0100)]
Rollup merge of #94960 - codehorseman:master, r=oli-obk

Fix many spelling mistakes

Signed-off-by: codehorseman <cricis@yeah.net>
2 years agoRollup merge of #94731 - TaKO8Ki:const-generic-expr-recovery, r=davidtwco,oli-obk
Dylan DPC [Thu, 17 Mar 2022 21:55:04 +0000 (22:55 +0100)]
Rollup merge of #94731 - TaKO8Ki:const-generic-expr-recovery, r=davidtwco,oli-obk

Suggest adding `{ .. }` around a const function call with arguments

closes #91020

2 years agoRollup merge of #94698 - WaffleLapkin:simplify-copy-suggestions, r=estebank
Dylan DPC [Thu, 17 Mar 2022 21:55:03 +0000 (22:55 +0100)]
Rollup merge of #94698 - WaffleLapkin:simplify-copy-suggestions, r=estebank

Remove redundant code from copy-suggestions

Follow up to #94375, just remove some code that is not necessary anymore. This may make the perf of such suggestions a little bit worse, but I don't think this is significant.

r? `@estebank`

2 years agoRollup merge of #94309 - eholk:issue-57017, r=tmandry
Dylan DPC [Thu, 17 Mar 2022 21:55:02 +0000 (22:55 +0100)]
Rollup merge of #94309 - eholk:issue-57017, r=tmandry

[generator_interior] Be more precise with scopes of borrowed places

Previously the generator interior type checking analysis would use the nearest temporary scope as the scope of a borrowed value. This ends up being overly broad for cases such as:

```rust
fn status(_client_status: &Client) -> i16 {
    200
}

fn main() {
    let client = Client;
    let g = move || match status(&client) {
        _status => yield,
    };
    assert_send(g);
}
```

In this case, the borrow `&client` could be considered in scope for the entirety of the `match` expression, meaning it would be viewed as live across the `yield`, therefore making the generator not `Send`.

In most cases, we want to use the enclosing expression as the scope for a borrowed value which will be less than or equal to the nearest temporary scope. This PR changes the analysis to use the enclosing expression as the scope for most borrows, with the exception of borrowed RValues which are true temporary values that should have the temporary scope. There's one further exception where borrows of a copy such as happens in autoref cases also should be ignored despite being RValues.

Joint work with `@nikomatsakis`

Fixes #57017

r? `@tmandry`

2 years agoRollup merge of #93745 - tarcieri:stabilize-adx, r=cjgillot
Dylan DPC [Thu, 17 Mar 2022 21:55:01 +0000 (22:55 +0100)]
Rollup merge of #93745 - tarcieri:stabilize-adx, r=cjgillot

Stabilize ADX target feature

This is a continuation of #60109, which noted that while the ADX intrinsics were stabilized, the corresponding target feature never was.

This PR follows the same general structure and stabilizes the ADX target feature.

See also https://github.com/rust-lang/rust/issues/44839 - tracking issue for target feature

2 years agoRollup merge of #93222 - mark-i-m:errorreported, r=oli-obk
Dylan DPC [Thu, 17 Mar 2022 21:55:00 +0000 (22:55 +0100)]
Rollup merge of #93222 - mark-i-m:errorreported, r=oli-obk

Make ErrorReported impossible to construct outside `rustc_errors`

There are a few places were we have to construct it, though, and a few
places that are more invasive to change. To do this, we create a
constructor with a long obvious name.

cc #69426 `@varkor` `@eddyb` `@estebank`

I actually didn't see that I was assigned to this issue until now...

2 years agoRollup merge of #91133 - terrarier2111:unsafe-diagnostic, r=jackh726
Dylan DPC [Thu, 17 Mar 2022 21:54:59 +0000 (22:54 +0100)]
Rollup merge of #91133 - terrarier2111:unsafe-diagnostic, r=jackh726

Improve `unsafe` diagnostic

This fixes: https://github.com/rust-lang/rust/issues/90880
I didn't use the exact proposed messages though.

2 years agoAuto merge of #95020 - compiler-errors:late-debuginfo, r=jackh726
bors [Thu, 17 Mar 2022 21:54:25 +0000 (21:54 +0000)]
Auto merge of #95020 - compiler-errors:late-debuginfo, r=jackh726

erase late-bound regions in dyn projection types for debuginfo

simply skipping the binder leaves late-bound regions that will cause debug assertions to fail when checking the layout of the projection ty, so let's erase the regions instead.

sorry for taking so long to put this up, had trouble getting rustc set up on a new computer.

fixes #94998

2 years agoUpdate compiler/rustc_trait_selection/src/traits/coherence.rs
Niko Matsakis [Thu, 17 Mar 2022 20:51:30 +0000 (16:51 -0400)]
Update compiler/rustc_trait_selection/src/traits/coherence.rs

2 years agoAuto merge of #95050 - ehuss:fix-cmake-build, r=Mark-Simulacrum
bors [Thu, 17 Mar 2022 18:52:14 +0000 (18:52 +0000)]
Auto merge of #95050 - ehuss:fix-cmake-build, r=Mark-Simulacrum

Fix cmake build.

This is an attempt to fix the cmake build. For some reason, it has recently started failing with a permission denied trying to overwrite `/tmp/build.log`.  This file exists from the `build-toolchains.sh` step, which is owned by the rustbuild user. I think there is some behavior where a sticky `/tmp` directory doesn't allow overwriting files owned by other users even when running as root.  I do not know why this has suddenly started, and I can't reproduce locally with my own docker setup. However, this fix seems to work on CI.

2 years agoFix cmake build.
Eric Huss [Thu, 17 Mar 2022 18:43:38 +0000 (11:43 -0700)]
Fix cmake build.

2 years agoupdate Miri
Ralf Jung [Thu, 17 Mar 2022 18:27:42 +0000 (14:27 -0400)]
update Miri

2 years agoUse let else here
Santiago Pastorino [Thu, 17 Mar 2022 17:55:16 +0000 (14:55 -0300)]
Use let else here

2 years agorefactor: remove an unnecessary pattern for ignoring all parts
Takayuki Maeda [Thu, 17 Mar 2022 17:54:06 +0000 (02:54 +0900)]
refactor: remove an unnecessary pattern for ignoring all parts

2 years agoAdd more commments
Santiago Pastorino [Thu, 17 Mar 2022 15:37:18 +0000 (12:37 -0300)]
Add more commments

2 years agoThis test now works
Santiago Pastorino [Thu, 17 Mar 2022 15:36:12 +0000 (12:36 -0300)]
This test now works

2 years agoExtract obligation resolution to function
Santiago Pastorino [Thu, 17 Mar 2022 15:09:00 +0000 (12:09 -0300)]
Extract obligation resolution to function

2 years agoMake negative coherence work when there's impl negative on super predicates
Santiago Pastorino [Thu, 17 Mar 2022 14:26:45 +0000 (11:26 -0300)]
Make negative coherence work when there's impl negative on super predicates

2 years agoAdd comments on Polarity
Santiago Pastorino [Thu, 17 Mar 2022 14:10:19 +0000 (11:10 -0300)]
Add comments on Polarity

2 years agoRun GUI test when browser-ui-test version is updated
Guillaume Gomez [Wed, 16 Mar 2022 21:22:16 +0000 (22:22 +0100)]
Run GUI test when browser-ui-test version is updated

2 years agoUpdate browser-ui-test version to 0.8.3
Guillaume Gomez [Wed, 16 Mar 2022 15:18:47 +0000 (16:18 +0100)]
Update browser-ui-test version to 0.8.3

2 years agoAdd test for StructuralEq for std::cmp::Ordering.
Zachary S [Wed, 16 Mar 2022 19:01:48 +0000 (14:01 -0500)]
Add test for StructuralEq for std::cmp::Ordering.

Added test in library/core/tests/cmp.rs that ensures that `const`s of type `Ordering`s can be used in patterns.

2 years agoerase late-bound regions in dyn projection types for debuginfo
Michael Goulet [Wed, 16 Mar 2022 18:53:31 +0000 (11:53 -0700)]
erase late-bound regions in dyn projection types for debuginfo

2 years agoAdd double negative trait test case
Santiago Pastorino [Wed, 16 Mar 2022 17:59:03 +0000 (14:59 -0300)]
Add double negative trait test case

2 years agoDerive Eq for std::cmp::Ordering, instead of using manual impl.
Zachary S [Wed, 16 Mar 2022 16:36:31 +0000 (11:36 -0500)]
Derive Eq for std::cmp::Ordering, instead of using manual impl.

This allows consts of type Ordering to be used in patterns, and (with feature(adt_const_params)) allows using Orderings as const generic parameters.

2 years agorustc_error: make ErrorReported impossible to construct
mark [Sun, 23 Jan 2022 00:49:12 +0000 (18:49 -0600)]
rustc_error: make ErrorReported impossible to construct

There are a few places were we have to construct it, though, and a few
places that are more invasive to change. To do this, we create a
constructor with a long obvious name.

2 years agodebuginfo: Fix ICE when generating name for type that produces a layout error.
Michael Woerister [Wed, 16 Mar 2022 10:03:07 +0000 (11:03 +0100)]
debuginfo: Fix ICE when generating name for type that produces a layout error.

2 years agoresolve the conflict in compiler/rustc_session/src/parse.rs
codehorseman [Wed, 16 Mar 2022 12:12:30 +0000 (20:12 +0800)]
resolve the conflict in compiler/rustc_session/src/parse.rs

Signed-off-by: codehorseman <cricis@yeah.net>
2 years agoUpdate issue-92111.rs
fee1-dead [Wed, 16 Mar 2022 10:50:18 +0000 (21:50 +1100)]
Update issue-92111.rs

2 years agoAuto merge of #94995 - luojia65:riscv-more-features, r=Amanieu
bors [Wed, 16 Mar 2022 10:16:33 +0000 (10:16 +0000)]
Auto merge of #94995 - luojia65:riscv-more-features, r=Amanieu

Support more RISC-V backend features on rustc compiler

This pull request adds the following RISC-V compiler features:

- V for vector extension
- Zfinx, Zdinx, Zhinx and Zhinxmin float in integer register extensions
- Zfh, Zfhmin 16-bit float pointer extensions
- Zbkb, Zkbc, Zbkc, Zk* cryptography extensions

It matches name in LLVM feature and is_riscv_feature_detected!. In this case we can use `#[target_feature]` on new RISC-V features. Ref: https://github.com/rust-lang/stdarch/pull/1263#pullrequestreview-825891905

Use `rustc --print target-features` under any RISC-V target (or with `--target`) to check the features the rustc compiler support.

<details>

```
luojia@luojia-virtual-machine:~/IntrinRiscv/stdarch-riscv-crypto$ cargo rustc -- --print target-features
   Compiling stdarch-riscv-crypto v0.1.0 (/home/luojia/IntrinRiscv/stdarch-riscv-crypto)
Features supported by rustc for this target:
    m                - 'M' (Integer Multiplication and Division).
    a                - 'A' (Atomic Instructions).
    c                - 'C' (Compressed Instructions).
    f                - 'F' (Single-Precision Floating-Point).
    d                - 'D' (Double-Precision Floating-Point).
    e                - Implements RV32E (provides 16 rather than 32 GPRs).
    v                - 'V' (Vector Extension for Application Processors).
    zfinx            - 'Zfinx' (Float in Integer).
    zdinx            - 'Zdinx' (Double in Integer).
    zhinx            - 'Zhinx' (Half Float in Integer).
    zhinxmin         - 'Zhinxmin' (Half Float in Integer Minimal).
    zfh              - 'Zfh' (Half-Precision Floating-Point).
    zfhmin           - 'Zfhmin' (Half-Precision Floating-Point Minimal).
    zbkb             - 'Zbkb' (Bitmanip instructions for Cryptography).
    zbkc             - 'Zbkc' (Carry-less multiply instructions for Cryptography).
    zbkx             - 'Zbkx' (Crossbar permutation instructions).
    zknd             - 'Zknd' (NIST Suite: AES Decryption).
    zkne             - 'Zkne' (NIST Suite: AES Encryption).
    zknh             - 'Zknh' (NIST Suite: Hash Function Instructions).
    zksed            - 'Zksed' (ShangMi Suite: SM4 Block Cipher Instructions).
    zksh             - 'Zksh' (ShangMi Suite: SM3 Hash Function Instructions).
    zkr              - 'Zkr' (Entropy Source Extension).
    zkn              - 'Zkn' (NIST Algorithm Suite).
    zks              - 'Zks' (ShangMi Algorithm Suite).
    zk               - 'Zk' (Standard scalar cryptography extension).
    zkt              - 'Zkt' (Data Independent Execution Latency).
    crt-static       - Enables C Run-time Libraries to be statically linked.

Code-generation features supported by LLVM for this target:
    64bit            - Implements RV64.
    experimental-zbe - 'Zbe' (Extract-Deposit 'Zb' Instructions).
    experimental-zbf - 'Zbf' (Bit-Field 'Zb' Instructions).
    experimental-zbm - 'Zbm' (Matrix 'Zb' Instructions).
    experimental-zbp - 'Zbp' (Permutation 'Zb' Instructions).
    experimental-zbr - 'Zbr' (Polynomial Reduction 'Zb' Instructions).
    experimental-zbt - 'Zbt' (Ternary 'Zb' Instructions).
    no-rvc-hints     - Disable RVC Hint Instructions..
    relax            - Enable Linker relaxation..
    reserve-x1       - Reserve X1.
    reserve-x10      - Reserve X10.
    reserve-x11      - Reserve X11.
    reserve-x12      - Reserve X12.
    reserve-x13      - Reserve X13.
    reserve-x14      - Reserve X14.
    reserve-x15      - Reserve X15.
    reserve-x16      - Reserve X16.
    reserve-x17      - Reserve X17.
    reserve-x18      - Reserve X18.
    reserve-x19      - Reserve X19.
    reserve-x2       - Reserve X2.
    reserve-x20      - Reserve X20.
    reserve-x21      - Reserve X21.
    reserve-x22      - Reserve X22.
    reserve-x23      - Reserve X23.
    reserve-x24      - Reserve X24.
    reserve-x25      - Reserve X25.
    reserve-x26      - Reserve X26.
    reserve-x27      - Reserve X27.
    reserve-x28      - Reserve X28.
    reserve-x29      - Reserve X29.
    reserve-x3       - Reserve X3.
    reserve-x30      - Reserve X30.
    reserve-x31      - Reserve X31.
    reserve-x4       - Reserve X4.
    reserve-x5       - Reserve X5.
    reserve-x6       - Reserve X6.
    reserve-x7       - Reserve X7.
    reserve-x8       - Reserve X8.
    reserve-x9       - Reserve X9.
    save-restore     - Enable save/restore..
    sifive7          - SiFive 7-Series processors.
    zba              - 'Zba' (Address Generation Instructions).
    zbb              - 'Zbb' (Basic Bit-Manipulation).
    zbc              - 'Zbc' (Carry-Less Multiplication).
    zbs              - 'Zbs' (Single-Bit Instructions).
    zve32f           - 'Zve32f' (Vector Extensions for Embedded Processors with maximal 32 EEW and F extension).
    zve32x           - 'Zve32x' (Vector Extensions for Embedded Processors with maximal 32 EEW).
    zve64d           - 'Zve64d' (Vector Extensions for Embedded Processors with maximal 64 EEW, F and D extension).
    zve64f           - 'Zve64f' (Vector Extensions for Embedded Processors with maximal 64 EEW and F extension).
    zve64x           - 'Zve64x' (Vector Extensions for Embedded Processors with maximal 64 EEW).
    zvl1024b         - 'Zvl' (Minimum Vector Length) 1024.
    zvl128b          - 'Zvl' (Minimum Vector Length) 128.
    zvl16384b        - 'Zvl' (Minimum Vector Length) 16384.
    zvl2048b         - 'Zvl' (Minimum Vector Length) 2048.
    zvl256b          - 'Zvl' (Minimum Vector Length) 256.
    zvl32768b        - 'Zvl' (Minimum Vector Length) 32768.
    zvl32b           - 'Zvl' (Minimum Vector Length) 32.
    zvl4096b         - 'Zvl' (Minimum Vector Length) 4096.
    zvl512b          - 'Zvl' (Minimum Vector Length) 512.
    zvl64b           - 'Zvl' (Minimum Vector Length) 64.
    zvl8192b         - 'Zvl' (Minimum Vector Length) 8192.

Use +feature to enable a feature, or -feature to disable it.
For example, rustc -C target-cpu=mycpu -C target-feature=+feature1,-feature2

Code-generation features cannot be used in cfg or #[target_feature],
and may be renamed or removed in a future version of LLVM or rustc.

    Finished dev [unoptimized + debuginfo] target(s) in 0.03s
```
</details>

Proof of concept:

<details>

```rust
#![feature(link_llvm_intrinsics)]
#![feature(target_feature_11)]
#![feature(riscv_target_feature)]

extern "C" {
    #[link_name = "llvm.riscv.sm3p0"]
    fn llvm_sm3p0(x: u32) -> u32;
    #[link_name = "llvm.riscv.sm3p1"]
    fn llvm_sm3p1(x: u32) -> u32;
}

#[target_feature(enable = "zksh")]
pub unsafe fn sm3p0(x: u32) -> u32 {
    unsafe { llvm_sm3p0(x) }
}

extern "C" {
    #[link_name = "llvm.riscv.vsetvli"]
    fn llvm_vsetvli(avl: usize, sew: usize, lmul: usize) -> usize;
    #[link_name = "llvm.riscv.vsetvlimax"]
    fn llvm_vsetvlimax(sew: usize, lmul: usize) -> usize;
}

#[target_feature(enable = "v")]
pub unsafe fn vsetvli<const SEW: usize, const LMUL: usize>(avl: usize) -> usize {
    unsafe { llvm_vsetvli(avl, SEW, LMUL) }
}
```
</details>

r? `@Amanieu`

2 years agofeat: more RISC-V features
luojia65 [Wed, 16 Mar 2022 08:57:36 +0000 (16:57 +0800)]
feat: more RISC-V features

These features include:
- V for vector extension
- Zfinx, Zdinx, Zhinx and Zhinxmin float in integer register extensions
- Zfh, Zfhmin 16-bit float pointer extensions
- Zbkb, Zkbc, Zbkc, Zk* cryptography extensions

It matches name in LLVM feature and is_riscv_feature_detected!.

2 years agoAuto merge of #94990 - ehuss:update-books, r=ehuss
bors [Wed, 16 Mar 2022 06:19:54 +0000 (06:19 +0000)]
Auto merge of #94990 - ehuss:update-books, r=ehuss

Update books

## reference

8 commits in 9d289c05fce7254b99c6a0d354d84abb7fd7a032..0a2fe6651fbccc6416c5110fdf5b93fb3cb29247
2022-02-23 08:58:20 -0800 to 2022-03-15 09:32:25 -0700
- Documentation PR for cfg_panic (rust-lang/reference#1157)
- Document aarch64 `target_feature` options (rust-lang/reference#1102)
- Try to clarify destructor not being run scenario. (rust-lang/reference#1107)
- Add undocumented Punctuation token Tilde `~` (rust-lang/reference#1149)
- update UB list for safe target_feature (rust-lang/reference#1050)
- Update const_eval.md for feature stabilization (rust-lang/reference#1166)
- Remove `.intel_syntax`/`.att_syntax` support entirely.
- Fix `.intel_syntax` directive

## book

3 commits in 3f255ed40b8c82a0434088568fbed270dc31bf00..036e88a4f135365de85358febe5324976a56030a
2022-02-27 21:26:12 -0500 to 2022-03-04 21:53:33 -0500
- Fix some links and small wordings
- Snapshot of chapter 19 for nostarch
- Clarify fully-qualified syntax explanation

## rust-by-example

2 commits in 2a928483a20bb306a7399c0468234db90d89afb5..d504324f1e7dc7edb918ac39baae69f1f1513b8e
2022-02-28 11:36:59 -0300 to 2022-03-07 09:26:32 -0300
- Fixed extra indentation at line 43 in Phantom Testcase example. (rust-lang/rust-by-example#1515)
- Typo fixed in description of inline ASM cpuid function (rust-lang/rust-by-example#1514)

## rustc-dev-guide

3 commits in 32f2a5b4e7545318846185198542230170dd8a42..0e4b961a9c708647bca231430ce1b199993e0196
2022-03-01 10:45:24 -0600 to 2022-03-14 08:40:37 -0700
- update winget install instructions to ensure proper packages are installed (-e for --exact, and full package names to ensure arbitrary packages from
the msstore source aren't installed)
- Add missing rustdoc tests explanations
- Fix incorrectly escaped backtick

2 years agoAdd test for >65535 hashes in lexing raw string
Grisha [Wed, 16 Mar 2022 05:37:41 +0000 (06:37 +0100)]
Add test for >65535 hashes in lexing raw string

2 years agoAuto merge of #94987 - Dylan-DPC:rollup-5tssuhi, r=Dylan-DPC
bors [Wed, 16 Mar 2022 04:05:35 +0000 (04:05 +0000)]
Auto merge of #94987 - Dylan-DPC:rollup-5tssuhi, r=Dylan-DPC

Rollup of 5 pull requests

Successful merges:

 - #94868 (Format core and std macro rules, removing needless surrounding blocks)
 - #94951 (Extend the irrefutable_let_patterns lint to let chains)
 - #94955 (Refactor: Use `format_args_capture` in some parts of `rustc_parse`)
 - #94957 (Improve the explanation about the behaviour of read_line)
 - #94974 (Ensure that `let_else` does not interact with `let_chains`)

Failed merges:

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

2 years agoUpdate books
Eric Huss [Wed, 16 Mar 2022 03:42:35 +0000 (20:42 -0700)]
Update books

2 years agoRollup merge of #94974 - c410-f3r:let-chain-dashufwrqwemkf-let-else, r=joshtriplett
Dylan DPC [Wed, 16 Mar 2022 02:34:35 +0000 (03:34 +0100)]
Rollup merge of #94974 - c410-f3r:let-chain-dashufwrqwemkf-let-else, r=joshtriplett

Ensure that `let_else` does not interact with `let_chains`

As requested on https://github.com/rust-lang/rust/pull/94927.

cc `@joshtriplett` `@estebank`

2 years agoRollup merge of #94957 - iamzhangyong:explanation-read_line, r=Dylan-DPC
Dylan DPC [Wed, 16 Mar 2022 02:34:34 +0000 (03:34 +0100)]
Rollup merge of #94957 - iamzhangyong:explanation-read_line, r=Dylan-DPC

Improve the explanation about the behaviour of read_line

Close issue like https://github.com/rust-lang/book/issues/2574

2 years agoRollup merge of #94955 - TaKO8Ki:use-format-args-capture-in-rustc-parse, r=Dylan-DPC
Dylan DPC [Wed, 16 Mar 2022 02:34:33 +0000 (03:34 +0100)]
Rollup merge of #94955 - TaKO8Ki:use-format-args-capture-in-rustc-parse, r=Dylan-DPC

Refactor: Use `format_args_capture` in some parts of `rustc_parse`

2 years agoRollup merge of #94951 - est31:irrefutable_let_chain_patterns, r=estebank
Dylan DPC [Wed, 16 Mar 2022 02:34:32 +0000 (03:34 +0100)]
Rollup merge of #94951 - est31:irrefutable_let_chain_patterns, r=estebank

Extend the irrefutable_let_patterns lint to let chains

Implements the suggestion from https://github.com/rust-lang/rust/pull/94927#issuecomment-1067078300

We only look for complete suffixes or prefixes of irrefutable let patterns, so
that an irrefutable let pattern in a chain surrounded by refutable ones is
not linted, as it is an useful pattern that has no low-cost replacement (unlike suffixes or prefixes which can just be copied outside of the `if`: either into the `if`'s block, or the block surrounding the `if`).
If all patterns in a let chain are irrefutable, we lint as well.

Depends on #94958 ~~so I included it into the PR for now~~ *which has been merged since*.

r? `@estebank`

cc `@joshtriplett` `@c410-f3r`

2 years agoRollup merge of #94868 - dtolnay:noblock, r=Dylan-DPC
Dylan DPC [Wed, 16 Mar 2022 02:34:32 +0000 (03:34 +0100)]
Rollup merge of #94868 - dtolnay:noblock, r=Dylan-DPC

Format core and std macro rules, removing needless surrounding blocks

Many of the asserting and printing macros in `core` and `std` are written with prehistoric-looking formatting, like this:

https://github.com/rust-lang/rust/blob/335ffbfa547df94ac236f5c56130cecf99c8d82b/library/std/src/macros.rs#L96-L101

In modern Rust style this would conventionally be written as follows instead, always using braces and a trailing semicolon on the macro arms:

https://github.com/rust-lang/rust/blob/af53809c874e0afb7be966df4d3cfcaa05277c53/library/std/src/macros.rs#L98-L105

Getting rid of the unneeded braces inside the expansion reduces extraneous indentation in macro-expanded code. For example:

```rust
println!("repro {}", true);
```

```rust
// before:

{
    ::std::io::_print(
        ::core::fmt::Arguments::new_v1(
            &["repro ", "\n"],
            &[::core::fmt::ArgumentV1::new_display(&true)],
        ),
    );
};
```

```rust
// after:

::std::io::_print(
    ::core::fmt::Arguments::new_v1(
        &["repro ", "\n"],
        &[::core::fmt::ArgumentV1::new_display(&true)],
    ),
);
```

2 years agochanged wording
Dylan DPC [Wed, 16 Mar 2022 02:04:40 +0000 (03:04 +0100)]
changed wording

2 years agoAuto merge of #94861 - aDotInTheVoid:rdj-trait-tests, r=CraftSpider
bors [Wed, 16 Mar 2022 01:24:37 +0000 (01:24 +0000)]
Auto merge of #94861 - aDotInTheVoid:rdj-trait-tests, r=CraftSpider

rustdoc-json: More tests, and better jsondocck errors

Helps with #81359

r? `@CraftSpider`

`@rustbot` modify labels: +A-rustdoc-json +T-rustdoc +A-testsuite

2 years agoBless coverage-reports after core macro blocks change
David Tolnay [Wed, 16 Mar 2022 01:10:44 +0000 (18:10 -0700)]
Bless coverage-reports after core macro blocks change

2 years agoExtend the irrefutable_let_patterns lint to let chains
est31 [Tue, 15 Mar 2022 02:48:53 +0000 (03:48 +0100)]
Extend the irrefutable_let_patterns lint to let chains

Only look for complete suffixes or prefixes of irrefutable let patterns, so
that an irrefutable let pattern in a chain surrounded by refutable ones is
not linted, as it is an useful pattern.

2 years agoAuto merge of #94925 - lcnr:relax-sus-auto-impls, r=estebank
bors [Tue, 15 Mar 2022 22:54:35 +0000 (22:54 +0000)]
Auto merge of #94925 - lcnr:relax-sus-auto-impls, r=estebank

relax `suspicious_auto_trait_impls` lint wrt lifetimes

fixes the warning for https://github.com/rust-lang/rust/issues/93367#issuecomment-1063993489.

2 years agoAdd deprecated_safe feature gate and attribute, cc #94978
skippy10110 [Tue, 15 Mar 2022 22:28:53 +0000 (19:28 -0300)]
Add deprecated_safe feature gate and attribute, cc #94978

2 years agoAuto merge of #94973 - GuillaumeGomez:more-gui-tests, r=notriddle
bors [Tue, 15 Mar 2022 20:13:35 +0000 (20:13 +0000)]
Auto merge of #94973 - GuillaumeGomez:more-gui-tests, r=notriddle

Add GUI test to check URLs

The first commit merges both file doing kinda the same thing. Didn't make much sense to keep them separated.

The second commit add checks to ensure the URL has the expected value depending if the search is displayed or not.

r? `@notriddle`

2 years agoEnsure that `let_else` does not interact with `let_chains`
Caio [Tue, 15 Mar 2022 20:00:16 +0000 (17:00 -0300)]
Ensure that `let_else` does not interact with `let_chains`

2 years agoAdd URL GUI tests
Guillaume Gomez [Tue, 15 Mar 2022 19:56:14 +0000 (20:56 +0100)]
Add URL GUI tests

2 years agoMerge both "search-result-color" GUI tests
Guillaume Gomez [Tue, 15 Mar 2022 19:41:24 +0000 (20:41 +0100)]
Merge both "search-result-color" GUI tests

2 years agorustdoc-json: Lifetime tests
Nixon Enraght-Moony [Fri, 11 Mar 2022 19:11:23 +0000 (19:11 +0000)]
rustdoc-json: Lifetime tests

2 years agojsondocck: Better error for invalid @count number
Nixon Enraght-Moony [Thu, 10 Mar 2022 15:55:38 +0000 (15:55 +0000)]
jsondocck: Better error for invalid @count number

2 years agorustdoc-json: Add tests for generic fn args and returns
Nixon Enraght-Moony [Thu, 10 Mar 2022 15:53:48 +0000 (15:53 +0000)]
rustdoc-json: Add tests for generic fn args and returns

2 years agojsondocck: better error for when @set matches multiple items
Nixon Enraght-Moony [Fri, 25 Feb 2022 15:27:11 +0000 (15:27 +0000)]
jsondocck: better error for when @set matches multiple items

2 years agorustdoc-json: Add test for supertraits
Nixon Enraght-Moony [Sun, 20 Feb 2022 22:51:05 +0000 (22:51 +0000)]
rustdoc-json: Add test for supertraits

2 years agoAuto merge of #94966 - matthiaskrgr:rollup-iqzswh3, r=matthiaskrgr
bors [Tue, 15 Mar 2022 16:26:10 +0000 (16:26 +0000)]
Auto merge of #94966 - matthiaskrgr:rollup-iqzswh3, r=matthiaskrgr

Rollup of 4 pull requests

Successful merges:

 - #94810 (debuginfo: Fix bug in type name generation for dyn types with associated types but no other generic arguments.)
 - #94947 (fix typos)
 - #94956 (Fix small typo in FIXME)
 - #94958 (Support other types of pluralization in pluralize macro)

Failed merges:

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

2 years agoRollup merge of #94958 - est31:pluralize, r=oli-obk
Matthias Krüger [Tue, 15 Mar 2022 16:15:55 +0000 (17:15 +0100)]
Rollup merge of #94958 - est31:pluralize, r=oli-obk

Support other types of pluralization in pluralize macro

2 years agoRollup merge of #94956 - martingms:fix-fixme-comment-typo, r=lqd
Matthias Krüger [Tue, 15 Mar 2022 16:15:54 +0000 (17:15 +0100)]
Rollup merge of #94956 - martingms:fix-fixme-comment-typo, r=lqd

Fix small typo in FIXME

I introduced a few small typos when linking to an optimizing PR, this PR fixes them.

r? `@lqd`

2 years agoRollup merge of #94947 - Dylan-DPC:fix/typos, r=oli-obk
Matthias Krüger [Tue, 15 Mar 2022 16:15:53 +0000 (17:15 +0100)]
Rollup merge of #94947 - Dylan-DPC:fix/typos, r=oli-obk

fix typos

Rework of #94603 which got closed as I was trying to unmerge and repush.  This is a subset of changes from the original pr as I sed'd whatever typos I remembered from the original PR

thanks to `@cuishuang` for the original PR

2 years agoRollup merge of #94810 - michaelwoerister:fix-trait-pointer-debuginfo-names, r=wesley...
Matthias Krüger [Tue, 15 Mar 2022 16:15:52 +0000 (17:15 +0100)]
Rollup merge of #94810 - michaelwoerister:fix-trait-pointer-debuginfo-names, r=wesleywiser

debuginfo: Fix bug in type name generation for dyn types with associated types but no other generic arguments.

For types like `&dyn Future<Output=bool>` the compiler currently emits invalid types names in debuginfo. This PR fixes this.

Before:
```txt
// DWARF
&dyn core::future::future::Future, Output=bool>

// CodeView
ref$<dyn$<core::future::future::Future,assoc$<Output,bool> > > >
```

After:
```txt
// DWARF
&dyn core::future::future::Future<Output=bool>

// CodeView
ref$<dyn$<core::future::future::Future<assoc$<Output,bool> > > >
```

These syntactically incorrect type names can cause downstream tools (e.g. debugger extensions) crash when trying to parse them.

r? `@wesleywiser`

2 years agoSupport other types of pluralization in pluralize macro
est31 [Mon, 14 Mar 2022 16:55:14 +0000 (17:55 +0100)]
Support other types of pluralization in pluralize macro

2 years agoAuto merge of #94928 - lcnr:inline-as_substs, r=michaelwoerister
bors [Tue, 15 Mar 2022 13:14:13 +0000 (13:14 +0000)]
Auto merge of #94928 - lcnr:inline-as_substs, r=michaelwoerister

inline `tuple_fields`

more https://github.com/rust-lang/rust/pull/93505 fun, after this i have no idea what might be causing the perf impact.

2 years agoImprove the explanation about the behaviour of read_line
zed.zy [Tue, 15 Mar 2022 11:37:52 +0000 (19:37 +0800)]
Improve the explanation about the behaviour of read_line

2 years agoFix small typo in FIXME
Martin Gammelsæter [Tue, 15 Mar 2022 11:04:23 +0000 (12:04 +0100)]
Fix small typo in FIXME

2 years agoAuto merge of #94261 - michaelwoerister:debuginfo-types-refactor, r=wesleywiser
bors [Tue, 15 Mar 2022 10:52:32 +0000 (10:52 +0000)]
Auto merge of #94261 - michaelwoerister:debuginfo-types-refactor, r=wesleywiser

debuginfo: Refactor debuginfo generation for types

This PR implements the refactoring of the `rustc_codegen_llvm::debuginfo::metadata` module as described in MCP https://github.com/rust-lang/compiler-team/issues/482.

In particular it
- changes names to use `di_node` instead of `metadata`
- uniformly names all functions that build new debuginfo nodes `build_xyz_di_node`
- renames `CrateDebugContext` to `CodegenUnitDebugContext` (which is more accurate)
- removes outdated parts from `compiler/rustc_codegen_llvm/src/debuginfo/doc.md`
- moves `TypeMap` and functions that work directly work with it to a new `type_map` module
- moves enum related builder functions to a new `enums` module
- splits enum debuginfo building for the native and cpp-like cases, since they are mostly separate
- uses `SmallVec` instead of `Vec` in many places
- removes the old infrastructure for dealing with recursion cycles (`create_and_register_recursive_type_forward_declaration()`, `RecursiveTypeDescription`, `set_members_of_composite_type()`, `MemberDescription`, `MemberDescriptionFactory`, `prepare_xyz_metadata()`, etc)
- adds `type_map::build_type_with_children()` as a replacement for dealing with recursion cycles
- adds many (doc-)comments explaining what's going on
- changes cpp-like naming for C-Style enums so they don't get a `enum$<...>` name (because the NatVis visualizer does not apply to them)
- fixes detection of what is a C-style enum because some enums where classified as C-style even though they have fields
- changes cpp-like naming for generator enums so that NatVis works for them
- changes the position of discriminant debuginfo node so it is consistently nested inside the top-level union instead of, sometimes, next to it

The following could be done in subsequent PRs:
- add caching for `closure_saved_names_of_captured_variables`
- add caching for `generator_layout_and_saved_local_names`
- fix inconsistent handling of what is considered a C-style enum wrt to debuginfo
- rename `metadata` module to `types`
- move common generator fields to front instead of appending them

This PR is based on https://github.com/rust-lang/rust/pull/93644 which is not merged yet.

Right now, the changes are all done in one big commit. They could be split into smaller commits but hopefully the list of changes above makes it tractable to review them as a single commit too.

For now: r? `@ghost` (let's see if this affects compile times)

2 years agodebuginfo: Refactor debuginfo generation for types -- Make generator-objects test...
Michael Woerister [Tue, 15 Mar 2022 10:45:51 +0000 (11:45 +0100)]
debuginfo: Refactor debuginfo generation for types -- Make generator-objects test case architecture independent.

2 years agouse `format_args_capture` in some parts of rustc_parse
Takayuki Maeda [Tue, 15 Mar 2022 10:13:56 +0000 (19:13 +0900)]
use `format_args_capture` in some parts of rustc_parse

2 years agoAuto merge of #94938 - lnicola:rust-analyzer-2022-03-14, r=lnicola
bors [Tue, 15 Mar 2022 07:23:50 +0000 (07:23 +0000)]
Auto merge of #94938 - lnicola:rust-analyzer-2022-03-14, r=lnicola

:arrow_up: rust-analyzer

r? `@ghost`

2 years agoAuto merge of #94584 - pnkfelix:inject-use-suggestion-sites, r=ekuber
bors [Tue, 15 Mar 2022 03:56:33 +0000 (03:56 +0000)]
Auto merge of #94584 - pnkfelix:inject-use-suggestion-sites, r=ekuber

More robust fallback for `use` suggestion

Our old way to suggest where to add `use`s would first look for pre-existing `use`s in the relevant crate/module, and if there are *no* uses, it would fallback on trying to use another item as the basis for the suggestion.

But this was fragile, as illustrated in issue #87613

This PR instead identifies span of the first token after any inner attributes, and uses *that* as the fallback for the `use` suggestion.

Fix #87613

2 years agoAuto merge of #92285 - compiler-errors:dyn-proj-bounds, r=nikomatsakis
bors [Tue, 15 Mar 2022 01:31:42 +0000 (01:31 +0000)]
Auto merge of #92285 - compiler-errors:dyn-proj-bounds, r=nikomatsakis

check ~Projection~ all supertrait bounds when confirming dyn candidate

I'm pretty sure Projection is the only other PredicateKind that we care about enforcing here.

Fixes #80800

2 years agofix typos
Dylan DPC [Tue, 15 Mar 2022 01:00:08 +0000 (02:00 +0100)]
fix typos

2 years agocheck all dyn obligations, actually
Michael Goulet [Tue, 1 Feb 2022 03:11:23 +0000 (19:11 -0800)]
check all dyn obligations, actually