]> git.lizzy.rs Git - rust.git/log
rust.git
3 years agoRollup merge of #84972 - RalfJung:null-ptr-msg, r=oli-obk
Yuki Okushi [Fri, 7 May 2021 06:20:29 +0000 (15:20 +0900)]
Rollup merge of #84972 - RalfJung:null-ptr-msg, r=oli-obk

CTFE inbounds-error-messages tweak

* use CheckInAllocMsg::PointerArithmeticTest for ptr_offset error
* nicer errors for some null pointer cases

r? `@oli-obk`

3 years agoRollup merge of #84911 - Mark-Simulacrum:retry-clang, r=pietroalbini
Yuki Okushi [Fri, 7 May 2021 06:20:28 +0000 (15:20 +0900)]
Rollup merge of #84911 - Mark-Simulacrum:retry-clang, r=pietroalbini

Retry clang+llvm download

We've been seeing a pretty high rate of spurious network failures (e.g., openssl
connection reset by peer). Not clear why, but let's add a retry.

r? `@pietroalbini`

3 years agoRollup merge of #84897 - richkadel:cover-closure-macros, r=tmandry
Yuki Okushi [Fri, 7 May 2021 06:20:26 +0000 (15:20 +0900)]
Rollup merge of #84897 - richkadel:cover-closure-macros, r=tmandry

Coverage instruments closure bodies in macros (not the macro body)

Fixes: #84884
This solution might be considered a compromise, but I think it is the
better choice.

The results in the `closure.rs` test correctly resolve all test cases
broken as described in #84884.

