]> git.lizzy.rs Git - rust.git/log
rust.git
3 years agoRollup merge of #84466 - jyn514:prim-str, r=GuillaumeGomez
Yuki Okushi [Fri, 4 Jun 2021 21:13:30 +0000 (06:13 +0900)]
Rollup merge of #84466 - jyn514:prim-str, r=GuillaumeGomez

rustdoc: Remove `PrimitiveType::{to_url_str, as_str}`

These can easily be rewritten in terms of `as_sym`, and this avoids bugs where the two get out of sync.

I don't expect this to have a perf impact, but I'll start a perf run just in case.

3 years agoRollup merge of #83653 - jyn514:unused-sync-code, r=wesleywiser
Yuki Okushi [Fri, 4 Jun 2021 21:13:29 +0000 (06:13 +0900)]
Rollup merge of #83653 - jyn514:unused-sync-code, r=wesleywiser

Remove unused code from `rustc_data_structures::sync`

Found using https://github.com/est31/warnalyzer. Follow-up to https://github.com/rust-lang/rust/pull/83185.

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

3 years agoUnify parallel and non-parallel APIs
Joshua Nelson [Wed, 31 Mar 2021 16:29:34 +0000 (12:29 -0400)]
Unify parallel and non-parallel APIs

It's confusing for these to be different, even if some of the methods
are unused.

3 years agoRemove unused code from `rustc_data_structures::sync`
Joshua Nelson [Mon, 29 Mar 2021 17:56:25 +0000 (13:56 -0400)]
Remove unused code from `rustc_data_structures::sync`

Found using https://github.com/est31/warnalyzer.

3 years agoAuto merge of #85806 - ATiltedTree:android-ndk-beta, r=petrochenkov
bors [Fri, 4 Jun 2021 16:48:50 +0000 (16:48 +0000)]
Auto merge of #85806 - ATiltedTree:android-ndk-beta, r=petrochenkov

Support Android ndk versions `r23-beta3` and up

Since android ndk version `r23-beta3`, `libgcc` has been replaced with `libunwind`. This moves the linking of `libgcc`/`libunwind` into the `unwind` crate where we check if the system compiler can find `libunwind` and fall back to `libgcc` if needed.

3 years agoUpdate `compiler_builtins` to v0.1.45
Tilmann Meyer [Fri, 4 Jun 2021 13:34:34 +0000 (15:34 +0200)]
Update `compiler_builtins` to v0.1.45

3 years agoAuto merge of #85788 - rylev:force-warns, r=nikomatsakis
bors [Fri, 4 Jun 2021 13:31:51 +0000 (13:31 +0000)]
Auto merge of #85788 - rylev:force-warns, r=nikomatsakis

Support for force-warns

Implements https://github.com/rust-lang/rust/issues/85512.

This PR adds a new command line option `force-warns` which will force the provided lints to warn even if they are allowed by some other mechanism such as `#![allow(warnings)]`.

Some remaining issues:
* https://github.com/rust-lang/rust/issues/85512 mentions that `force-warns` should also be capable of taking lint groups instead of individual lints. This is not implemented.
* If a lint has a higher warning level than `warn`, this will cause that lint to warn instead. We probably want to allow the lint to error if it is set to a higher lint and is not allowed somewhere else.
* One test is currently ignored because it's not working - when a deny-by-default lint is allowed, it does not currently warn under `force-warns`. I'm not sure why, but I wanted to get this in before the weekend.

r? `@nikomatsakis`

3 years agoAuto merge of #85385 - richkadel:simpler-simplify-with-coverage, r=wesleywiser
bors [Fri, 4 Jun 2021 10:18:54 +0000 (10:18 +0000)]
Auto merge of #85385 - richkadel:simpler-simplify-with-coverage, r=wesleywiser

Reland - Report coverage `0` of dead blocks

Fixes: #84018
With `-Z instrument-coverage`, coverage reporting of dead blocks
(for example, blocks dropped because a conditional branch is dropped,
based on const evaluation) is now supported.

Note, this PR relands an earlier, reverted PR that failed when compiling
generators. The prior issues with generators has been resolved and a new
test was added to prevent future regressions.

Check out the resulting changes to test coverage of dead blocks in the
test coverage reports in this PR.

r? `@tmandry`
fyi: `@wesleywiser`

3 years agoAuto merge of #85959 - RalfJung:miri-stage-0, r=Mark-Simulacrum
bors [Fri, 4 Jun 2021 07:10:55 +0000 (07:10 +0000)]
Auto merge of #85959 - RalfJung:miri-stage-0, r=Mark-Simulacrum

fix testing Miri with --stage 0

Fixes https://github.com/rust-lang/rust/issues/78778 for Miri.

The issue remains open for error_index_generator, which has its own dylib logic:
https://github.com/rust-lang/rust/blob/903e369c831d52726a5292f847e384622189d9a0/src/bootstrap/tool.rs#L396-L400
`@jyn514` I could just copy the logic from `add_rustc_lib_path`, but that does not seem great. Any other suggestions?

Also I wonder if maybe `prepare_tool_cargo` should already call `add_rustc_lib_path`.

3 years agoAuto merge of #85984 - JohnTitor:rollup-rq0g9ph, r=JohnTitor
bors [Fri, 4 Jun 2021 04:50:36 +0000 (04:50 +0000)]
Auto merge of #85984 - JohnTitor:rollup-rq0g9ph, r=JohnTitor

Rollup of 8 pull requests

