]> git.lizzy.rs Git - rust.git/log
rust.git
2 years agoAuto merge of #96489 - shepmaster:revert-vec-from-array-ref, r=yaahc
bors [Fri, 29 Apr 2022 14:39:14 +0000 (14:39 +0000)]
Auto merge of #96489 - shepmaster:revert-vec-from-array-ref, r=yaahc

Revert "impl From<&[T; N]> and From<&mut [T; N]> for Vec<T>"

This reverts commit 5dd702763ae0e112332a4447171adbed51aeee3d.

2 years agoAuto merge of #96468 - davidtwco:diagnostic-translation-subdiagnostic, r=oli-obk
bors [Fri, 29 Apr 2022 11:58:24 +0000 (11:58 +0000)]
Auto merge of #96468 - davidtwco:diagnostic-translation-subdiagnostic, r=oli-obk

macros: subdiagnostic derive

Add a new macro, `#[derive(SessionSubdiagnostic)]`, which can be applied to structs that represent subdiagnostics, such as labels, notes, helps or suggestions.

`#[derive(SessionSubdiagnostic)]` can be used with the existing `#[derive(SessionDiagnostic)]`. All diagnostics implemented using either derive are translatable, and this new derive should make it easier to port existing diagnostics to using these derives.

For example, consider the following subdiagnostic types...

```rust
#[derive(SessionSubdiagnostic)]
pub enum ExpectedIdentifierLabel<'tcx> {
    #[label(slug = "parser-expected-identifier")]
    WithoutFound {
        #[primary_span]
        span: Span,
    }
    #[label(slug = "parser-expected-identifier-found")]
    WithFound {
        #[primary_span]
        span: Span,
        found: String,
    }
}

#[derive(SessionSubdiagnostic)]
#[suggestion_verbose(slug = "parser-raw-identifier")]
pub struct RawIdentifierSuggestion<'tcx> {
    #[primary_span]
    span: Span,
    #[applicability]
    applicability: Applicability,
    ident: Ident,
}
```

...and the corresponding Fluent messages:

```fluent
parser-expected-identifier = expected identifier

parser-expected-identifier-found = expected identifier, found {$found}

parser-raw-identifier = escape `{$ident}` to use it as an identifier
```

These can be emitted using the new `subdiagnostic` function on `Diagnostic`...

```rust
diag.subdiagnostic(ExpectedIdentifierLabel::WithoutFound { span });
diag.subdiagnostic(RawIdentifierSuggestion { span, applicability, ident });
```

...or as part of a larger `#[derive(SessionDiagnostic)]`:

```rust
#[derive(SessionDiagnostic)]
#[error(slug = "parser-expected-identifier")]
pub struct ExpectedIdentifier {
    #[primary_span]
    span: Span,
    token_descr: String,
    #[subdiagnostic]
    label: ExpectedIdentifierLabel,
    #[subdiagnostic]
    raw_identifier_suggestion: Option<RawIdentifierSuggestion>,
}
```

```rust
sess.emit_err(ExpectedIdentifier { ... });
```

r? `@oli-obk`
cc `@pvdrz`

2 years agoAuto merge of #96548 - Dylan-DPC:rollup-m3xkqxg, r=Dylan-DPC
bors [Fri, 29 Apr 2022 09:33:29 +0000 (09:33 +0000)]
Auto merge of #96548 - Dylan-DPC:rollup-m3xkqxg, r=Dylan-DPC

Rollup of 5 pull requests

Successful merges:

 - #96477 (Update data layout string for wasm64-unknown-unknown)
 - #96481 (HashMap doc: Don't use monospace font for 'Entry Api')
 - #96492 (Revert "Re-export core::ffi types from std::ffi")
 - #96516 (Revert diagnostic duplication and accidental stabilization)
 - #96523 (Add ``@feat.00`` symbol to symbols.o for COFF)

Failed merges:

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

2 years agoRollup merge of #96523 - nbdd0121:windows, r=petrochenkov
Dylan DPC [Fri, 29 Apr 2022 09:23:16 +0000 (11:23 +0200)]
Rollup merge of #96523 - nbdd0121:windows, r=petrochenkov

Add `@feat.00` symbol to symbols.o for COFF

Fix #96498

This is based on top of #96444.

r? ``@petrochenkov``

2 years agoRollup merge of #96516 - oli-obk:impl_trait_inference_accidental_permitted, r=jackh726
Dylan DPC [Fri, 29 Apr 2022 09:23:15 +0000 (11:23 +0200)]
Rollup merge of #96516 - oli-obk:impl_trait_inference_accidental_permitted, r=jackh726

Revert diagnostic duplication and accidental stabilization

fixes #96460

this is an accidental stabilization that we should put into the beta. I believe it is low-risk, because it was literally what we had before #94081

The effect on tests is massive, but mostly deduplication of diagnostics and some minor span changes.

2 years agoRollup merge of #96492 - joshtriplett:revert-std-ffi-re-export, r=yaahc
Dylan DPC [Fri, 29 Apr 2022 09:23:14 +0000 (11:23 +0200)]
Rollup merge of #96492 - joshtriplett:revert-std-ffi-re-export, r=yaahc

Revert "Re-export core::ffi types from std::ffi"

This reverts commit 9aed829fe6cdf5eaf278c6c3972f7acd0830887d.

Fixes https://github.com/rust-lang/rust/issues/96435 , a regression
in crates doing `use std::ffi::*;` and `use std::os::raw::*;`.