One test pattern (in both `closure_macro.rs` and
`closure_macro_async.rs`) was also affected, and removes coverage
statistics for the lines inside the closure, because the closure
includes a macro. (The coverage remains at the callsite of the macro, so
we lose some detail, but there isn't a perfect choice with macros.

Often macro implementations are split across the macro and the callsite,
and there doesn't appear to be a single "right choice" for which body
should be covered. For the current implementation, we can't do both.

The callsite is most likely to be the preferred site for coverage.

r? `@tmandry`
cc: `@wesleywiser`

3 years agoRollup merge of #84875 - richkadel:no-coverage-dont-check-unused, r=tmandry
Yuki Okushi [Fri, 7 May 2021 06:20:25 +0000 (15:20 +0900)]
Rollup merge of #84875 - richkadel:no-coverage-dont-check-unused, r=tmandry

Removes unneeded check of `#[no_coverage]` in mapgen

There is an anticipated feature request to support a compiler flag that
only adds coverage for specific files (or perhaps mods). As I thought
about where that change would need to be supported, I realized that
checking the attribute in mapgen (for unused functions) was unnecessary.
The unused functions are only synthesized if they have MIR coverage, and
functions with the `no_coverage` attribute will not have been
instrumented with MIR coverage statements in the first place.

New tests confirm this.

Also, while adding tests, I updated resolved comments and FIXMEs in
other tests, and expanded comments and tests on one remaining issue that
is still not resolved.

r? `@tmandry`
cc: `@wesleywiser`

3 years agoRollup merge of #84815 - richkadel:coverage-docs-update-2021-05, r=tmandry
Yuki Okushi [Fri, 7 May 2021 06:20:24 +0000 (15:20 +0900)]
Rollup merge of #84815 - richkadel:coverage-docs-update-2021-05, r=tmandry

Update coverage docs and command line help

r? `@tmandry`
cc: `@wesleywiser`

3 years agoRollup merge of #84787 - klensy:deps-bump, r=Mark-Simulacrum
Yuki Okushi [Fri, 7 May 2021 06:20:23 +0000 (15:20 +0900)]
Rollup merge of #84787 - klensy:deps-bump, r=Mark-Simulacrum

bump deps

openssl vulns:
https://rustsec.org/advisories/RUSTSEC-2021-0056.html
https://rustsec.org/advisories/RUSTSEC-2021-0055.html

openssl-src v111.12.0+1.1.1h -> v111.15.0+1.1.1k

not latest, but newer
openssl-sys v0.9.58 -> v0.9.61
openssl v0.10.30 -> v0.10.33

curl vulns: https://curl.se/docs/vuln-7.74.0.html

curl v0.4.34 -> v0.4.36
curl-sys v0.4.39+curl-7.74.0 -> v0.4.42+curl-7.76.0

3 years agoRollup merge of #84781 - jyn514:check-bootstrap, r=Mark-Simulacrum
Yuki Okushi [Fri, 7 May 2021 06:20:22 +0000 (15:20 +0900)]
Rollup merge of #84781 - jyn514:check-bootstrap, r=Mark-Simulacrum

Don't check bootstrap artifacts by default

Bootstrap has to build successfully or this won't run, so all it checks
are the tests, which are uncommon to change.

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

3 years agoRollup merge of #84779 - jyn514:cargotest-args, r=Mark-Simulacrum
Yuki Okushi [Fri, 7 May 2021 06:20:21 +0000 (15:20 +0900)]
Rollup merge of #84779 - jyn514:cargotest-args, r=Mark-Simulacrum

Add support for --test-args to cargotest

This allows running a single test without having to wait for all tests
to complete.

Closes https://github.com/rust-lang/rust/issues/77260.

3 years agoAuto merge of #85014 - Dylan-DPC:rollup-jzpbkdu, r=Dylan-DPC
bors [Fri, 7 May 2021 01:16:08 +0000 (01:16 +0000)]
Auto merge of #85014 - Dylan-DPC:rollup-jzpbkdu, r=Dylan-DPC

Rollup of 11 pull requests

Successful merges:

 - #84409 (Ensure TLS destructors run before thread joins in SGX)
 - #84500 (Add --run flag to compiletest)
 - #84728 (Add test for suggestion to borrow unsized function parameters)
 - #84734 (Add `needs-unwind` and beginning of support for testing `panic=abort` std to compiletest)
 - #84755 (Allow using `core::` in intra-doc links within core itself)
 - #84871 (Disallows `#![feature(no_coverage)]` on stable and beta (using standard crate-level gating))
 - #84872 (Wire up tidy dependency checks for cg_clif)
 - #84896 (Handle incorrect placement of parentheses in trait bounds more gracefully)
 - #84905 (CTFE engine: rename copy → copy_intrinsic, move to intrinsics.rs)
 - #84953 (Remove unneeded call to with_default_session_globals in rustdoc highlight)
 - #84987 (small nits)

Failed merges:

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

3 years agoillumos should put libc last in library search order
Joshua M. Clulow [Fri, 7 May 2021 00:01:50 +0000 (17:01 -0700)]
illumos should put libc last in library search order

Under some conditions, the toolchain will produce a sequence of linker
arguments that result in a NEEDED list that puts libc before libgcc_s;
e.g.,

    [0]  NEEDED            0x2046ba            libc.so.1
    [1]  NEEDED            0x204723            libm.so.2
    [2]  NEEDED            0x204736            libsocket.so.1
    [3]  NEEDED            0x20478b            libumem.so.1
    [4]  NEEDED            0x204763            libgcc_s.so.1

Both libc and libgcc_s provide an unwinder implementation, but libgcc_s
provides some extra symbols upon which Rust directly depends.  If libc
is first in the NEEDED list we will find some of those symbols in libc
but others in libgcc_s, resulting in undefined behaviour as the two
implementations do not use compatible interior data structures.

This solution is not perfect, but is the simplest way to produce correct
binaries on illumos for now.

3 years agoRollup merge of #84987 - lcnr:nits, r=Mark-Simulacrum
Dylan DPC [Thu, 6 May 2021 22:38:45 +0000 (00:38 +0200)]
Rollup merge of #84987 - lcnr:nits, r=Mark-Simulacrum

small nits

3 years agoRollup merge of #84953 - GuillaumeGomez:remove-unneeded-with_default_session_globals...
Dylan DPC [Thu, 6 May 2021 22:38:44 +0000 (00:38 +0200)]
Rollup merge of #84953 - GuillaumeGomez:remove-unneeded-with_default_session_globals, r=jyn514

Remove unneeded call to with_default_session_globals in rustdoc highlight

This was the origin of the `Span` bug in https://github.com/rust-lang/rust/pull/84176.

cc `````@Aaron1011`````
r? `````@jyn514`````

3 years agoRollup merge of #84905 - RalfJung:copy, r=oli-obk
Dylan DPC [Thu, 6 May 2021 22:38:43 +0000 (00:38 +0200)]
Rollup merge of #84905 - RalfJung:copy, r=oli-obk

CTFE engine: rename copy → copy_intrinsic, move to intrinsics.rs

The `copy` name is confusing for this function because we also have `copy_op` which is pretty different. I hope `copy_intrinsic` is clearer. Also `step.rs` should really just contain the main loop and opcode dispatch, so move this helper function to a more appropriate place.

r? ``````@oli-obk``````

3 years agoRollup merge of #84896 - estebank:issue-84772, r=jackh726
Dylan DPC [Thu, 6 May 2021 22:38:42 +0000 (00:38 +0200)]
Rollup merge of #84896 - estebank:issue-84772, r=jackh726

Handle incorrect placement of parentheses in trait bounds more gracefully

Fix #84772.

CC ``````@jonhoo``````

3 years agoRollup merge of #84872 - bjorn3:cg_clif_tidy, r=Mark-Simulacrum
Dylan DPC [Thu, 6 May 2021 22:38:41 +0000 (00:38 +0200)]
Rollup merge of #84872 - bjorn3:cg_clif_tidy, r=Mark-Simulacrum

Wire up tidy dependency checks for cg_clif

Also contains a fix and improvement to tidy.

Required for https://github.com/rust-lang/rust/pull/81746.

3 years agoRollup merge of #84871 - richkadel:no-coverage-unstable-only, r=nagisa
Dylan DPC [Thu, 6 May 2021 22:38:40 +0000 (00:38 +0200)]
Rollup merge of #84871 - richkadel:no-coverage-unstable-only, r=nagisa

Disallows `#![feature(no_coverage)]` on stable and beta (using standard crate-level gating)

Fixes: #84836
Removes the function-level feature gating solution originally implemented, and solves the same problem using `allow_internal_unstable`, so normal crate-level feature gating mechanism can still be used (which disallows the feature on stable and beta).

I tested this, building the compiler with and without `CFG_DISABLE_UNSTABLE_FEATURES=1`

With unstable features disabled, I get the expected result as shown here:

```shell
$ ./build/x86_64-unknown-linux-gnu/stage1/bin/rustc     src/test/run-make-fulldeps/coverage/no_cov_crate.rs
error[E0554]: `#![feature]` may not be used on the dev release channel
 --> src/test/run-make-fulldeps/coverage/no_cov_crate.rs:2:1
  |
2 | #![feature(no_coverage)]
  | ^^^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to previous error

For more information about this error, try `rustc --explain E0554`.
```

r? ````@Mark-Simulacrum````
cc: ````@tmandry```` ````@wesleywiser````

3 years agoRollup merge of #84755 - jyn514:core-links, r=kennytm
Dylan DPC [Thu, 6 May 2021 22:38:38 +0000 (00:38 +0200)]
Rollup merge of #84755 - jyn514:core-links, r=kennytm

Allow using `core::` in intra-doc links within core itself

I came up with this idea ages ago, but rustdoc used to ICE on it. Now it doesn't.

Helps with https://github.com/rust-lang/rust/issues/73445. Doesn't fix it completely since `extern crate self as std;` in std still gives strange errors.

3 years agoRollup merge of #84734 - tmandry:compiletest-needs-unwind, r=Mark-Simulacrum
Dylan DPC [Thu, 6 May 2021 22:38:37 +0000 (00:38 +0200)]
Rollup merge of #84734 - tmandry:compiletest-needs-unwind, r=Mark-Simulacrum

Add `needs-unwind` and beginning of support for testing `panic=abort` std to compiletest

For the Fuchsia platform we build libstd with `panic=abort` and would like a way to run tests with that enabled. This adds low-level support for this directly to compiletest.

In the future I'd like to add high-level support in rustbuild, e.g. having target-specific flags that allow configuring a panic strategy. (Side note: It would be nice if we could also build multiple configurations for the same target, but I'm getting ahead of myself.)

This plus #84500 have everything that's needed to get ui tests passing on fuchsia targets.

Part of #84766. Note that this change only includes the header on tests which need an unwinder to _build_, not those which need it to _run_.

r? ````@Mark-Simulacrum````

3 years agoRollup merge of #84728 - camelid:sized-param-sugg-test, r=Mark-Simulacrum
Dylan DPC [Thu, 6 May 2021 22:38:36 +0000 (00:38 +0200)]
Rollup merge of #84728 - camelid:sized-param-sugg-test, r=Mark-Simulacrum

Add test for suggestion to borrow unsized function parameters

Closes #82820.

This is a regression test for #82820.

This test case is included in more general tests, but I think the error
regressed because there were a bunch of other diagnostic changes in the
test that obscured this regression.

Hopefully, having a test specific to the suggestion, and running rustfix
for the test, will prevent this error from regressing in the future.

3 years agoRollup merge of #84500 - tmandry:compiletest-run-flag, r=Mark-Simulacrum
Dylan DPC [Thu, 6 May 2021 22:38:35 +0000 (00:38 +0200)]
Rollup merge of #84500 - tmandry:compiletest-run-flag, r=Mark-Simulacrum

Add --run flag to compiletest

This controls whether run-* tests actually get run.

r? ```@Mark-Simulacrum```

3 years agoRollup merge of #84409 - mzohreva:mz/tls-dtors-before-join, r=jethrogb
Dylan DPC [Thu, 6 May 2021 22:38:33 +0000 (00:38 +0200)]
Rollup merge of #84409 - mzohreva:mz/tls-dtors-before-join, r=jethrogb

Ensure TLS destructors run before thread joins in SGX

The excellent test is from ```@jethrogb```

For context see: https://github.com/rust-lang/rust/pull/83416#discussion_r617282907

3 years agoAuto merge of #84806 - Mark-Simulacrum:try-start-entry, r=cjgillot
bors [Thu, 6 May 2021 22:35:06 +0000 (22:35 +0000)]
Auto merge of #84806 - Mark-Simulacrum:try-start-entry, r=cjgillot

Streamline try_start code

This shifts some branches around and avoids interleaving parallel and
non-parallel versions of the function too much.

3 years agoAuto merge of #79930 - tgnottingham:bufwriter_performance, r=m-ou-se
bors [Thu, 6 May 2021 20:04:32 +0000 (20:04 +0000)]
Auto merge of #79930 - tgnottingham:bufwriter_performance, r=m-ou-se

Optimize BufWriter

3 years agoRemoves unneeded check of `#[no_coverage]` in mapgen
Rich Kadel [Mon, 3 May 2021 18:23:40 +0000 (11:23 -0700)]
Removes unneeded check of `#[no_coverage]` in mapgen

And adds tests to validate it still works.

There is an anticipated feature request to support a compiler flag that
only adds coverage for specific files (or perhaps mods). As I thought
about where that change would need to be supported, I realized that
checking the attribute in mapgen (for unused functions) was unnecessary.
The unused functions are only synthesized if they have MIR coverage, and
functions with the `no_coverage` attribute will not have been
instrumented with MIR coverage statements in the first place.

New tests confirm this.

Also, while adding tests, I updated resolved comments and FIXMEs in
other tests.

3 years agoRenamed compiler-flags file to name of compiler-flag: instrument-coverage
Rich Kadel [Thu, 6 May 2021 19:21:24 +0000 (12:21 -0700)]
Renamed compiler-flags file to name of compiler-flag: instrument-coverage

And redirect users from the old file name.

3 years agoUpdate coverage docs and command line help
Rich Kadel [Mon, 3 May 2021 01:25:57 +0000 (18:25 -0700)]
Update coverage docs and command line help

3 years agoAdd test for suggestion to borrow unsized function parameters
Camelid [Thu, 29 Apr 2021 23:22:31 +0000 (16:22 -0700)]
Add test for suggestion to borrow unsized function parameters

This is a regression test for #82820.

This test case is included in more general tests, but I think the error
regressed because there were a bunch of other diagnostic changes in the
test that obscured this regression.

Hopefully, having a test specific to the suggestion, and running rustfix
for the test, will prevent this error from regressing in the future.

3 years agolinker: Avoid library duplication with `/WHOLEARCHIVE`
Vadim Petrochenkov [Mon, 3 May 2021 14:04:59 +0000 (17:04 +0300)]
linker: Avoid library duplication with `/WHOLEARCHIVE`

3 years agoCoverage instruments closure bodies in macros (not the macro body)
Rich Kadel [Tue, 4 May 2021 06:21:24 +0000 (23:21 -0700)]
Coverage instruments closure bodies in macros (not the macro body)

Fixes: #84884
This solution might be considered a compromise, but I think it is the
better choice.

The results in the `closure.rs` test correctly resolve all test cases
broken as described in #84884.

One test pattern (in both `closure_macro.rs` and
`closure_macro_async.rs`) was also affected, and removes coverage
statistics for the lines inside the closure, because the closure
includes a macro. (The coverage remains at the callsite of the macro, so
we lose some detail, but there isn't a perfect choice with macros.

Often macro implementations are split across the macro and the callsite,
and there doesn't appear to be a single "right choice" for which body
should be covered. For the current implementation, we can't do both.

The callsite is most likely to be the preferred site for coverage.

I applied this fix to all `MacroKinds`, not just `Bang`.

I'm trying to resolve an issue of lost coverage in a
`MacroKind::Attr`-based, function-scoped macro. Instead of only
searching for a body_span that is "not a function-like macro" (that is,
MacroKind::Bang), I'm expanding this to all `MacroKind`s. Maybe I should
expand this to `ExpnKind::Desugaring` and `ExpnKind::AstPass` (or
subsets, depending on their sub-kinds) as well, but I'm not sure that's
a good idea.

I'd like to add a test of the `Attr` macro on functions, but I need time
to figure out how to constract a good, simple example without external
crate dependencies. For the moment, all tests still work as expected (no
change), this new commit shouldn't have a negative affect, and more
importantly, I believe it will have a positive effect. I will try to
confirm this.

3 years agoAuto merge of #84559 - jackh726:issue-84398, r=nikomatsakis
bors [Thu, 6 May 2021 17:42:32 +0000 (17:42 +0000)]
Auto merge of #84559 - jackh726:issue-84398, r=nikomatsakis

Deduplicate ParamCandidates with the same value except for bound vars

Fixes #84398

This is kind of a hack. I wonder if we can get other types of candidates that are the same except for bound vars. This won't be a problem with Chalk, since we don't really need to know that there are two different "candidates" if they both give the same final substitution.

r? `@nikomatsakis`

3 years agojoin_orders_after_tls_destructors: ensure thread 2 is launched before thread 1 enters...
Mohsen Zohrevandi [Thu, 6 May 2021 16:36:26 +0000 (09:36 -0700)]
join_orders_after_tls_destructors: ensure thread 2 is launched before thread 1 enters TLS destructors

3 years agorustc: Support Rust-specific features in -Ctarget-feature
Alex Crichton [Thu, 6 May 2021 15:47:55 +0000 (08:47 -0700)]
rustc: Support Rust-specific features in -Ctarget-feature

Since the beginning of time the `-Ctarget-feature` flag on the command
line has largely been passed unmodified to LLVM. Afterwards, though, the
`#[target_feature]` attribute was stabilized and some of the names in
this attribute do not match the corresponding LLVM name. This is because
Rust doesn't always want to stabilize the exact feature name in LLVM for
the equivalent functionality in Rust. This creates a situation, however,
where in Rust you'd write:

    #[target_feature(enable = "pclmulqdq")]
    unsafe fn foo() {
        // ...
    }

but on the command line you would write:

    RUSTFLAGS="-Ctarget-feature=+pclmul" cargo build --release

This difference is somewhat odd to deal with if you're a newcomer and
the situation may be made worse with upcoming features like [WebAssembly
SIMD](https://github.com/rust-lang/rust/issues/74372) which may be more
prevalent.

This commit implements a mapping to translate requests via
`-Ctarget-feature` through the same name-mapping functionality that's
present for attributes in Rust going to LLVM. This means that
`+pclmulqdq` will work on x86 targets where as previously it did not.

I've attempted to keep this backwards-compatible where the compiler will
just opportunistically attempt to remap features found in
`-Ctarget-feature`, but if there's something it doesn't understand it
gets passed unmodified to LLVM just as it was before.

3 years agoAuto merge of #84982 - Dylan-DPC:rollup-q4cbec2, r=Dylan-DPC
bors [Thu, 6 May 2021 15:19:39 +0000 (15:19 +0000)]
Auto merge of #84982 - Dylan-DPC:rollup-q4cbec2, r=Dylan-DPC

Rollup of 8 pull requests

Successful merges:

 - #83507 (Implement RFC 2951: Native link modifiers)
 - #84328 (Stablize {HashMap,BTreeMap}::into_{keys,values})
 - #84712 (Simplify chdir implementation and minimize unsafe block)
 - #84851 (:arrow_up: rust-analyzer)
 - #84923 (Only compute Obligation `cache_key` once  in `register_obligation_at`)
 - #84945 (E0583: Include secondary path in error message)
 - #84949 (Fix typo in `MaybeUninit::array_assume_init` safety comment)
 - #84950 (Revert PR 83866)

Failed merges:

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

3 years agoSort rustdoc-gui tests
Guillaume Gomez [Thu, 6 May 2021 14:51:04 +0000 (16:51 +0200)]
Sort rustdoc-gui tests

3 years agooutdated comment
lcnr [Thu, 6 May 2021 14:27:59 +0000 (16:27 +0200)]
outdated comment

3 years agoPick candidate with fewer bound vars
Jack Huey [Thu, 6 May 2021 14:19:51 +0000 (10:19 -0400)]
Pick candidate with fewer bound vars

3 years agoremove unused variant
lcnr [Thu, 6 May 2021 12:59:53 +0000 (14:59 +0200)]
remove unused variant

3 years agoRollup merge of #84950 - pietroalbini:revert-3478f83c0, r=Mark-Simulacrum
Dylan DPC [Thu, 6 May 2021 11:31:01 +0000 (13:31 +0200)]
Rollup merge of #84950 - pietroalbini:revert-3478f83c0, r=Mark-Simulacrum

Revert PR 83866

https://github.com/rust-lang/rust/pull/83866 caused multiple test failures when Rust's channel is changed from nightly to anything else. The PR will have to be landed again after the test suite is fixed.

The two kinds of test failures were:

* Rustdoc tests failed because the links in the generated HTML didn't point at nightly anymore, see https://github.com/rust-lang/rust/pull/84909#issuecomment-832028701
* Rustdoc UI tests failed because the links included in error messages didn't point at nightly anymore, see https://github.com/rust-lang/rust/pull/84909#issuecomment-832517722

r? ``@Mark-Simulacrum``
cc ``@jyn514``

3 years agoRollup merge of #84949 - sdroege:maybe-unint-typo, r=m-ou-se
Dylan DPC [Thu, 6 May 2021 11:31:00 +0000 (13:31 +0200)]
Rollup merge of #84949 - sdroege:maybe-unint-typo, r=m-ou-se

Fix typo in `MaybeUninit::array_assume_init` safety comment

And also add backticks around `MaybeUninit`.

3 years agoRollup merge of #84945 - fee1-dead:E0583-better-message, r=petrochenkov
Dylan DPC [Thu, 6 May 2021 11:30:59 +0000 (13:30 +0200)]
Rollup merge of #84945 - fee1-dead:E0583-better-message, r=petrochenkov

E0583: Include secondary path in error message

Fixes #84819.

3 years agoRollup merge of #84923 - estebank:as_cache_key-once, r=petrochenkov
Dylan DPC [Thu, 6 May 2021 11:30:58 +0000 (13:30 +0200)]
Rollup merge of #84923 - estebank:as_cache_key-once, r=petrochenkov

Only compute Obligation `cache_key` once  in `register_obligation_at`

3 years agoRollup merge of #84851 - lnicola:rust-analyzer-2021-05-03, r=jonas-schievink
Dylan DPC [Thu, 6 May 2021 11:30:56 +0000 (13:30 +0200)]
Rollup merge of #84851 - lnicola:rust-analyzer-2021-05-03, r=jonas-schievink

:arrow_up: rust-analyzer

3 years agoRollup merge of #84712 - joshtriplett:simplify-chdir, r=yaahc
Dylan DPC [Thu, 6 May 2021 11:30:55 +0000 (13:30 +0200)]
Rollup merge of #84712 - joshtriplett:simplify-chdir, r=yaahc

Simplify chdir implementation and minimize unsafe block

3 years agoRollup merge of #84328 - Folyd:stablize_map_into_keys_values, r=m-ou-se
Dylan DPC [Thu, 6 May 2021 11:30:54 +0000 (13:30 +0200)]
Rollup merge of #84328 - Folyd:stablize_map_into_keys_values, r=m-ou-se

Stablize {HashMap,BTreeMap}::into_{keys,values}

I would propose to stabilize `{HashMap,BTreeMap}::into_{keys,values}`( aka. `map_into_keys_values`).

Closes #75294.

3 years agoRollup merge of #83507 - luqmana:native-link-modifiers, r=petrochenkov
Dylan DPC [Thu, 6 May 2021 11:30:51 +0000 (13:30 +0200)]
Rollup merge of #83507 - luqmana:native-link-modifiers, r=petrochenkov

Implement RFC 2951: Native link modifiers

A first attempt at implementing https://github.com/rust-lang/rfcs/pull/2951 / https://github.com/rust-lang/compiler-team/issues/356.

Tracking Issue: https://github.com/rust-lang/rust/issues/81490

Introduces feature flags for the general syntax (`native_link_modifiers`) and each modifier (`native_link_modifiers_{as_needed,bundle,verbatim,whole_archive}`).

r? `@petrochenkov`

3 years agoAuto merge of #84965 - the8472:lazy-delayed-diagnostics, r=Mark-Simulacrum
bors [Thu, 6 May 2021 11:29:29 +0000 (11:29 +0000)]
Auto merge of #84965 - the8472:lazy-delayed-diagnostics, r=Mark-Simulacrum

lazify backtrace formatting for delayed diagnostics

Formatting backtraces causes debug info to be parsed, which is superfluous work if the delayed bugs get cleared later.

Lazifying them results in these speedups for the UI testsuite:

|       | debuginfo = 0 | debuginfo = 1 | debuginfo = 2 |
|-------|---------------|---------------|---------------|
| eager | 31.59s        | 37.55s        | 42.64s        |
| lazy  | 30.44s        | 30.86s        | 34.07s        |

3 years agoUpdate Cargo.lock
flip1995 [Thu, 6 May 2021 10:21:46 +0000 (12:21 +0200)]
Update Cargo.lock

3 years agoMerge commit 'b71f3405606d49b9735606b479c3415a0ca9810f' into clippyup
flip1995 [Thu, 6 May 2021 09:51:22 +0000 (11:51 +0200)]
Merge commit 'b71f3405606d49b9735606b479c3415a0ca9810f' into clippyup

3 years ago32bit bless
Ralf Jung [Thu, 6 May 2021 10:00:19 +0000 (12:00 +0200)]
32bit bless

3 years agoAuto merge of #7178 - flip1995:rustup, r=flip1995
bors [Thu, 6 May 2021 09:45:37 +0000 (09:45 +0000)]
Auto merge of #7178 - flip1995:rustup, r=flip1995

Rustup

r? `@ghost`

changelog: none

3 years agoBump Clippy version -> 0.1.54
flip1995 [Thu, 6 May 2021 09:32:34 +0000 (11:32 +0200)]
Bump Clippy version -> 0.1.54

3 years agoBump nightly version -> 2021-05-06
flip1995 [Thu, 6 May 2021 09:32:27 +0000 (11:32 +0200)]
Bump nightly version -> 2021-05-06

3 years agoMerge remote-tracking branch 'upstream/master' into rustup
flip1995 [Thu, 6 May 2021 09:22:33 +0000 (11:22 +0200)]
Merge remote-tracking branch 'upstream/master' into rustup

3 years agoAuto merge of #7177 - giraffate:add_a_missing_lint_to_msrv_config_doc, r=flip1995
bors [Thu, 6 May 2021 08:43:36 +0000 (08:43 +0000)]
Auto merge of #7177 - giraffate:add_a_missing_lint_to_msrv_config_doc, r=flip1995

Add a missing lint to MSRV config doc

A follow-up of https://github.com/rust-lang/rust-clippy/pull/6859.

changelog: Add a missing lint to MSRV config doc

3 years agouse CheckInAllocMsg::PointerArithmeticTest for ptr_offset error
Ralf Jung [Wed, 5 May 2021 22:16:27 +0000 (00:16 +0200)]
use CheckInAllocMsg::PointerArithmeticTest for ptr_offset error

3 years agoAuto merge of #7166 - TaKO8Ki:refactor_misc_early_module, r=llogiq
bors [Thu, 6 May 2021 07:46:52 +0000 (07:46 +0000)]
Auto merge of #7166 - TaKO8Ki:refactor_misc_early_module, r=llogiq

Refactor: arrange lints in misc_early module

This PR arranges misc_early lints so that they can be accessed more easily.
Basically, I refactored them following the instruction described in #6680.

cc: `@Y-Nak,` `@flip1995,` `@magurotuna`

changelog: Move lints in misc_early module into their own modules.

3 years agoAuto merge of #84468 - iladin:iladin/fix-84467, r=petrochenkov
bors [Thu, 6 May 2021 07:02:06 +0000 (07:02 +0000)]
Auto merge of #84468 - iladin:iladin/fix-84467, r=petrochenkov

Fix#84467 linker_args with --target=sparcv9-sun-solaris

Trying to cross-compile for sparcv9-sun-solaris
getting a error message for -zignore

Introduced when -z -ignore was seperated here
22d0ab0

No formatting done

Reproduce

``` bash
rustup target add sparcv9-sun-solaris
cargo new --bin hello && cd hello && cargo run --target=sparcv9-sun-solaris
```

config.toml

[target.sparcv9-sun-solaris]
linker = "gcc"

3 years agoAdd a missing lint to MSRV config doc
Takayuki Nakata [Thu, 6 May 2021 05:04:50 +0000 (14:04 +0900)]
Add a missing lint to MSRV config doc

3 years agoAuto merge of #84266 - QuiltOS:statically-disallow-global-oom-handling, r=Mark-Simulacrum
bors [Thu, 6 May 2021 04:41:20 +0000 (04:41 +0000)]
Auto merge of #84266 - QuiltOS:statically-disallow-global-oom-handling, r=Mark-Simulacrum

alloc: Add unstable Cfg feature `no-global_oom_handling

For certain sorts of systems, programming, it's deemed essential that
all allocation failures be explicitly handled where they occur. For
example, see Linus Torvald's opinion in [1]. Merely not calling global
panic handlers, or always `try_reserving` first (for vectors), is not
deemed good enough, because the mere presence of the global OOM handlers
is burdens static analysis.

One option for these projects to use rust would just be to skip `alloc`,
rolling their own allocation abstractions.  But this would, in my
opinion be a real shame. `alloc` has a few `try_*` methods already, and
we could easily have more. Features like custom allocator support also
demonstrate and existing to support diverse use-cases with the same
abstractions.

A natural way to add such a feature flag would a Cargo feature, but
there are currently uncertainties around how std library crate's Cargo
features may or not be stable, so to avoid any risk of stabilizing by
mistake we are going with a more low-level "raw cfg" token, which
cannot be interacted with via Cargo alone.

Note also that since there is no notion of "default cfg tokens" outside
of Cargo features, we have to invert the condition from
`global_oom_handling` to to `not(no_global_oom_handling)`. This breaks
the monotonicity that would be important for a Cargo feature (i.e.
turning on more features should never break compatibility), but it
doesn't matter for raw cfg tokens which are not intended to be
"constraint solved" by Cargo or anything else.

To support this use-case we create a new feature, "global-oom-handling",
on by default, and put the global OOM handler infra and everything else
it that depends on it behind it. By default, nothing is changed, but
users concerned about global handling can make sure it is disabled, and
be confident that all OOM handling is local and explicit.

For this first iteration, non-flat collections are outright disabled.
`Vec` and `String` don't yet have `try_*` allocation methods, but are
kept anyways since they can be oom-safely created "from parts", and we
hope to add those `try_` methods in the future.

[1]: https://lore.kernel.org/lkml/CAHk-=wh_sNLoz84AUUzuqXEsYH35u=8HV3vK-jbRbJ_B-JjGrg@mail.gmail.com/

3 years agoFix up/ignore failing ui tests on fuchsia
Tyler Mandry [Fri, 30 Apr 2021 04:02:05 +0000 (04:02 +0000)]
Fix up/ignore failing ui tests on fuchsia

3 years agoSupport multi target-rustcflags for -Zpanic-abort-tests
Tyler Mandry [Fri, 30 Apr 2021 04:01:04 +0000 (04:01 +0000)]
Support multi target-rustcflags for -Zpanic-abort-tests

I just need this until rustbuild supports -Cpanic=abort std directly.

3 years agoAdd needs-unwind to tests
Tyler Mandry [Thu, 29 Apr 2021 17:04:16 +0000 (17:04 +0000)]
Add needs-unwind to tests

3 years agocompiletest: Add --target-panic, needs-unwind
Tyler Mandry [Thu, 29 Apr 2021 16:57:58 +0000 (16:57 +0000)]
compiletest: Add --target-panic, needs-unwind

3 years agoE0583: Include secondary path in error message
Deadbeef [Wed, 5 May 2021 08:00:18 +0000 (16:00 +0800)]
E0583: Include secondary path in error message

3 years agoImplement RFC 2951: Native link modifiers
Luqman Aden [Thu, 25 Mar 2021 04:45:09 +0000 (21:45 -0700)]
Implement RFC 2951: Native link modifiers

This commit implements both the native linking modifiers infrastructure
as well as an initial attempt at the individual modifiers from the RFC.
It also introduces a feature flag for the general syntax along with
individual feature flags for each modifier.

3 years agoAuto merge of #7175 - camsteffen:filter-map-none, r=Manishearth
bors [Wed, 5 May 2021 22:57:05 +0000 (22:57 +0000)]
Auto merge of #7175 - camsteffen:filter-map-none, r=Manishearth

Fix unnecessary_filter_map false positive

changelog: Fix an [`unnecessary_filter_map`] false positive

Fixes #6804

3 years agoFix unnecessary_filter_map false positive
Cameron Steffen [Wed, 5 May 2021 21:05:16 +0000 (16:05 -0500)]
Fix unnecessary_filter_map false positive

3 years agoAuto merge of #7174 - camsteffen:eval-order-async, r=flip1995
bors [Wed, 5 May 2021 21:18:05 +0000 (21:18 +0000)]
Auto merge of #7174 - camsteffen:eval-order-async, r=flip1995

Fix eval_order_dependence async false positive

changelog: Fix [`eval_order_dependence`] false positive in async code

Fixes #6925

3 years agolazify backtrace formatting for delayed diagnostics
The8472 [Wed, 5 May 2021 20:52:58 +0000 (22:52 +0200)]
lazify backtrace formatting for delayed diagnostics

This defers backtrace formatting to the point where we
actually want to flush delayed diagnostics. If they are discarded
before that point then we can avoid invoking the backtrace formatting
machinery which will parse debug info and symbol tables.

for debuginfo=2 this leads to a 20% walltime reduction of the UI testsuite

3 years agoalloc: Add unstable Cfg feature `no-global_oom_handling`
John Ericson [Sat, 17 Apr 2021 00:18:04 +0000 (20:18 -0400)]
alloc: Add unstable Cfg feature `no-global_oom_handling`

For certain sorts of systems, programming, it's deemed essential that
all allocation failures be explicitly handled where they occur. For
example, see Linus Torvald's opinion in [1]. Merely not calling global
panic handlers, or always `try_reserving` first (for vectors), is not
deemed good enough, because the mere presence of the global OOM handlers
is burdens static analysis.

One option for these projects to use rust would just be to skip `alloc`,
rolling their own allocation abstractions.  But this would, in my
opinion be a real shame. `alloc` has a few `try_*` methods already, and
we could easily have more. Features like custom allocator support also
demonstrate and existing to support diverse use-cases with the same
abstractions.

A natural way to add such a feature flag would a Cargo feature, but
there are currently uncertainties around how std library crate's Cargo
features may or not be stable, so to avoid any risk of stabilizing by
mistake we are going with a more low-level "raw cfg" token, which
cannot be interacted with via Cargo alone.

Note also that since there is no notion of "default cfg tokens" outside
of Cargo features, we have to invert the condition from
`global_oom_handling` to to `not(no_global_oom_handling)`. This breaks
the monotonicity that would be important for a Cargo feature (i.e.
turning on more features should never break compatibility), but it
doesn't matter for raw cfg tokens which are not intended to be
"constraint solved" by Cargo or anything else.

To support this use-case we create a new feature, "global-oom-handling",
on by default, and put the global OOM handler infra and everything else
it that depends on it behind it. By default, nothing is changed, but
users concerned about global handling can make sure it is disabled, and
be confident that all OOM handling is local and explicit.

For this first iteration, non-flat collections are outright disabled.
`Vec` and `String` don't yet have `try_*` allocation methods, but are
kept anyways since they can be oom-safely created "from parts", and we
hope to add those `try_` methods in the future.

[1]: https://lore.kernel.org/lkml/CAHk-=wh_sNLoz84AUUzuqXEsYH35u=8HV3vK-jbRbJ_B-JjGrg@mail.gmail.com/

3 years agoRemote test for alloc `extern_crate` feature.
John Ericson [Wed, 5 May 2021 20:20:39 +0000 (16:20 -0400)]
Remote test for alloc `extern_crate` feature.

This functionality was removed in
45bf1ed1a1123122ded05ae2eedaf0f190e52726, but the test was left by
mistake.

3 years agoFix eval_order_dependence async false positive
Cameron Steffen [Wed, 5 May 2021 20:02:47 +0000 (15:02 -0500)]
Fix eval_order_dependence async false positive

3 years agoImprove eval_order_dependence output
Cameron Steffen [Wed, 5 May 2021 19:44:32 +0000 (14:44 -0500)]
Improve eval_order_dependence output

3 years agoAuto merge of #84956 - RalfJung:rollup-m70mx2n, r=RalfJung
bors [Wed, 5 May 2021 17:45:41 +0000 (17:45 +0000)]
Auto merge of #84956 - RalfJung:rollup-m70mx2n, r=RalfJung

Rollup of 11 pull requests

Successful merges:

 - #83553 (Update `ptr` docs with regards to `ptr::addr_of!`)
 - #84183 (Update RELEASES.md for 1.52.0)
 - #84709 (Add doc alias for `chdir` to `std::env::set_current_dir`)
 - #84803 (Reduce duplication in `impl_dep_tracking_hash` macros)
 - #84808 (Account for unsatisfied bounds in E0599)
 - #84843 (use else if in std library )
 - #84865 (rustbuild: Pass a `threads` flag that works to windows-gnu lld)
 - #84878 (Clarify documentation for `[T]::contains`)
 - #84882 (platform-support: Center the contents of the `std` and `host` columns)
 - #84903 (Remove `rustc_middle::mir::interpret::CheckInAllocMsg::NullPointerTest`)
 - #84913 (Do not ICE on invalid const param)

Failed merges:

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

3 years agoAuto merge of #7170 - flip1995:revert_drop_order, r=llogiq
bors [Wed, 5 May 2021 17:33:46 +0000 (17:33 +0000)]
Auto merge of #7170 - flip1995:revert_drop_order, r=llogiq

Fix stack overflow issue in `redundant_pattern_matching`

Fixes #7169

~~cc `@Jarcho` Since tomorrow is release day and we need to get this also fixed in beta, I'll just revert the PR instead of looking into the root issue. Your changes are good, so if you have an idea what could cause this stack overflow and know how to fix it, please open a PR that reverts this revert with a fix.~~

r? `@llogiq`

changelog: none (fixes stack overflow, but this was introduced in this release cycle)

3 years agoAuto merge of #6887 - xFrednet:4310-internal-metadata-extraction-lint, r=xFrednet
bors [Wed, 5 May 2021 17:11:14 +0000 (17:11 +0000)]
Auto merge of #6887 - xFrednet:4310-internal-metadata-extraction-lint, r=xFrednet

A metadata collection monster

This PR introduces a metadata collection lint as discussed in #4310. It currently collects:
* The lint ID
* The lint declaration file and location (for #1303)
* The lint group
* The documentation
* The applicability (if resolvable)
* If the suggestion is a multi-part-suggestion

This data has a slightly different structure than the current [lints.json](https://github.com/rust-lang/rust-clippy/blob/gh-pages/master/lints.json) and doesn't include depreciated lints yet. I plan to adapt the website to the new format and include depreciated lints in a follow-up PR :). The current collected json looks like this: [metadata_collection.json](https://gist.github.com/xFrednet/6b9e2c3f725f476ba88db9563f67e119)

The entire implementation is guarded behind the `metadata-collector-lint` feature and the `ENABLE_METADATA_COLLECTION` environment value to prevent default collection. You can test the implementation via:
```sh
$ ENABLE_METADATA_COLLECTION=1 cargo test --test dogfood --all-features
```

changelog: none

---

The size of this PR sadly also grew into a small monster, sorry! I definitely plan to improve on this! And it's totally okay if you take your time with this :)

r? `@phansch`
cc: `@flip1995`

3 years agoApplying PR suggestions (mostly typos)
xFrednet [Wed, 31 Mar 2021 18:03:38 +0000 (20:03 +0200)]
Applying PR suggestions (mostly typos)
Co-authored-by: flip1995 <hello@philkrones.com>
Co-authored-by: phansch <dev@phansch.net>
3 years agoApplying PR suggestions
xFrednet [Fri, 12 Mar 2021 19:59:41 +0000 (20:59 +0100)]
Applying PR suggestions

3 years agoENABLE_METADATA_COLLECTION env-value to disable default metadata collection
xFrednet [Fri, 12 Mar 2021 20:52:01 +0000 (21:52 +0100)]
ENABLE_METADATA_COLLECTION env-value to disable default metadata collection

3 years agoMetadata collection: Rounding up the implementation
xFrednet [Wed, 10 Mar 2021 22:04:12 +0000 (23:04 +0100)]
Metadata collection: Rounding up the implementation

3 years agoMetadata collection: Resolve lint from locals
xFrednet [Sat, 6 Mar 2021 00:11:41 +0000 (01:11 +0100)]
Metadata collection: Resolve lint from locals

3 years agoMetadata collection: Refining the implementation
xFrednet [Mon, 1 Mar 2021 11:25:14 +0000 (12:25 +0100)]
Metadata collection: Refining the implementation

3 years agoMetadata collection: processing emission closures (417/455)
xFrednet [Sun, 28 Feb 2021 15:11:45 +0000 (16:11 +0100)]
Metadata collection: processing emission closures (417/455)

3 years agoMetadata Collection: Collecting direct emission applicabilities (324/455)
xFrednet [Sat, 27 Feb 2021 17:39:02 +0000 (18:39 +0100)]
Metadata Collection: Collecting direct emission applicabilities (324/455)

3 years agoMetadata collection: Collecting Applicability assign values
xFrednet [Sat, 20 Feb 2021 12:50:09 +0000 (13:50 +0100)]
Metadata collection: Collecting Applicability assign values

3 years agoMetadata collection: Some refactoring for readability
xFrednet [Sat, 20 Feb 2021 12:12:30 +0000 (13:12 +0100)]
Metadata collection: Some refactoring for readability

3 years agoMetadata collection: Tracking Applicability mut borrows
xFrednet [Fri, 19 Feb 2021 23:35:28 +0000 (00:35 +0100)]
Metadata collection: Tracking Applicability mut borrows

3 years agoMetadata collection: Collecting Applicability assign values
xFrednet [Thu, 18 Feb 2021 22:40:33 +0000 (23:40 +0100)]
Metadata collection: Collecting Applicability assign values

3 years agoMetadata collection lint: Start Applicability value tracking
xFrednet [Wed, 17 Feb 2021 23:20:19 +0000 (00:20 +0100)]
Metadata collection lint: Start Applicability value tracking

3 years agoMetadata collection lint: Basic applicability collection
xFrednet [Sun, 14 Feb 2021 15:17:07 +0000 (16:17 +0100)]
Metadata collection lint: Basic applicability collection

3 years agoMetadata collection lint: Basic lint collection
xFrednet [Sun, 31 Jan 2021 13:46:09 +0000 (14:46 +0100)]
Metadata collection lint: Basic lint collection

WIP-2021-02-01

WIP-2021-02-01

WIP-2021-02-13

3 years agoUpdate highlight tests
Guillaume Gomez [Wed, 5 May 2021 16:13:47 +0000 (18:13 +0200)]
Update highlight tests

3 years agoRollup merge of #84913 - estebank:issue-84831, r=varkor
Ralf Jung [Wed, 5 May 2021 15:52:29 +0000 (17:52 +0200)]
Rollup merge of #84913 - estebank:issue-84831, r=varkor

Do not ICE on invalid const param

When encountering a path that can't have generics, do not call
`generics_of`. This would happen when writing something like
`path::this_is_a_mod<const_val>`.

Fix #84831.

3 years agoRollup merge of #84903 - hyd-dev:dead-check-in-alloc-msg, r=RalfJung
Ralf Jung [Wed, 5 May 2021 15:52:28 +0000 (17:52 +0200)]
Rollup merge of #84903 - hyd-dev:dead-check-in-alloc-msg, r=RalfJung

Remove `rustc_middle::mir::interpret::CheckInAllocMsg::NullPointerTest`

Removing it per https://github.com/rust-lang/rust/pull/84842#discussion_r625589674: it's a dead enum variant.

Note that `PointerArithmeticTest` also seems dead:
```
$ rg -F PointerArithmeticTest -C5
compiler/rustc_middle/src/mir/interpret/error.rs
169-
170-/// Details of why a pointer had to be in-bounds.
171-#[derive(Debug, Copy, Clone, TyEncodable, TyDecodable, HashStable)]
172-pub enum CheckInAllocMsg {
173-    MemoryAccessTest,
174:    PointerArithmeticTest,
175-    InboundsTest,
176-}
177-
178-impl fmt::Display for CheckInAllocMsg {
179-    /// When this is printed as an error the context looks like this
--
182-        write!(
183-            f,
184-            "{}",
185-            match *self {
186-                CheckInAllocMsg::MemoryAccessTest => "memory access",
187:                CheckInAllocMsg::PointerArithmeticTest => "pointer arithmetic",
188-                CheckInAllocMsg::InboundsTest => "inbounds test",
189-            }
190-        )
191-    }
192-}
```
Not sure if that is also desirable to be removed, however.

3 years agoRollup merge of #84882 - joshtriplett:platform-support-formatting, r=Dylan-DPC
Ralf Jung [Wed, 5 May 2021 15:52:27 +0000 (17:52 +0200)]
Rollup merge of #84882 - joshtriplett:platform-support-formatting, r=Dylan-DPC

platform-support: Center the contents of the `std` and `host` columns

Minor formatting improvement.

3 years agoRollup merge of #84878 - jimblandy:contains-doc-fix, r=joshtriplett
Ralf Jung [Wed, 5 May 2021 15:52:26 +0000 (17:52 +0200)]
Rollup merge of #84878 - jimblandy:contains-doc-fix, r=joshtriplett

Clarify documentation for `[T]::contains`

Change the documentation to correctly characterize when the suggested alternative to `contains` applies, and correctly explain why it works.

Fixes #84877

3 years agoRollup merge of #84865 - petrochenkov:llthread, r=Mark-Simulacrum
Ralf Jung [Wed, 5 May 2021 15:52:25 +0000 (17:52 +0200)]
Rollup merge of #84865 - petrochenkov:llthread, r=Mark-Simulacrum

rustbuild: Pass a `threads` flag that works to windows-gnu lld

MinGW driver for COFF LLD doesn't currently translate GNU-style `--threads=N` to native `/threads:N`, so we have to pass the option in its native form to avoid an error.

Also pass the `threads` flag to lld-link (windows-msvc lld) as well.

3 years agoRollup merge of #84843 - wcampbell0x2a:use-else-if-let, r=dtolnay
Ralf Jung [Wed, 5 May 2021 15:52:24 +0000 (17:52 +0200)]
Rollup merge of #84843 - wcampbell0x2a:use-else-if-let, r=dtolnay

use else if in std library

Decreases indentation and improves readability

3 years agoRollup merge of #84808 - estebank:issue-84769, r=petrochenkov
Ralf Jung [Wed, 5 May 2021 15:52:23 +0000 (17:52 +0200)]
Rollup merge of #84808 - estebank:issue-84769, r=petrochenkov

Account for unsatisfied bounds in E0599

Fix #84769, follow up to #84499, #83667.

3 years agoRollup merge of #84803 - jyn514:duplicate-macros, r=petrochenkov
Ralf Jung [Wed, 5 May 2021 15:52:22 +0000 (17:52 +0200)]
Rollup merge of #84803 - jyn514:duplicate-macros, r=petrochenkov

Reduce duplication in `impl_dep_tracking_hash` macros

Cherry-picked from https://github.com/rust-lang/rust/pull/84234 since it will be a while until it lands.