Successful merges:

 - #85717 (Document `From` impls for cow.rs)
 - #85850 (Remove unused feature gates)
 - #85888 (Fix typo in internal documentation for `TrustedRandomAccess`)
 - #85889 (Restoring the `num_def_ids` function in the CStore API )
 - #85899 (jsondocck small cleanup)
 - #85937 (Fix bad suggestions for code from proc_macro)
 - #85963 (Show `::{{constructor}}` in std::any::type_name().)
 - #85977 (Fix linkcheck script from getting out of sync.)

Failed merges:

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

3 years agoRollup merge of #85977 - ehuss:linkcheck-nightly, r=Mark-Simulacrum
Yuki Okushi [Fri, 4 Jun 2021 04:43:06 +0000 (13:43 +0900)]
Rollup merge of #85977 - ehuss:linkcheck-nightly, r=Mark-Simulacrum

Fix linkcheck script from getting out of sync.

When there are changes to the linkcheck script, the CI jobs used in the books would download the latest version on master, but run it against nightly. During that 24 hour window, the CI can fail if the script has changes that are incompatible with the last nightly. This fixes it so that it downloads the linkchecker that matches the version of nightly.

This also includes a fix to build with release to make it run much faster (I forgot to add this in #85652).

3 years agoRollup merge of #85963 - m-ou-se:constructor-type-name, r=yaahc
Yuki Okushi [Fri, 4 Jun 2021 04:43:02 +0000 (13:43 +0900)]
Rollup merge of #85963 - m-ou-se:constructor-type-name, r=yaahc

Show `::{{constructor}}` in std::any::type_name().

Fix #84666

Before:
```
[src/main.rs:6] type_name::<T>() = "playground::Velocity"
[src/main.rs:6] type_name::<T>() = "playground::Velocity"
```

After:
```
[src/main.rs:6] type_name::<T>() = "scratchpad::Velocity::{{constructor}}"
[src/main.rs:6] type_name::<T>() = "scratchpad::Velocity"
```

cc ``@scottmcm``

3 years agoRollup merge of #85937 - m-ou-se:macro-ref-suggestions, r=estebank
Yuki Okushi [Fri, 4 Jun 2021 04:42:58 +0000 (13:42 +0900)]
Rollup merge of #85937 - m-ou-se:macro-ref-suggestions, r=estebank

Fix bad suggestions for code from proc_macro

Fixes #85932

This disables these suggestions for spans from external macros, while keeping them for macros defined locally:

Before:
```
3 | #[hello]
  | ^^^^^^^^
  | |
  | expected `&mut i32`, found integer
  | help: consider mutably borrowing here: `&mut #[hello]`
```

After:
```
3 | #[hello]
  | ^^^^^^^^ expected `&mut i32`, found integer
```

Unchanged:
```
26 | macro_rules! bla { () => { x(123); } }
   |                              ^^^
   |                              |
   |                              expected `&mut i32`, found integer
   |                              help: consider mutably borrowing here: `&mut 123`
...
29 |     bla!();
   |     ------- in this macro invocation
```

3 years agoRollup merge of #85899 - klensy:jsondocck-f, r=Mark-Simulacrum
Yuki Okushi [Fri, 4 Jun 2021 04:42:57 +0000 (13:42 +0900)]
Rollup merge of #85899 - klensy:jsondocck-f, r=Mark-Simulacrum

jsondocck small cleanup

updated `shlex` (there was some fix https://github.com/comex/rust-shlex/commit/6db4704fcad8393dd6947b1d31720327546a84a2)
replaced `lazy_static` with `once_cell`
removed `serde` direct dependency (`serde_json` will pull it)

3 years agoRollup merge of #85889 - denismerigoux:master, r=petrochenkov
Yuki Okushi [Fri, 4 Jun 2021 04:42:56 +0000 (13:42 +0900)]
Rollup merge of #85889 - denismerigoux:master, r=petrochenkov

Restoring the `num_def_ids` function in the CStore API

## The context

I am the maintainer of https://github.com/hacspec/hacspec, an embedded Rust DSL aimed at cryptographic specifications. As it is normal for an embedded DSL, Hacspec's compiler relies on being plugged to the internal API of the Rust compiler, which is unstable and subject to changes.

## The problem

The Hacspec compiler features its own typechecker, that performs an additional, more restrictive typechecking pass over the Rust code of a crate. To complete this typechecking, the Hacspec compiler needs to retrieve the signature of functions defined in non-local imported crates. Rather than retrieving these signatures on-demand, the Hacspec compiler pre-populates its typechecking context with all the Hacspec-compatible symbols defined in non-local crates first. This requires having a way to iterate over all the definitions in a non-local crate.

I used to do this with `CrateMetadata::all_def_path_hashes_and_def_ids`, but this function was deleted in 908bf5a310b7265a3e. Then, I fellback on `CStore::num_def_ids`, exploiting the fact that all the `DefIds` for a crate have the same `krate_num` and range from `0` to `num_def_ids(krate_num)`. But `num_def_ids` was deleted in b6120bfb354c1c1c9fdf.

I looked to the `Cstore::item_children_untracked` function to replicate the feature of traversing through all the `DefId` for a crate, using `CRATE_DEF_INDEX` as the root, but this does not work as recursive `Cstore::item_children_untracked` calls do not reach all the symbols I was able to reach using the two previous methods.

## Description of this PR

This PR simply restores in the public API of `CStore` the `num_def_ids` function, giving the size of the definition table for a given crate.

3 years agoRollup merge of #85888 - steffahn:fix_internal_trustedrandomaccess_docs, r=Mark-Simul...
Yuki Okushi [Fri, 4 Jun 2021 04:42:55 +0000 (13:42 +0900)]
Rollup merge of #85888 - steffahn:fix_internal_trustedrandomaccess_docs, r=Mark-Simulacrum

Fix typo in internal documentation for `TrustedRandomAccess`

`next_back` is a method of DoubleEndedIterator, not Iterator.

3 years agoRollup merge of #85850 - bjorn3:less_feature_gates, r=jyn514
Yuki Okushi [Fri, 4 Jun 2021 04:42:54 +0000 (13:42 +0900)]
Rollup merge of #85850 - bjorn3:less_feature_gates, r=jyn514

Remove unused feature gates

The first commit removes a usage of a feature gate, but I don't expect it to be controversial as the feature gate was only used to workaround a limitation of rust in the past. (closures never being `Clone`)

The second commit uses `#[allow_internal_unstable]` to avoid leaking the `trusted_step` feature gate usage from inside the index newtype macro. It didn't work for the `min_specialization` feature gate though.

The third commit removes (almost) all feature gates from the compiler that weren't used anyway.

3 years agoRollup merge of #85717 - fee1-dead:document-cow, r=yaahc
Yuki Okushi [Fri, 4 Jun 2021 04:42:53 +0000 (13:42 +0900)]
Rollup merge of #85717 - fee1-dead:document-cow, r=yaahc

Document `From` impls for cow.rs

3 years agoAuto merge of #85954 - flip1995:clippyup, r=Manishearth
bors [Fri, 4 Jun 2021 02:09:41 +0000 (02:09 +0000)]
Auto merge of #85954 - flip1995:clippyup, r=Manishearth

Update Clippy

Bi-weekly Clippy update.

r? `@Manishearth`

3 years agoAuto merge of #85867 - steffahn:remove_unnecessary_specfromiter_impls, r=Mark-Simulacrum
bors [Thu, 3 Jun 2021 22:45:14 +0000 (22:45 +0000)]
Auto merge of #85867 - steffahn:remove_unnecessary_specfromiter_impls, r=Mark-Simulacrum

Remove unnecessary SpecFromIter impls

Unless I’m missing something, these `SpecFromIter<&'a T, …> for Vec<T>` implementations were completely unused.

3 years agoBuild linkcheck script as release to run faster.
Eric Huss [Thu, 3 Jun 2021 20:21:21 +0000 (13:21 -0700)]
Build linkcheck script as release to run faster.

3 years agoFix linkcheck script from getting out of sync.
Eric Huss [Thu, 3 Jun 2021 20:21:04 +0000 (13:21 -0700)]
Fix linkcheck script from getting out of sync.

3 years agoAuto merge of #85617 - hi-rustin:rustin-patch-fix, r=estebank
bors [Thu, 3 Jun 2021 20:06:35 +0000 (20:06 +0000)]
Auto merge of #85617 - hi-rustin:rustin-patch-fix, r=estebank

shrinking the deprecated method span

part of https://github.com/rust-lang/rust/issues/85403

r? `@estebank`

3 years agoAuto merge of #85292 - wesleywiser:enum_debuginfo, r=michaelwoerister
bors [Thu, 3 Jun 2021 15:32:38 +0000 (15:32 +0000)]
Auto merge of #85292 - wesleywiser:enum_debuginfo, r=michaelwoerister

Improve debugging experience for enums on windows-msvc

This PR makes significant improvements over the status quo of debugging enums on the windows-msvc platform with either WinDbg or Visual Studio in three ways:

1. Improves the debugger experience for directly tagged enums.
2. Fixes a bug which caused the debugger to sometimes show the wrong debug info for niche layout enums. For example, `Option<&u32>` could sometimes use the debug info for `Option<&f64>` instead leading to nonsensical variable values in the debugger.
3. Significantly improves the debugger experience for niche-layout enums.

Let's look at a few examples:

```rust
pub enum CStyleEnum {
    Base = 2,
    Exponent = 16,
}

pub enum NicheLayoutEnum {
    Tag1,
    Data { my_data: CStyleEnum },
    Tag2,
    Tag3,
    Tag4,
}

pub enum OtherEnum<T> {
    Case1(T),
    Case2(T),
}

fn main() {
    let a = Some(CStyleEnum::Base);
    let b = Option::<CStyleEnum>::None;
    let c = NicheLayoutEnum::Tag1;
    let d = NicheLayoutEnum::Data { my_data: CStyleEnum::Exponent };
    let e = NicheLayoutEnum::Tag2;
    let f = Some(&1u32);
    let g = Option::<&'static u32>::None;
    let h = Some(&2u64);
    let i = Option::<&'static u64>::None;
    let j = Some(12u32);
    let k = Option::<u32>::None;
    let l = Some(12.34f64);
    let m = Option::<f64>::None;
    let n = CStyleEnum::Base;
    let o = CStyleEnum::Exponent;
    let p = Some("IAMA optional string!".to_string());
    let q = OtherEnum::Case1(42u32);
}
```

This is what WinDbg Preview shows using the latest rustc nightly:

![image](https://user-images.githubusercontent.com/831192/118285353-57c10780-b49f-11eb-97aa-db3abfc09508.png)

Most of the variables don't show a meaningful value expect for a few cases that we have targeted natvis definitions covering. Even worse, drilling into many of these variables shows information that can be difficult to interpret without an understanding of the layout of Rust types:

![image](https://user-images.githubusercontent.com/831192/118285609-a1a9ed80-b49f-11eb-9c29-b14576984647.png)

With the changes in this PR, we're able to write two natvis definitions that cover all enum cases generally. After building with these changes, WinDbg now shows this instead:

![image](https://user-images.githubusercontent.com/831192/118287730-be472500-b4a1-11eb-8cad-8f6a91c7516b.png)

Drilling into the same variables, we can see much more useful information:

![image](https://user-images.githubusercontent.com/831192/118287888-e20a6b00-b4a1-11eb-927f-32cf33a31c16.png)

Fixes #84670
Fixes #84671

3 years agoAdd test for issue 84666.
Mara Bos [Thu, 3 Jun 2021 13:48:33 +0000 (15:48 +0200)]
Add test for issue 84666.

3 years agoShow `::{{constructor}}` in std::any::type_name().
Mara Bos [Thu, 3 Jun 2021 13:41:48 +0000 (15:41 +0200)]
Show `::{{constructor}}` in std::any::type_name().

3 years agoAuto merge of #85958 - hyd-dev:miri, r=RalfJung
bors [Thu, 3 Jun 2021 10:43:32 +0000 (10:43 +0000)]
Auto merge of #85958 - hyd-dev:miri, r=RalfJung

Update Miri

Fixes #85946.

r? `@RalfJung`

3 years agofix testing Miri with --stage 0
Ralf Jung [Thu, 3 Jun 2021 09:37:17 +0000 (11:37 +0200)]
fix testing Miri with --stage 0

3 years agoUpdate Miri
hyd-dev [Thu, 3 Jun 2021 08:59:29 +0000 (16:59 +0800)]
Update Miri

3 years agoUpdate tests with new casing
Ryan Levick [Thu, 3 Jun 2021 08:39:13 +0000 (10:39 +0200)]
Update tests with new casing

3 years agoAdd run-make test testing flag stability
Ryan Levick [Thu, 3 Jun 2021 08:18:38 +0000 (10:18 +0200)]
Add run-make test testing flag stability

3 years agoAuto merge of #85952 - JohnTitor:rollup-r00gu9q, r=JohnTitor
bors [Thu, 3 Jun 2021 08:02:39 +0000 (08:02 +0000)]
Auto merge of #85952 - JohnTitor:rollup-r00gu9q, r=JohnTitor

Rollup of 13 pull requests

Successful merges:

 - #83362 (Stabilize `vecdeque_binary_search`)
 - #85706 (Turn off frame pointer elimination on all Apple platforms. )
 - #85724 (Fix issue 85435 by restricting Fake Read precision)
 - #85852 (Clarify meaning of MachineApplicable suggestions.)
 - #85877 (Intra doc link-ify a reference to a function)
 - #85880 (convert assertion on rvalue::threadlocalref to delay bug)
 - #85896 (Add test for forward declared const param defaults)
 - #85897 (Update I-unsound label for triagebot)
 - #85900 (Use pattern matching instead of checking lengths explicitly)
 - #85911 (Avoid a clone of output_filenames.)
 - #85926 (Update cargo)
 - #85934 (Add `Ty::is_union` predicate)
 - #85935 (Validate type of locals used as indices)

Failed merges:

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

3 years agoRestore the num_def_ids_untracked public function giving the total number of exported...
Denis Merigoux [Tue, 1 Jun 2021 12:10:14 +0000 (14:10 +0200)]
Restore the num_def_ids_untracked public function giving the total number of exported symbols for each crate

Restored underlying num_def_ids_method

Update compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs

Changed name to fit with naming convention

Co-authored-by: bjorn3 <bjorn3@users.noreply.github.com>
Update compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs

Replace regular doc with Rustdoc comment

Co-authored-by: Joshua Nelson <jyn514@gmail.com>
Clarifies third-party use of num_def_ids_untracked

3 years agoUpdate Cargo.lock
flip1995 [Thu, 3 Jun 2021 07:06:49 +0000 (09:06 +0200)]
Update Cargo.lock

3 years agoMerge commit '3ae8faff4d46ad92f194c2a4b941c3152a701b31' into clippyup
flip1995 [Thu, 3 Jun 2021 06:41:37 +0000 (08:41 +0200)]
Merge commit '3ae8faff4d46ad92f194c2a4b941c3152a701b31' into clippyup

3 years agoAuto merge of #7313 - flip1995:rustup, r=flip1995
bors [Thu, 3 Jun 2021 06:40:25 +0000 (06:40 +0000)]
Auto merge of #7313 - flip1995:rustup, r=flip1995

Rustup

Empty rustup. No changes to Clippy in the Rust repo for the last 2 weeks :open_mouth:

changelog: none

3 years agoBump nightly version -> 2021-06-03
flip1995 [Thu, 3 Jun 2021 06:38:19 +0000 (08:38 +0200)]
Bump nightly version -> 2021-06-03

3 years agoMerge remote-tracking branch 'upstream/master' into rustup
flip1995 [Thu, 3 Jun 2021 06:37:53 +0000 (08:37 +0200)]
Merge remote-tracking branch 'upstream/master' into rustup

3 years agoRollup merge of #85935 - tmiasko:validate-indexing, r=jonas-schievink
Yuki Okushi [Thu, 3 Jun 2021 05:35:42 +0000 (14:35 +0900)]
Rollup merge of #85935 - tmiasko:validate-indexing, r=jonas-schievink

Validate type of locals used as indices

3 years agoRollup merge of #85934 - tmiasko:is-union, r=jackh726
Yuki Okushi [Thu, 3 Jun 2021 05:35:41 +0000 (14:35 +0900)]
Rollup merge of #85934 - tmiasko:is-union, r=jackh726

Add `Ty::is_union` predicate

3 years agoRollup merge of #85926 - ehuss:update-cargo, r=ehuss
Yuki Okushi [Thu, 3 Jun 2021 05:35:40 +0000 (14:35 +0900)]
Rollup merge of #85926 - ehuss:update-cargo, r=ehuss

Update cargo

10 commits in e931e4796b61de593aa1097649445e535c9c7ee0..0cecbd67323ca14a7eb6505900d0d7307b00355b
2021-05-24 16:17:27 +0000 to 2021-06-01 20:09:13 +0000
- Configure hosts separately from targets when --target is specified. (rust-lang/cargo#9322)
- Add some validation to rustc-link-arg (rust-lang/cargo#9523)
- Implement suggestions for unknown features in workspace (rust-lang/cargo#9420)
- Extract common `make_dep_path` to cargo_util (rust-lang/cargo#9529)
- Add a note about rustflags compatibility. (rust-lang/cargo#9524)
- Consolidate doc collision detection. (rust-lang/cargo#9526)
- Add `--depth` option for `cargo-tree` (rust-lang/cargo#9499)
- `cargo tree -e no-proc-macro` to hide procedural macro dependencies (rust-lang/cargo#9488)
- Update to semver 1.0.0 (rust-lang/cargo#9508)
- Update tar dependency to 0.4.35 (rust-lang/cargo#9517)

3 years agoRollup merge of #85911 - cjgillot:one-output, r=Aaron1011
Yuki Okushi [Thu, 3 Jun 2021 05:35:39 +0000 (14:35 +0900)]
Rollup merge of #85911 - cjgillot:one-output, r=Aaron1011

Avoid a clone of output_filenames.

Part of #85153

3 years agoRollup merge of #85900 - LingMan:pat_mat, r=petrochenkov
Yuki Okushi [Thu, 3 Jun 2021 05:35:38 +0000 (14:35 +0900)]
Rollup merge of #85900 - LingMan:pat_mat, r=petrochenkov

Use pattern matching instead of checking lengths explicitly

This piece of code checks that there are exaclty two variants, one having
exactly one field, the other having exactly zero fields. If any of these
conditions is violated, it returns `None`. Otherwise it assigns that one
field's ty to `field_ty`.

Instead of fiddling with indices and length checks explicitly, use pattern
matching to simplify this.

`@rustbot` modify labels +C-cleanup +T-compiler

3 years agoRollup merge of #85897 - steffahn:update_unsound_label_for_triagebot, r=Mark-Simulacrum
Yuki Okushi [Thu, 3 Jun 2021 05:35:37 +0000 (14:35 +0900)]
Rollup merge of #85897 - steffahn:update_unsound_label_for_triagebot, r=Mark-Simulacrum

Update I-unsound label for triagebot

Following the remaming of the `I-unsound` label (removing the space and the emoji) as discussed [on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/122651-general/topic/A.20way.20to.20self-label.20soundness.20issues.3F/near/240962907) (or [in the archive](https://zulip-archive.rust-lang.org/122651general/88362Awaytoselflabelsoundnessissues.html#240962907)), this change of the `triagebot.toml` is necessary to keep the automatic `I-prioritize` flagging.

3 years agoRollup merge of #85896 - BoxyUwU:remove-fixme-fwd-declared-const-default, r=petrochenkov
Yuki Okushi [Thu, 3 Jun 2021 05:35:36 +0000 (14:35 +0900)]
Rollup merge of #85896 - BoxyUwU:remove-fixme-fwd-declared-const-default, r=petrochenkov

Add test for forward declared const param defaults

3 years agoRollup merge of #85880 - csmoe:ice-85768, r=oli-obk
Yuki Okushi [Thu, 3 Jun 2021 05:35:35 +0000 (14:35 +0900)]
Rollup merge of #85880 - csmoe:ice-85768, r=oli-obk

convert assertion on rvalue::threadlocalref to delay bug

Closes #85768
r? ``@oli-obk``

3 years agoRollup merge of #85877 - est31:intra_doc_links, r=jyn514
Yuki Okushi [Thu, 3 Jun 2021 05:35:34 +0000 (14:35 +0900)]
Rollup merge of #85877 - est31:intra_doc_links, r=jyn514

Intra doc link-ify a reference to a function

3 years agoRollup merge of #85852 - m-ou-se:machineapplicable-docs, r=nikomatsakis
Yuki Okushi [Thu, 3 Jun 2021 05:35:30 +0000 (14:35 +0900)]
Rollup merge of #85852 - m-ou-se:machineapplicable-docs, r=nikomatsakis

Clarify meaning of MachineApplicable suggestions.

This documents the meaning of MachineApplicable in case of multiple suggestions, as described in https://github.com/rust-lang/rust/issues/53934#issuecomment-831396123

r? ``@nikomatsakis``

3 years agoRollup merge of #85724 - sexxi-goose:rox-fix-issue-85435, r=nikomatsakis
Yuki Okushi [Thu, 3 Jun 2021 05:35:29 +0000 (14:35 +0900)]
Rollup merge of #85724 - sexxi-goose:rox-fix-issue-85435, r=nikomatsakis

Fix issue 85435 by restricting Fake Read precision

This PR fixes the root bug of issue #85435 by restricting Fake Read precision in closures and removing the feature gate introduced in PR #85564. More info [here](https://github.com/rust-lang/rust/issues/85561#issuecomment-846223784) and [here](https://github.com/rust-lang/rust/issues/85561#issuecomment-847270533).

Closes #85561

r? ``@nikomatsakis``

3 years agoRollup merge of #85706 - jrmuizel:fpe, r=nagisa
Yuki Okushi [Thu, 3 Jun 2021 05:35:28 +0000 (14:35 +0900)]
Rollup merge of #85706 - jrmuizel:fpe, r=nagisa

Turn off frame pointer elimination on all Apple platforms.

This ends up disabling frame pointer elimination on aarch64_apple_darwin
which matches what clang does by default along with the
aarch64_apple_ios and x86_64_apple_darwin targets.

Further, the Apple docs "Writing ARM64 Code for Apple Platforms" has a section
called "Respect the Purpose of Specific CPU Registers" which
specifically calls out the frame pointer register (x29):

   The frame pointer register (x29) must always address a valid frame
   record. Some functions — such as leaf functions or tail calls — may
   opt not to create an entry in this list As a result, stack traces
   are always meaningful, even without debug information.

Other platforms are updated to not override the default.

3 years agoRollup merge of #83362 - SOF3:stab/vecdeque-binary-search, r=m-ou-se
Yuki Okushi [Thu, 3 Jun 2021 05:35:27 +0000 (14:35 +0900)]
Rollup merge of #83362 - SOF3:stab/vecdeque-binary-search, r=m-ou-se

Stabilize `vecdeque_binary_search`

This PR stabilizes the feature `vecdeque_binary_search` as tracked in #78021.

The tracking issue has not received any comments for the past 5 months, and concerns have been raised neither in the RFC rust-lang/rfcs#2997 nor in the tracking issue #78021.

3 years agoAuto merge of #84988 - alexcrichton:safe-target-feature-wasm, r=joshtriplett
bors [Thu, 3 Jun 2021 05:12:31 +0000 (05:12 +0000)]
Auto merge of #84988 - alexcrichton:safe-target-feature-wasm, r=joshtriplett

rustc: Allow safe #[target_feature] on wasm

This commit updates the compiler's handling of the `#[target_feature]`
attribute when applied to functions on WebAssembly-based targets. The
compiler in general requires that any functions with `#[target_feature]`
are marked as `unsafe` as well, but this commit relaxes the restriction
for WebAssembly targets where the attribute can be applied to safe
functions as well.

The reason this is done is that the motivation for this feature of the
compiler is not applicable for WebAssembly targets. In general the
`#[target_feature]` attribute is used to enhance target CPU features
enabled beyond the basic level for the rest of the compilation. If done
improperly this means that your program could execute an instruction
that the CPU you happen to be running on does not understand. This is
considered undefined behavior where it is unknown what will happen (e.g.
it's not a deterministic `SIGILL`).

For WebAssembly, however, the target is different. It is not possible
for a running WebAssembly program to execute an instruction that the
engine does not understand. If this were the case then the program would
not have validated in the first place and would not run at all. Even if
this were allowed in some hypothetical future where engines have some
form of runtime feature detection (which they do not right now) any
implementation of such a feature would generate a trap if a module
attempts to execute an instruction the module does not understand. This
deterministic trap behavior would still not fall into the category of
undefined behavior because the trap is deterministic.

For these reasons the `#[target_feature]` attribute is now allowed on
safe functions, but only for WebAssembly targets. This notably enables
the wasm-SIMD intrinsics proposed for stabilization in #74372 to be
marked as safe generally instead of today where they're all `unsafe` due
to the historical implementation of `#[target_feature]` in the compiler.

3 years agoAuto merge of #84834 - GuillaumeGomez:sidebar-unification, r=jsha
bors [Thu, 3 Jun 2021 02:31:44 +0000 (02:31 +0000)]
Auto merge of #84834 - GuillaumeGomez:sidebar-unification, r=jsha

Sidebar unification

This PR does a few things:
 * Put crates list at all levels (before, it was only on the "top" items)
 * Fix bug in module sidebar: the list of items was from the parent module.

The other changes (on bootstrap mostly) were to allow to generate multiple crates in a same folder so that we can ensure that clicking on the crates in the sidebar works as expected.

I added a rustdoc-gui test to ensure everything is where it should be.

r? `@jyn514`

3 years agoAuto merge of #84703 - GuillaumeGomez:cleanup-dom, r=jsha
bors [Wed, 2 Jun 2021 23:11:41 +0000 (23:11 +0000)]
Auto merge of #84703 - GuillaumeGomez:cleanup-dom, r=jsha

Clean up dom

The commits come from #84480.

They were errors reported by the `tidy` script that we will use to ensure that the HTML generated by rustdoc is valid.

I checked carefully that there were no difference so in principle it should be exactly the same rendering but a double-check would be very appreciated in case I missed something.

Extra note: `<h4>` and some `<h3>` tags were replaced by `<div>` because they're not supposed to contain tags as they currently do.

r? `@jsha`

3 years agoAuto merge of #85904 - cjgillot:one-name, r=petrochenkov
bors [Wed, 2 Jun 2021 20:23:37 +0000 (20:23 +0000)]
Auto merge of #85904 - cjgillot:one-name, r=petrochenkov

Restrict access to crate_name.

Also remove original_crate_name, which had the exact same implementation.

Part of #85153

3 years agoUpdate generator tests
Wesley Wiser [Wed, 2 Jun 2021 20:09:23 +0000 (16:09 -0400)]
Update generator tests

3 years agoReplace h3 for notable traits with div
Guillaume Gomez [Wed, 2 Jun 2021 19:16:33 +0000 (21:16 +0200)]
Replace h3 for notable traits with div

3 years agoStabilize VecDeque::partition_point.
Mara Bos [Wed, 2 Jun 2021 18:51:23 +0000 (20:51 +0200)]
Stabilize VecDeque::partition_point.

3 years agoBump vecdeque_binary_search stabilization to 1.54.
Mara Bos [Wed, 2 Jun 2021 18:51:08 +0000 (20:51 +0200)]
Bump vecdeque_binary_search stabilization to 1.54.

3 years agoBumped `vecdeque_binary_search` stabilization version to 1.53.0
SOFe [Mon, 22 Mar 2021 02:58:06 +0000 (10:58 +0800)]
Bumped `vecdeque_binary_search` stabilization version to 1.53.0

3 years agoStabilize `vecdeque_binary_search`
SOFe [Mon, 22 Mar 2021 02:46:18 +0000 (10:46 +0800)]
Stabilize `vecdeque_binary_search`

3 years agoUpdate rustdoc tests
Guillaume Gomez [Wed, 2 Jun 2021 08:59:10 +0000 (10:59 +0200)]
Update rustdoc tests

3 years agoRemove data-level selectors from CSS.
Jacob Hoffman-Andrews [Wed, 2 Jun 2021 04:43:09 +0000 (21:43 -0700)]
Remove data-level selectors from CSS.

3 years agoTurn off frame pointer elimination on all Apple platforms.
Jeff Muizelaar [Wed, 2 Jun 2021 17:48:42 +0000 (13:48 -0400)]
Turn off frame pointer elimination on all Apple platforms.

This ends up disabling frame pointer elimination on aarch64_apple_darwin
which matches what clang does by default along with the
aarch64_apple_ios and x86_64_apple_darwin targets.

Further, the Apple docs "Writing ARM64 Code for Apple Platforms" has a section
called "Respect the Purpose of Specific CPU Registers" which
specifically calls out the frame pointer register (x29):

   The frame pointer register (x29) must always address a valid frame
   record. Some functions — such as leaf functions or tail calls — may
   opt not to create an entry in this list As a result, stack traces
   are always meaningful, even without debug information.

Other platforms are updated to not override the default.

3 years agoAdd test for ref suggestions in macros.
Mara Bos [Wed, 2 Jun 2021 16:10:42 +0000 (18:10 +0200)]
Add test for ref suggestions in macros.

3 years agoRestrict access to crate_name.
Camille GILLOT [Mon, 10 May 2021 16:23:32 +0000 (18:23 +0200)]
Restrict access to crate_name.

Also remove original_crate_name, which had the exact same implementation

3 years agoImprove check_ref suggestions in macros.
Mara Bos [Wed, 2 Jun 2021 16:10:15 +0000 (18:10 +0200)]
Improve check_ref suggestions in macros.

3 years agoAdd a page on force-warns in unstable book
Ryan Levick [Wed, 2 Jun 2021 16:07:39 +0000 (18:07 +0200)]
Add a page on force-warns in unstable book

3 years agoAdd deny-by-default test
Ryan Levick [Wed, 2 Jun 2021 15:25:24 +0000 (17:25 +0200)]
Add deny-by-default test

3 years agoAdd missing stderr file
Ryan Levick [Wed, 2 Jun 2021 15:22:24 +0000 (17:22 +0200)]
Add missing stderr file

3 years agoAdd final test
Ryan Levick [Wed, 2 Jun 2021 15:18:52 +0000 (17:18 +0200)]
Add final test

3 years agoValidate type of locals used as indices
Tomasz Miąsko [Wed, 2 Jun 2021 00:00:00 +0000 (00:00 +0000)]
Validate type of locals used as indices

3 years agoAddress comment
hi-rustin [Wed, 2 Jun 2021 15:10:55 +0000 (23:10 +0800)]
Address comment

3 years agoAdd `Ty::is_union` predicate and use it
Tomasz Miąsko [Wed, 2 Jun 2021 00:00:00 +0000 (00:00 +0000)]
Add `Ty::is_union` predicate and use it

3 years agoImplement `Ty::is_enum` using `matches!`
Tomasz Miąsko [Wed, 2 Jun 2021 00:00:00 +0000 (00:00 +0000)]
Implement `Ty::is_enum` using `matches!`

3 years agoForce warn on lint groups as well
Ryan Levick [Wed, 2 Jun 2021 15:09:07 +0000 (17:09 +0200)]
Force warn on lint groups as well

3 years agoRespond to review feedback
Wesley Wiser [Wed, 26 May 2021 16:02:07 +0000 (12:02 -0400)]
Respond to review feedback

3 years agoChange the type name from `_enum<..>` to `enum$<..>`
Wesley Wiser [Thu, 20 May 2021 17:58:13 +0000 (13:58 -0400)]
Change the type name from `_enum<..>` to `enum$<..>`

This makes the type name inline with the proposed standard in #85269.

3 years agoRespond to review feedback
Wesley Wiser [Mon, 17 May 2021 15:09:13 +0000 (11:09 -0400)]
Respond to review feedback

3 years agoMake tidy happy
Wesley Wiser [Fri, 14 May 2021 15:17:26 +0000 (11:17 -0400)]
Make tidy happy

3 years agoAdd/update tests
Wesley Wiser [Thu, 13 May 2021 16:56:33 +0000 (12:56 -0400)]
Add/update tests

3 years agoGenerate better debuginfo for niche-layout enums
Wesley Wiser [Thu, 13 May 2021 20:39:19 +0000 (16:39 -0400)]
Generate better debuginfo for niche-layout enums

Previously, we would generate a single struct with the layout of the
dataful variant plus an extra field whose name contained the value of
the niche (this would only really work for things like `Option<&_>`
where we can determine that the `None` case maps to `0` but for enums
that have multiple tag only variants, this doesn't work).

Now, we generate a union of two structs, one which is the layout of the
dataful variant and one which just has a way of reading the
discriminant. We also generate an enum which maps the discriminant value
to the tag only variants.

We also encode information about the range of values which correspond to
the dataful variant in the type name and then use natvis to determine
which union field we should display to the user.

As a result of this change, all niche-layout enums render correctly in
WinDbg and Visual Studio!

3 years agoRemove fallback for containing scopes
Wesley Wiser [Wed, 28 Apr 2021 20:32:54 +0000 (16:32 -0400)]
Remove fallback for containing scopes

This wasn't necessary for msvc and caused issues where different types
with the same name such as different instantiations of `Option<T>` would
have colliding debuginfo. This confused the debugger which would pick
one of the type definitions and use for all types with that name even
though they had different layout.

3 years agoResolve EnumTagInfo FIXME
Wesley Wiser [Tue, 27 Apr 2021 14:42:06 +0000 (10:42 -0400)]
Resolve EnumTagInfo FIXME

3 years agoGenerate better debuginfo for directly tagged enums
Wesley Wiser [Mon, 26 Apr 2021 18:39:57 +0000 (14:39 -0400)]
Generate better debuginfo for directly tagged enums

3 years agoAuto merge of #85337 - cjgillot:less-anon, r=michaelwoerister
bors [Wed, 2 Jun 2021 13:11:41 +0000 (13:11 +0000)]
Auto merge of #85337 - cjgillot:less-anon, r=michaelwoerister

Avoid creating anonymous nodes with zero or one dependency.

Anonymous nodes are only useful to encode dependencies, and cannot be replayed from one compilation session to another.
As such, anonymous nodes without dependency are always green.
Anonymous nodes with only one dependency are equivalent to this dependency.

cc #45408
cc `@michaelwoerister`

3 years agoAuto merge of #85892 - tmiasko:i, r=oli-obk
bors [Wed, 2 Jun 2021 10:47:58 +0000 (10:47 +0000)]
Auto merge of #85892 - tmiasko:i, r=oli-obk

Miscellaneous inlining improvements

3 years agoAuto merge of #85908 - cjgillot:private-dep-query, r=Aaron1011
bors [Wed, 2 Jun 2021 08:06:45 +0000 (08:06 +0000)]
Auto merge of #85908 - cjgillot:private-dep-query, r=Aaron1011

Make is_private_dep a query.

Part of #85153

r? `@Aaron1011`

3 years agoMiscellaneous inlining improvements
Tomasz Miąsko [Tue, 1 Jun 2021 00:00:00 +0000 (00:00 +0000)]
Miscellaneous inlining improvements

3 years agoAuto merge of #85905 - cjgillot:one-trait-map, r=Aaron1011
bors [Wed, 2 Jun 2021 05:25:41 +0000 (05:25 +0000)]
Auto merge of #85905 - cjgillot:one-trait-map, r=Aaron1011

Only compute the trait map once

Part of #85153

r? `@Aaron1011`

3 years agoUpdate cargo
Eric Huss [Wed, 2 Jun 2021 03:38:39 +0000 (20:38 -0700)]
Update cargo

3 years agoAuto merge of #85687 - m-ou-se:new-prelude, r=yaahc
bors [Wed, 2 Jun 2021 02:36:44 +0000 (02:36 +0000)]
Auto merge of #85687 - m-ou-se:new-prelude, r=yaahc

New prelude

RFC: rust-lang/rfcs#3114
Tracking issue: https://github.com/rust-lang/rust/issues/85684

3 years agoconvert Rvalue::threadlocalref assertion to delay bug
csmoe [Tue, 1 Jun 2021 14:05:04 +0000 (22:05 +0800)]
convert Rvalue::threadlocalref assertion to delay bug

3 years agoAuto merge of #85331 - cjgillot:dirty-dancing, r=Aaron1011
bors [Tue, 1 Jun 2021 23:02:52 +0000 (23:02 +0000)]
Auto merge of #85331 - cjgillot:dirty-dancing, r=Aaron1011

Make rustc_dirty/clean annotations exhaustive by default

Fixes #45009

3 years agoUse pattern matching instead of checking lengths explicitly
LingMan [Tue, 1 Jun 2021 16:09:29 +0000 (18:09 +0200)]
Use pattern matching instead of checking lengths explicitly

This piece of code checks that there are exaclty two variants, one having
exactly one field, the other having exactly zero fields. If any of these
conditions is violated, it returns `None`. Otherwise it assigns that one
field's ty to `field_ty`.

Instead of fiddling with indices and length checks explicitly, use pattern
matching to simplify this.

3 years agoReland - Report coverage `0` of dead blocks
Rich Kadel [Sat, 1 May 2021 21:56:48 +0000 (14:56 -0700)]
Reland - Report coverage `0` of dead blocks

Fixes: #84018
With `-Z instrument-coverage`, coverage reporting of dead blocks
(for example, blocks dropped because a conditional branch is dropped,
based on const evaluation) is now supported.

Note, this PR relands an earlier, reverted PR that failed when compiling
generators. The prior issues with generators has been resolved and a new
test was added to prevent future regressions.

Check out the resulting changes to test coverage of dead blocks in the
test coverage reports in this PR.

3 years agoAuto merge of #85829 - bjorn3:simplify_crate_num, r=jackh726
bors [Tue, 1 Jun 2021 20:09:03 +0000 (20:09 +0000)]
Auto merge of #85829 - bjorn3:simplify_crate_num, r=jackh726

Remove CrateNum::ReservedForIncrCompCache

It's only use is easily replaceable with `Option<CrateNum>`.

3 years agoMake trait_map an Option.
Camille GILLOT [Tue, 1 Jun 2021 19:50:06 +0000 (21:50 +0200)]
Make trait_map an Option.

3 years agoMake the reasoning more explicit.
Camille GILLOT [Tue, 1 Jun 2021 19:46:30 +0000 (21:46 +0200)]
Make the reasoning more explicit.

3 years agoAvoid creating anonymous nodes with zero or one dependency.
Camille GILLOT [Sat, 15 May 2021 15:23:16 +0000 (17:23 +0200)]
Avoid creating anonymous nodes with zero or one dependency.