We can re-add this re-export once the `core::ffi` types
are stable, and thus the `std::os::raw` types can become re-exports as
well, which will avoid the conflict. (Type aliases to the same type
still conflict, but re-exports of the same type don't.)

2 years agoRollup merge of #96481 - aDotInTheVoid:hashmap-docs-monospace, r=joshtriplett
Dylan DPC [Fri, 29 Apr 2022 09:23:13 +0000 (11:23 +0200)]
Rollup merge of #96481 - aDotInTheVoid:hashmap-docs-monospace, r=joshtriplett

HashMap doc: Don't use monospace font for 'Entry Api'

2 years agoRollup merge of #96477 - alexcrichton:update-wasm64-data-layout, r=wesleywiser
Dylan DPC [Fri, 29 Apr 2022 09:23:12 +0000 (11:23 +0200)]
Rollup merge of #96477 - alexcrichton:update-wasm64-data-layout, r=wesleywiser

Update data layout string for wasm64-unknown-unknown

Looks like this changed in a recent LLVM update but wasm64 isn't built
on CI so it wasn't caught until now.

Closes #96463

2 years agoAuto merge of #96444 - nbdd0121:used2, r=petrochenkov
bors [Fri, 29 Apr 2022 05:34:29 +0000 (05:34 +0000)]
Auto merge of #96444 - nbdd0121:used2, r=petrochenkov

Use decorated names for linked_symbols on Windows

Fix #96423

r? `@petrochenkov`

2 years agoAuto merge of #96441 - ChrisDenton:sync-pipes, r=m-ou-se
bors [Fri, 29 Apr 2022 03:06:45 +0000 (03:06 +0000)]
Auto merge of #96441 - ChrisDenton:sync-pipes, r=m-ou-se

Windows: Make stdin pipes synchronous

Stdin pipes do not need to be used asynchronously within the standard library. This is a first step in making pipes mostly synchronous.

r? `@m-ou-se`

2 years agomacros: add interop between diagnostic derives
David Wood [Wed, 27 Apr 2022 04:59:48 +0000 (05:59 +0100)]
macros: add interop between diagnostic derives

Add `#[subdiagnostic]` field attribute to the diagnostic derive which
is applied to fields that have types which use the subdiagnostic derive.

Signed-off-by: David Wood <david.wood@huawei.com>
2 years agomacros: allow setting applicability in attribute
David Wood [Wed, 27 Apr 2022 04:43:36 +0000 (05:43 +0100)]
macros: allow setting applicability in attribute

In the initial implementation of the `SessionSubdiagnostic`, the
`Applicability` of a suggestion can be set both as a field and as part
of the attribute, this commit adds the same support to the original
`SessionDiagnostic` derive.

Signed-off-by: David Wood <david.wood@huawei.com>
2 years agomacros: add more documentation comments
David Wood [Wed, 27 Apr 2022 04:24:31 +0000 (05:24 +0100)]
macros: add more documentation comments

Documentation comments are always good.

Signed-off-by: David Wood <david.wood@huawei.com>
2 years agomacros: reuse `SetOnce` trait in diagnostic derive
David Wood [Wed, 27 Apr 2022 03:28:21 +0000 (04:28 +0100)]
macros: reuse `SetOnce` trait in diagnostic derive

`SetOnce` trait was introduced in the subdiagnostic derive to simplify
the code a little bit, re-use it in the diagnostic derive too.

Signed-off-by: David Wood <david.wood@huawei.com>
2 years agomacros: add helper functions for invalid attrs
David Wood [Wed, 27 Apr 2022 03:06:13 +0000 (04:06 +0100)]
macros: add helper functions for invalid attrs

Remove some duplicated code between both diagnostic derives by
introducing helper functions for reporting an error in case of a invalid
attribute.

Signed-off-by: David Wood <david.wood@huawei.com>
2 years agomacros: split diagnostic derives into modules
David Wood [Wed, 27 Apr 2022 01:57:44 +0000 (02:57 +0100)]
macros: split diagnostic derives into modules

Split `SessionDiagnostic` and `SessionSubdiagnostic` derives and the
various helper functions into multiple modules.

Signed-off-by: David Wood <david.wood@huawei.com>
2 years agomacros: subdiagnostic derive
David Wood [Tue, 26 Apr 2022 10:59:45 +0000 (11:59 +0100)]
macros: subdiagnostic derive

Add a new derive, `#[derive(SessionSubdiagnostic)]`, which enables
deriving structs for labels, notes, helps and suggestions.

Signed-off-by: David Wood <david.wood@huawei.com>
2 years agotests: move diagnostic derive test to directory
David Wood [Tue, 26 Apr 2022 05:41:31 +0000 (06:41 +0100)]
tests: move diagnostic derive test to directory

Move existing test for session diagnostic derive to a subdirectory.

Signed-off-by: David Wood <david.wood@huawei.com>
2 years agoerrors: `span_suggestion` takes `impl ToString`
David Wood [Tue, 26 Apr 2022 05:17:33 +0000 (06:17 +0100)]
errors: `span_suggestion` takes `impl ToString`

Change `span_suggestion` (and variants) to take `impl ToString` rather
than `String` for the suggested code, as this simplifies the
requirements on the diagnostic derive.

Signed-off-by: David Wood <david.wood@huawei.com>
2 years agoAuto merge of #96393 - joboet:pthread_parker, r=thomcc
bors [Thu, 28 Apr 2022 21:58:08 +0000 (21:58 +0000)]
Auto merge of #96393 - joboet:pthread_parker, r=thomcc

std: directly use pthread in UNIX parker implementation

`Mutex` and `Condvar` are being replaced by more efficient implementations, which need thread parking themselves (see #93740). Therefore we should use the `pthread` synchronization primitives directly. Also, we can avoid allocating the mutex and condition variable because the `Parker` struct is being placed in an `Arc` anyways.

This basically is just a copy of the current `Mutex` and `Condvar` code, which will however be removed (again, see #93740). An alternative implementation could be to use dedicated private `OsMutex` and `OsCondvar` types, but all the other platforms supported by std actually have their own thread parking primitives.

I used `Pin` to guarantee a stable address for the `Parker` struct, while the current implementation does not, rather using extra unsafe declaration. Since the thread struct is shared anyways, I assumed this would not add too much clutter while being clearer.

2 years agoAdd `@feat.00` symbol to symbols.o for COFF
Gary Guo [Thu, 28 Apr 2022 15:22:40 +0000 (16:22 +0100)]
Add `@feat.00` symbol to symbols.o for COFF

2 years agoAuto merge of #96528 - Dylan-DPC:rollup-iedbjli, r=Dylan-DPC
bors [Thu, 28 Apr 2022 19:32:59 +0000 (19:32 +0000)]
Auto merge of #96528 - Dylan-DPC:rollup-iedbjli, r=Dylan-DPC

Rollup of 5 pull requests

Successful merges:

 - #95312 (Ensure that `'_` and GAT yields errors)
 - #96405 (Migrate ambiguous plus diagnostic to the new derive macro)
 - #96409 (Recover suggestions to introduce named lifetime under NLL)
 - #96433 (rustc_ast: Harmonize delimiter naming with `proc_macro::Delimiter`)
 - #96480 (Fixed grammatical error in example comment)

Failed merges:

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

2 years agoRollup merge of #96480 - user-simon:patch-1, r=Dylan-DPC
Dylan DPC [Thu, 28 Apr 2022 18:13:03 +0000 (20:13 +0200)]
Rollup merge of #96480 - user-simon:patch-1, r=Dylan-DPC

Fixed grammatical error in example comment

Added missing "we" in sentence.

2 years agoRollup merge of #96433 - petrochenkov:delim, r=nnethercote
Dylan DPC [Thu, 28 Apr 2022 18:13:02 +0000 (20:13 +0200)]
Rollup merge of #96433 - petrochenkov:delim, r=nnethercote

rustc_ast: Harmonize delimiter naming with `proc_macro::Delimiter`

Compiler cannot reuse `proc_macro::Delimiter` directly due to extra impls, but can at least use the same naming.

After this PR the only difference between these two enums is that `proc_macro::Delimiter::None` is turned into `token::Delimiter::Invisible`.
It's my mistake that the invisible delimiter is called `None` on stable, during the stabilization I audited the naming and wrote the docs, but missed the fact that the `None` naming gives a wrong and confusing impression about what this thing is.

cc https://github.com/rust-lang/rust/pull/96421
r? ``@nnethercote``

2 years agoRollup merge of #96409 - marmeladema:fix-nll-introduce-named-lifetime-suggestion...
Dylan DPC [Thu, 28 Apr 2022 18:13:01 +0000 (20:13 +0200)]
Rollup merge of #96409 - marmeladema:fix-nll-introduce-named-lifetime-suggestion, r=jackh726

Recover suggestions to introduce named lifetime under NLL

Fixes #96157

r? ```@jackh726```

Built on top of #96385 so only the second commit is relevant

2 years agoRollup merge of #96405 - pvdrz:ambiguous-plus-diagnostic, r=davidtwco
Dylan DPC [Thu, 28 Apr 2022 18:12:59 +0000 (20:12 +0200)]
Rollup merge of #96405 - pvdrz:ambiguous-plus-diagnostic, r=davidtwco

Migrate ambiguous plus diagnostic to the new derive macro

r? ````@davidtwco```` ````@jyn514````

2 years agoRollup merge of #95312 - marmeladema:tests-for-issue-95305, r=jackh726
Dylan DPC [Thu, 28 Apr 2022 18:12:57 +0000 (20:12 +0200)]
Rollup merge of #95312 - marmeladema:tests-for-issue-95305, r=jackh726

Ensure that `'_` and GAT yields errors

Fixes #95305

```@bors``` r? ```@jackh726```

2 years agoAuto merge of #95171 - Kobzol:llvm-ci-update, r=nikic
bors [Thu, 28 Apr 2022 16:27:18 +0000 (16:27 +0000)]
Auto merge of #95171 - Kobzol:llvm-ci-update, r=nikic

Update LLVM used for building rustc in CI for x64

LLVM 14 was tagged. It is needed for building [BOLT](https://github.com/rust-lang/rust/pull/94381), and it also improves max RSS quite [a lot](https://perf.rust-lang.org/compare.html?start=6970f88db3ac2a9cefa9c585228291ae1f18fb04&end=67acb7e3ffcc11d67abfd29c390aac629f3c0e97&stat=max-rss).

GCC was bumped to allow building the new LLVM version. The changes in building LLVM were done to speed up the build a bit by ignoring unused parts and to turn off parts that were problematic to compile even with the bumped GCC.

2 years agoUpdate LLVM submodule
Jakub Beránek [Thu, 28 Apr 2022 14:02:52 +0000 (16:02 +0200)]
Update LLVM submodule

2 years agoUpdate LLVM used for building rustc in CI for x64 to LLVM 14.0.2
Jakub Beránek [Wed, 27 Apr 2022 07:53:38 +0000 (09:53 +0200)]
Update LLVM used for building rustc in CI for x64 to LLVM 14.0.2

2 years agostd: update debuginfo check to match type definition
joboet [Thu, 28 Apr 2022 13:34:43 +0000 (15:34 +0200)]
std: update debuginfo check to match type definition

2 years agoRevert diagnostic duplication and accidental stabilization
Oli Scherer [Thu, 28 Apr 2022 13:25:36 +0000 (13:25 +0000)]
Revert diagnostic duplication and accidental stabilization

2 years agoAuto merge of #95976 - b-naber:valtree-constval-conversion, r=oli-obk
bors [Thu, 28 Apr 2022 13:18:22 +0000 (13:18 +0000)]
Auto merge of #95976 - b-naber:valtree-constval-conversion, r=oli-obk

Implement Valtree to ConstValue conversion

Once we start to use `ValTree`s in the type system we will need to be able to convert them into `ConstValue` instances, which we want to continue to use after MIR construction.

r? `@oli-obk`

cc `@RalfJung`

2 years agostd: simplify UNIX parker timeouts
joboet [Wed, 27 Apr 2022 17:28:27 +0000 (19:28 +0200)]
std: simplify UNIX parker timeouts

2 years agoAuto merge of #95904 - paolobarbolini:vecdeque-specextend, r=the8472
bors [Thu, 28 Apr 2022 09:27:21 +0000 (09:27 +0000)]
Auto merge of #95904 - paolobarbolini:vecdeque-specextend, r=the8472

Add VecDeque::extend from vec::IntoIter and slice::Iter specializations

Inspired from the [`Vec` `SpecExtend` implementation](https://github.com/rust-lang/rust/blob/027a232755fa9728e9699337267f6675dfd0a8ba/library/alloc/src/vec/spec_extend.rs), but without the specialization for `TrustedLen` which I'll look into in the future.

Should help #95632 and https://github.com/KillingSpark/zstd-rs/pull/17

## Benchmarks

Before

```
test vec_deque::bench_extend_bytes    ... bench:         862 ns/iter (+/- 10)
test vec_deque::bench_extend_vec      ... bench:         883 ns/iter (+/- 19)
```

After

```
test vec_deque::bench_extend_bytes    ... bench:           8 ns/iter (+/- 0)
test vec_deque::bench_extend_vec      ... bench:          24 ns/iter (+/- 1)

```

2 years agorustc_ast: Harmonize delimiter naming with `proc_macro::Delimiter`
Vadim Petrochenkov [Tue, 26 Apr 2022 12:40:14 +0000 (15:40 +0300)]
rustc_ast: Harmonize delimiter naming with `proc_macro::Delimiter`

2 years agoAuto merge of #96503 - ehuss:update-cargo, r=ehuss
bors [Thu, 28 Apr 2022 06:58:54 +0000 (06:58 +0000)]
Auto merge of #96503 - ehuss:update-cargo, r=ehuss

Update cargo

8 commits in edffc4ada3d77799e5a04eeafd9b2f843d29fc23..f63f23ff1f1a12ede8585bbd1bbf0c536e50293d
2022-04-19 17:38:29 +0000 to 2022-04-28 03:15:50 +0000
- move workspace inheritance untable docs to the correct place (rust-lang/cargo#10609)
- Cargo add support for workspace inheritance (rust-lang/cargo#10606)
- chore: Upgrade toml_edit (rust-lang/cargo#10603)
- Mark .cargo/git and .cargo/registry as cache dirs (rust-lang/cargo#10553)
- fix(yank): Use '--version' like install (rust-lang/cargo#10575)
- Disallow setting registry tokens with --config (rust-lang/cargo#10580)
- Set cargo --version git hash length to 9 (rust-lang/cargo#10579)
- Prefer `key.workspace = true` to `key = { workspace = true }` (rust-lang/cargo#10584)

2 years agoUpdate cargo
Eric Huss [Thu, 28 Apr 2022 05:42:54 +0000 (22:42 -0700)]
Update cargo

2 years agoAuto merge of #96085 - jsgf:deny-unused-deps, r=compiler-errors
bors [Thu, 28 Apr 2022 04:17:52 +0000 (04:17 +0000)]
Auto merge of #96085 - jsgf:deny-unused-deps, r=compiler-errors

Make sure `-Dunused-crate-dependencies --json unused-externs` makes rustc exit with error status

This PR:
- fixes compiletest to understand unused extern notifications
- adds tests for `--json unused-externs`
- makes sure that deny-level unused externs notifications are treated as compile errors
  - refactors the `emit_unused_externs` callstack to plumb through the level as an enum as a string, and adds `Level::is_error`

Update: adds `--json unused-externs-silent` with the original behaviour since Cargo needs it. Should address `@est31's` concerns.

Fixes: https://github.com/rust-lang/rust/issues/96068
2 years agoAdd VecDeque::extend from vec::IntoIter and slice::Iter specializations
Paolo Barbolini [Sun, 10 Apr 2022 22:00:03 +0000 (00:00 +0200)]
Add VecDeque::extend from vec::IntoIter and slice::Iter specializations

2 years agoAuto merge of #96495 - Dylan-DPC:rollup-9lm4tpp, r=Dylan-DPC
bors [Thu, 28 Apr 2022 01:37:03 +0000 (01:37 +0000)]
Auto merge of #96495 - Dylan-DPC:rollup-9lm4tpp, r=Dylan-DPC

Rollup of 7 pull requests

Successful merges:

 - #96377 (make `fn() -> _ { .. }` suggestion MachineApplicable)
 - #96397 (Make EncodeWide implement FusedIterator)
 - #96421 (Less `NoDelim`)
 - #96432 (not need `Option` for `dbg_scope`)
 - #96466 (Better error messages when collecting into `[T; n]`)
 - #96471 (replace let else with `?`)
 - #96483 (Add missing `target_feature` to the list of well known cfg names)

Failed merges:

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

2 years agoRollup merge of #96483 - Urgau:check-cfg-target_feature, r=petrochenkov
Dylan DPC [Thu, 28 Apr 2022 00:40:37 +0000 (02:40 +0200)]
Rollup merge of #96483 - Urgau:check-cfg-target_feature, r=petrochenkov

Add missing `target_feature` to the list of well known cfg names

This PR adds the missing `target_feature` cfg name to the list of well known cfg names.

It was notice missing in https://github.com/rust-lang/rust/issues/96472 thanks to `@bjorn3,` the reason being that `--check-cfg=names()` automatically inherit the names passed by `--cfg` (or internal to `rustc`) and is seems that the vast majority of targets have at least one target feature leading to `target_feature` being a well known name in most target but it should always be a well known name so this PR add it unconditionally to list.

r? `@petrochenkov`

2 years agoRollup merge of #96471 - BoxyUwU:let_else_considered_harmful, r=lcnr
Dylan DPC [Thu, 28 Apr 2022 00:40:36 +0000 (02:40 +0200)]
Rollup merge of #96471 - BoxyUwU:let_else_considered_harmful, r=lcnr

replace let else with `?`

r? `@oli-obk`

2 years agoRollup merge of #96466 - compiler-errors:error-collect-array, r=davidtwco
Dylan DPC [Thu, 28 Apr 2022 00:40:35 +0000 (02:40 +0200)]
Rollup merge of #96466 - compiler-errors:error-collect-array, r=davidtwco

Better error messages when collecting into `[T; n]`

Fixes #96461

2 years agoRollup merge of #96432 - SparrowLii:dbg_scope, r=davidtwco
Dylan DPC [Thu, 28 Apr 2022 00:40:34 +0000 (02:40 +0200)]
Rollup merge of #96432 - SparrowLii:dbg_scope, r=davidtwco

not need `Option` for `dbg_scope`

This PR fixes a few FIXME about not using `Option` in `dbg_scope` field of `DebugScope`, during `create_function_debug_context` func in codegen parts.
Added a `BitSet<SourceScope>` parameter to `make_mir_scope` to indicate whether the `DebugScope` has been instantiated.
cc ````@eddyb````

2 years agoRollup merge of #96421 - nnethercote:less-NoDelim, r=petrochenkov
Dylan DPC [Thu, 28 Apr 2022 00:40:34 +0000 (02:40 +0200)]
Rollup merge of #96421 - nnethercote:less-NoDelim, r=petrochenkov

Less `NoDelim`

Currently there are several places where `NoDelim` (which really means "implicit delimiter" or "invisible delimiter") is used to mean "no delimiter". The name `NoDelim` is a bit misleading, and may be a cause.

This PR changes these places, e.g. by changing a `DelimToken` to `Option<DelimToken>` and then using `None` to mean "no delimiter". As a result, the *only* place where `NoDelim` values are now produced is within:
- `Delimiter::to_internal()`, when converting from `Delimiter::None`.
- `FlattenNonterminals::process_token()`, when converting `TokenKind::Interpolated`.

r? ````@petrochenkov````

2 years agoRollup merge of #96397 - AronParker:issue-96368-fix, r=dtolnay
Dylan DPC [Thu, 28 Apr 2022 00:40:33 +0000 (02:40 +0200)]
Rollup merge of #96397 - AronParker:issue-96368-fix, r=dtolnay

Make EncodeWide implement FusedIterator

[`EncodeUtf16`](https://doc.rust-lang.org/std/str/struct.EncodeUtf16.html) and [`EncodeWide`](https://doc.rust-lang.org/std/os/windows/ffi/struct.EncodeWide.html) currently serve similar purposes: They convert from UTF-8 to UTF-16 and WTF-8 to WTF-16, respectively. `EncodeUtf16` wraps a &str, whereas `EncodeWide` wraps an &OsStr.

When Iteration has concluded, these iterators wrap an empty slice, which will forever yield `None` values. Hence, `EncodeUtf16` rightfully implements `FusedIterator`. However, `EncodeWide` in contrast does not, even though it serves an almost identical purpose.

This PR attempts to fix that issue. I consider this change minor and non-controversial, hence why I have not added a RFC/FCP. Please let me know if the stability attribute is wrong or contains a wrong version number. Thanks in advance.

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

2 years agoRollup merge of #96377 - compiler-errors:infer-rustfix, r=petrochenkov
Dylan DPC [Thu, 28 Apr 2022 00:40:32 +0000 (02:40 +0200)]
Rollup merge of #96377 - compiler-errors:infer-rustfix, r=petrochenkov

make `fn() -> _ { .. }` suggestion MachineApplicable

This might not be valid, but it would be nice to promote this to `MachineApplicable` so people can use rustfix here.

Also de65fcf009d07019689cfad7f327667e390a325d is to [restore the suggestion for `issue-77179.rs`](https://github.com/rust-lang/rust/commit/de65fcf009d07019689cfad7f327667e390a325d#diff-12e43fb5d6d12ec7cb5c6b48204a18d113cf5de0e12eb71a358b639bd9aadaf0R8). (though in this case, the code in that issue still doesn't compile, so it's not marked with rustfix).

2 years agoAuto merge of #91557 - cjgillot:ast-lifetimes-named, r=petrochenkov
bors [Wed, 27 Apr 2022 23:13:28 +0000 (23:13 +0000)]
Auto merge of #91557 - cjgillot:ast-lifetimes-named, r=petrochenkov

Perform lifetime resolution on the AST for lowering

Lifetime resolution is currently implemented several times. Once during lowering in order to introduce in-band lifetimes, and once in the resolve_lifetimes query. However, due to the global nature of lifetime resolution and how it interferes with hygiene, it is better suited on the AST.

This PR implements a first draft of lifetime resolution on the AST. For now, we specifically target named lifetimes and everything we need to remove lifetime resolution from lowering. Some diagnostics have already been ported, and sometimes made more precise using available hygiene information. Follow-up PRs will address in particular the resolution of anonymous lifetimes on the AST.

We reuse the rib design of the current resolution framework. Specific `LifetimeRib` and `LifetimeRibKind` types are introduced. The most important variant is `LifetimeRibKind::Generics`, which happens each time we encounter something which may introduce generic lifetime parameters. It can be an item or a `for<...>` binder. The `LifetimeBinderKind` specifies how this rib behaves with respect to in-band lifetimes.

r? `@petrochenkov`

2 years agoEnsure that `'_` and GAT yields errors
marmeladema [Fri, 25 Mar 2022 17:26:55 +0000 (18:26 +0100)]
Ensure that `'_` and GAT yields errors

2 years agoRevert "Re-export core::ffi types from std::ffi"
Josh Triplett [Wed, 27 Apr 2022 20:47:10 +0000 (13:47 -0700)]
Revert "Re-export core::ffi types from std::ffi"

This reverts commit 9aed829fe6cdf5eaf278c6c3972f7acd0830887d.

Fixes https://github.com/rust-lang/rust/issues/96435 , a regression
in crates doing `use std::ffi::*;` and `use std::os::raw::*;`.

We can re-add this re-export once the `core::ffi` types
are stable, and thus the `std::os::raw` types can become re-exports as
well, which will avoid the conflict. (Type aliases to the same type
still conflict, but re-exports of the same type don't.)

2 years agoRemove use of reverted std::ffi::c_char
Josh Triplett [Wed, 27 Apr 2022 21:00:45 +0000 (14:00 -0700)]
Remove use of reverted std::ffi::c_char

2 years agoRecover suggestions to introduce named lifetime under NLL
marmeladema [Mon, 25 Apr 2022 22:17:25 +0000 (00:17 +0200)]
Recover suggestions to introduce named lifetime under NLL

2 years agoCollect extra lifetime parameters during late resolution.
Camille GILLOT [Sun, 24 Apr 2022 13:49:00 +0000 (15:49 +0200)]
Collect extra lifetime parameters during late resolution.

2 years agoRefactor generic collection.
Camille GILLOT [Wed, 20 Apr 2022 19:08:06 +0000 (21:08 +0200)]
Refactor generic collection.

2 years agoCreate a specific struct for lifetime capture.
Camille GILLOT [Wed, 20 Apr 2022 18:13:42 +0000 (20:13 +0200)]
Create a specific struct for lifetime capture.

2 years agoBless tests.
Camille GILLOT [Fri, 11 Mar 2022 10:58:59 +0000 (11:58 +0100)]
Bless tests.

2 years agoHandle TAIT.
Camille GILLOT [Tue, 29 Mar 2022 13:37:21 +0000 (15:37 +0200)]
Handle TAIT.

2 years agoUse LifetimeRes during lowering.
Camille GILLOT [Thu, 7 Apr 2022 18:54:13 +0000 (20:54 +0200)]
Use LifetimeRes during lowering.

2 years agoDo not resolve elided lifetimes in path twice.
Camille GILLOT [Thu, 21 Apr 2022 16:39:43 +0000 (18:39 +0200)]
Do not resolve elided lifetimes in path twice.

2 years agoUpdate comment.
Camille GILLOT [Tue, 26 Apr 2022 16:54:34 +0000 (18:54 +0200)]
Update comment.

2 years agoRevert "impl From<&[T; N]> and From<&mut [T; N]> for Vec<T>"
Jake Goulding [Wed, 27 Apr 2022 19:56:29 +0000 (15:56 -0400)]
Revert "impl From<&[T; N]> and From<&mut [T; N]> for Vec<T>"

This reverts commit 5dd702763ae0e112332a4447171adbed51aeee3d.

2 years agoAdd VecDeque::extend benchmark
Paolo Barbolini [Mon, 11 Apr 2022 06:12:14 +0000 (08:12 +0200)]
Add VecDeque::extend benchmark

2 years agoAdd missing `target_feature` to the list of well known cfg names
Loïc BRANSTETT [Wed, 27 Apr 2022 17:11:56 +0000 (19:11 +0200)]
Add missing `target_feature` to the list of well known cfg names

2 years agoAdd --json unused-externs-silent with original behaviour
Jeremy Fitzhardinge [Sun, 17 Apr 2022 00:11:33 +0000 (17:11 -0700)]
Add --json unused-externs-silent with original behaviour

Since Cargo wants to do its own fatal error handling for unused
dependencies, add the option `--json unused-externs-silent` which
has the original behaviour of not indicating non-zero exit status for
`deny`/`forbid`-level unused dependencies.

2 years agoPlumb through rustc_lint_defs::Level as enum rather than string.
Jeremy Fitzhardinge [Fri, 15 Apr 2022 08:24:49 +0000 (01:24 -0700)]
Plumb through rustc_lint_defs::Level as enum rather than string.

2 years agoMake --json unused-extern deny/forbid level messages cause exit with error status
Jeremy Fitzhardinge [Fri, 15 Apr 2022 07:37:40 +0000 (00:37 -0700)]
Make --json unused-extern deny/forbid level messages cause exit with error status

Closes: https://github.com/rust-lang/rust/issues/96068
2 years agoAdd tests for --json unused-externs
Jeremy Fitzhardinge [Fri, 15 Apr 2022 17:33:08 +0000 (10:33 -0700)]
Add tests for --json unused-externs

There were none at all. These test for original functionality,
but this also adds a test that `-Dunused-crate-dependencies`
causes a compilation failure, which currently fails
(https://github.com/rust-lang/rust/issues/96068). This is fixed in
subsequent changes.

2 years agoHashMap doc: Don't use monospace font for 'Entry Api'
Nixon Enraght-Moony [Wed, 27 Apr 2022 15:41:11 +0000 (16:41 +0100)]
HashMap doc: Don't use monospace font for 'Entry Api'

2 years agocompiletest: add support for unused extern notifications
Jeremy Fitzhardinge [Fri, 15 Apr 2022 17:46:58 +0000 (10:46 -0700)]
compiletest: add support for unused extern notifications

As generated by --json unused-externs.

2 years agoAuto merge of #96179 - klensy:bump-deps-04-22, r=Mark-Simulacrum
bors [Wed, 27 Apr 2022 16:20:59 +0000 (16:20 +0000)]
Auto merge of #96179 - klensy:bump-deps-04-22, r=Mark-Simulacrum

Bump deps

Update few deps:

First commit: vulnerable or yanked ones:
* openssl-src 111.17.0+1.1.1m -> 111.18.0+1.1.1n vuln https://rustsec.org/advisories/RUSTSEC-2022-0014
* crossbeam-channel 0.5.2 -> 0.5.4 yanked: https://github.com/crossbeam-rs/crossbeam/pull/802 (https://github.com/crossbeam-rs/crossbeam/blob/crossbeam-channel-0.5.4/crossbeam-channel/CHANGELOG.md)
* crossbeam-utils 0.8.6 -> 0.8.8 yanked: https://github.com/crossbeam-rs/crossbeam/security/advisories/GHSA-qc84-gqf4-9926 (https://github.com/crossbeam-rs/crossbeam/blob/crossbeam-utils-0.8.8/crossbeam-utils/CHANGELOG.md)

Second commit: no notable changes, most of them touched only to remove other ones:
* Updating ammonia v3.1.3 -> v3.2.0
* Updating html5ever v0.25.1 -> v0.26.0
* Updating markup5ever v0.10.1 -> v0.11.0
* Removing markup5ever_rcdom v0.1.0
* Updating phf v0.8.0 -> v0.10.1
* Updating phf_codegen v0.8.0 -> v0.10.0
* Updating phf_generator v0.8.0 -> v0.10.0
* Updating phf_shared v0.8.0 -> v0.10.0
* Updating rand v0.8.4 -> v0.8.5
* Removing rand_hc v0.3.0
* Removing rand_pcg v0.2.1
* Updating string_cache v0.8.0 -> v0.8.3
* Updating string_cache_codegen v0.5.1 -> v0.5.2
* Removing xml5ever v0.16.1

drops markup5ever_rcdom, rand_hc, rand_pcg, xml5ever versions

* rand 0.8.4 -> 0.8.5 (https://github.com/rust-random/rand/blob/0.8.5/CHANGELOG.md#085---2021-08-20)

Third one is perf oriented:
* proc-macro2 v1.0.30 -> v1.0.37 https://github.com/dtolnay/proc-macro2/compare/1.0.30...1.0.37 (https://github.com/dtolnay/proc-macro2/releases, for example https://github.com/dtolnay/proc-macro2/releases/tag/1.0.36)
* quote v1.0.7 -> v1.0.18 https://github.com/dtolnay/quote/compare/1.0.7...1.0.18 (https://github.com/dtolnay/quote/releases) multiple perf improvements: https://github.com/dtolnay/quote/releases/tag/1.0.16, https://github.com/dtolnay/quote/releases/tag/1.0.14, https://github.com/dtolnay/quote/releases/tag/1.0.11
* syn v1.0.80 -> v1.0.91 https://github.com/dtolnay/syn/compare/1.0.80...1.0.91 (https://github.com/dtolnay/syn/releases): didn't find good examples, but given, that there exist private api across `proc-macro2`, `quote` by the same author, *i think* it may take advantage of it.

2 years agoFixed grammatical error in example comment
Simon [Wed, 27 Apr 2022 15:27:02 +0000 (17:27 +0200)]
Fixed grammatical error in example comment

2 years agocombine all unsized types and add another recursive call to process nested unsized...
b-naber [Wed, 27 Apr 2022 09:11:54 +0000 (11:11 +0200)]
combine all unsized types and add another recursive call to process nested unsized types correctly

2 years agoUpdate data layout string for wasm64-unknown-unknown
Alex Crichton [Wed, 27 Apr 2022 14:24:43 +0000 (07:24 -0700)]
Update data layout string for wasm64-unknown-unknown

Looks like this changed in a recent LLVM update but wasm64 isn't built
on CI so it wasn't caught until now.

Closes #96463

2 years agoAuto merge of #95170 - jyn514:ci-llvm, r=Mark-Simulacrum
bors [Wed, 27 Apr 2022 13:27:22 +0000 (13:27 +0000)]
Auto merge of #95170 - jyn514:ci-llvm, r=Mark-Simulacrum

Move `download-ci-llvm` out of bootstrap.py

This is ready for review. It has been tested on Windows, Linux, and NixOS.

The second commit ports the changes from https://github.com/rust-lang/rust/pull/95234 to Rust; I can remove it if desired.

Helps with https://github.com/rust-lang/rust/issues/94829.

As a follow-up, this makes it possible to avoid downloading llvm until it's needed for building `rustc_llvm`; it would be nice to do that, but it shouldn't go in the first draft. It might also be possible to avoid requiring python until tests run (currently there's a check in `sanity.rs`), but I haven't looked too much into that.

`@rustbot` label +A-rustbuild

2 years agoNote the importance of using sync pipes
Chris Denton [Tue, 26 Apr 2022 20:20:40 +0000 (21:20 +0100)]
Note the importance of using sync pipes

2 years agoUse decorated names for linked_symbols on Windows
Gary Guo [Tue, 26 Apr 2022 17:01:10 +0000 (18:01 +0100)]
Use decorated names for linked_symbols on Windows

2 years agoAuto merge of #96371 - c410-f3r:z-errors, r=petrochenkov
bors [Wed, 27 Apr 2022 10:46:32 +0000 (10:46 +0000)]
Auto merge of #96371 - c410-f3r:z-errors, r=petrochenkov

Move some tests to more reasonable places

cc https://github.com/rust-lang/rust/issues/73494
r? `@petrochenkov`

2 years agorename `sum_with_parens`
Christian Poveda [Wed, 27 Apr 2022 10:03:16 +0000 (12:03 +0200)]
rename `sum_with_parens`

2 years agotut tut tut
Ellen [Wed, 27 Apr 2022 07:51:33 +0000 (08:51 +0100)]
tut tut tut

2 years agoBetter error messages when collecting into `[T; n]`
Michael Goulet [Wed, 27 Apr 2022 04:09:26 +0000 (21:09 -0700)]
Better error messages when collecting into `[T; n]`

2 years agoAuto merge of #96195 - sunfishcode:sunfishcode/handle-or-error-type, r=joshtriplett
bors [Wed, 27 Apr 2022 03:42:59 +0000 (03:42 +0000)]
Auto merge of #96195 - sunfishcode:sunfishcode/handle-or-error-type, r=joshtriplett

 Define a dedicated error type for `HandleOrNull` and `HandleOrInvalid`.

Define `NullHandleError` and `InvalidHandleError` types, that implement std::error::Error, and use them as the error types in `HandleOrNull` and `HandleOrInvalid`,

This addresses [this concern](https://github.com/rust-lang/rust/issues/87074#issuecomment-1080031167).

This is the same as #95387.

r? `@joshtriplett`

2 years agoMove some tests to more reasonable places
Caio [Wed, 27 Apr 2022 02:38:04 +0000 (23:38 -0300)]
Move some tests to more reasonable places

2 years agoTAITs are suggestable
Michael Goulet [Mon, 25 Apr 2022 03:41:37 +0000 (20:41 -0700)]
TAITs are suggestable

2 years agomake `fn() -> _ {}` suggestion MachineApplicable
Michael Goulet [Mon, 25 Apr 2022 03:11:51 +0000 (20:11 -0700)]
make `fn() -> _ {}` suggestion MachineApplicable

2 years agoAuto merge of #96459 - Dylan-DPC:rollup-de6ud9d, r=Dylan-DPC
bors [Wed, 27 Apr 2022 01:01:58 +0000 (01:01 +0000)]
Auto merge of #96459 - Dylan-DPC:rollup-de6ud9d, r=Dylan-DPC

Rollup of 6 pull requests

Successful merges:

 - #92569 (Improve Error Messaging for Unconstructed Structs and Enum Variants in Generic Contexts)
 - #96370 (Cleanup `report_method_error` a bit)
 - #96383 (Fix erased region escaping into wfcheck due to #95395)
 - #96385 (Recover most `impl Trait` and `dyn Trait` lifetime bound suggestions under NLL)
 - #96410 (rustdoc: do not write `{{root}}` in `pub use ::foo` docs)
 - #96430 (Fix handling of `!` in rustdoc search)

Failed merges:

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

2 years agoRollup merge of #96430 - GuillaumeGomez:search-exclamation, r=notriddle
Dylan DPC [Wed, 27 Apr 2022 00:47:12 +0000 (02:47 +0200)]
Rollup merge of #96430 - GuillaumeGomez:search-exclamation, r=notriddle

Fix handling of `!` in rustdoc search

Fixes #96399.

I also updated the eBNF.

cc `@jsha`
r? `@notriddle`

2 years agoRollup merge of #96410 - notriddle:notriddle/issue-95873, r=GuillaumeGomez
Dylan DPC [Wed, 27 Apr 2022 00:47:11 +0000 (02:47 +0200)]
Rollup merge of #96410 - notriddle:notriddle/issue-95873, r=GuillaumeGomez

rustdoc: do not write `{{root}}` in `pub use ::foo` docs

Fixes #95873

2 years agoRollup merge of #96385 - marmeladema:nll-fix-trait-lifetime-bound-suggestions, r...
Dylan DPC [Wed, 27 Apr 2022 00:47:11 +0000 (02:47 +0200)]
Rollup merge of #96385 - marmeladema:nll-fix-trait-lifetime-bound-suggestions, r=jackh726

Recover most `impl Trait` and `dyn Trait` lifetime bound suggestions under NLL

This is done by replacing the duplicated (and very partial) implementation from borrowck with one inspsired from `NiceRegionError::try_report_static_impl_trait` and by re-using `suggest_new_region_bound`.

Fixes #96277

r? ```@jackh726```

2 years agoRollup merge of #96383 - compiler-errors:issue-96381, r=estebank
Dylan DPC [Wed, 27 Apr 2022 00:47:10 +0000 (02:47 +0200)]
Rollup merge of #96383 - compiler-errors:issue-96381, r=estebank

Fix erased region escaping into wfcheck due to #95395

We can just use `liberate_late_bound_regions` instead of `erase_late_bound_regions`... This gives us `ReEarlyBound` instead of `ReErased`, the former being something typeck actually knows how to deal with...

Fixes #96381

Side-note: We only actually get far enough in the compiler pipeline to cause this ICE when we're invoking rustdoc. We actually abort rustc right before wfcheck because of the error that we emit (having `_` in the type signature). Why does rustdoc keep going even though we raise an error?

2 years agoRollup merge of #96370 - compiler-errors:cleanup-report_method_error, r=estebank
Dylan DPC [Wed, 27 Apr 2022 00:47:07 +0000 (02:47 +0200)]
Rollup merge of #96370 - compiler-errors:cleanup-report_method_error, r=estebank

Cleanup `report_method_error` a bit

1. Remove an unnecessary indentation level
2. Split out a couple of large functions from this humongo function body

2 years agoRollup merge of #92569 - George-lewis:87181, r=estebank
Dylan DPC [Wed, 27 Apr 2022 00:47:07 +0000 (02:47 +0200)]
Rollup merge of #92569 - George-lewis:87181, r=estebank

Improve Error Messaging for Unconstructed Structs and Enum Variants in Generic Contexts

Improves error messaging for empty-tuple structs and enum variants in certain generic contexts. See new ui tests for examples.

Closes #87181

2 years agoMake explicit an unreachable `NoDelim` case in `rustfmt`.
Nicholas Nethercote [Tue, 26 Apr 2022 05:09:11 +0000 (15:09 +1000)]
Make explicit an unreachable `NoDelim` case in `rustfmt`.

2 years agoAvoid producing `NoDelim` values in `FrameData`.
Nicholas Nethercote [Tue, 26 Apr 2022 06:21:55 +0000 (16:21 +1000)]
Avoid producing `NoDelim` values in `FrameData`.

2 years agoAuto merge of #96425 - oli-obk:fix_incremental_regression_unsafety_checking, r=compil...
bors [Tue, 26 Apr 2022 22:35:40 +0000 (22:35 +0000)]
Auto merge of #96425 - oli-obk:fix_incremental_regression_unsafety_checking, r=compiler-errors

Fix incremental perf regression unsafety checking

Perf regression introduced in #96294

We will simply avoid emitting the name of the unsafe function in MIR unsafeck, since we're moving to THIR unsafeck anyway.

2 years agoAvoid producing `NoDelim` values in `Frame`.
Nicholas Nethercote [Tue, 26 Apr 2022 05:38:10 +0000 (15:38 +1000)]
Avoid producing `NoDelim` values in `Frame`.

The code currently ignores the actual delimiter on the RHS and fakes up
a `NoDelim`/`DelimSpan::dummy()` one. This commit changes it to use the
actual delimiter.

The commit also reorders the fields for the `Delimited` variant to match
the `Sequence` variant.

2 years agoAvoid producing `NoDelim` values in `MacArgs::delim()`.
Nicholas Nethercote [Tue, 26 Apr 2022 05:21:15 +0000 (15:21 +1000)]
Avoid producing `NoDelim` values in `MacArgs::delim()`.

2 years agoAvoid producing `NoDelim` values in `TokenCursorFrame`.
Nicholas Nethercote [Tue, 26 Apr 2022 03:14:38 +0000 (13:14 +1000)]
Avoid producing `NoDelim` values in `TokenCursorFrame`.

2 years agoTidy
George [Tue, 26 Apr 2022 21:05:49 +0000 (17:05 -0400)]
Tidy

2 years agoAdd new diagnostic
George [Tue, 26 Apr 2022 21:04:44 +0000 (17:04 -0400)]
Add new diagnostic