]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoAuto merge of #73235 - Dylan-DPC:rollup-zp8oxhg, r=Dylan-DPC
bors [Thu, 11 Jun 2020 11:17:37 +0000 (11:17 +0000)]
Auto merge of #73235 - Dylan-DPC:rollup-zp8oxhg, r=Dylan-DPC

Rollup of 11 pull requests

Successful merges:

 - #72380 (Fix `is_const_context`, update `check_for_cast`)
 - #72941 (Ensure stack when building MIR for matches)
 - #72976 (Clean up E0642 explanation)
 - #73080 (doc/rustdoc: Fix incorrect external_doc feature flag)
 - #73155 (save_analysis: better handle paths and functions signature)
 - #73164 (Add new E0762 error code)
 - #73172 (Fix more clippy warnings)
 - #73181 (Automatically prioritize unsoundness issues)
 - #73183 (Support proc macros in intra doc link resolution)
 - #73208 (Fix doctest template)
 - #73219 (x.py: with --json-output, forward cargo's JSON)

Failed merges:

r? @ghost

4 years agoRollup merge of #73219 - RalfJung:cargo-json, r=Mark-Simulacrum
Dylan DPC [Thu, 11 Jun 2020 11:16:12 +0000 (13:16 +0200)]
Rollup merge of #73219 - RalfJung:cargo-json, r=Mark-Simulacrum

x.py: with --json-output, forward cargo's JSON

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

r? @Mark-Simulacrum

4 years agoRollup merge of #73208 - qm3ster:patch-1, r=Amanieu
Dylan DPC [Thu, 11 Jun 2020 11:16:10 +0000 (13:16 +0200)]
Rollup merge of #73208 - qm3ster:patch-1, r=Amanieu

Fix doctest template

`saturating_add` example was not parameterized, but passed because the `u8` would saturate successfully

4 years agoRollup merge of #73183 - Manishearth:intra-doc-macro, r=GuillaumeGomez
Dylan DPC [Thu, 11 Jun 2020 11:16:08 +0000 (13:16 +0200)]
Rollup merge of #73183 - Manishearth:intra-doc-macro, r=GuillaumeGomez

Support proc macros in intra doc link resolution

The feature was written pre-proc macro resolution, so it only supported the wacky MBE resolution rules. This adds support for proc macros as well.

cc @GuillaumeGomez

Fixes #73173

4 years agoRollup merge of #73181 - LeSeulArtichaut:patch-1, r=spastorino
Dylan DPC [Thu, 11 Jun 2020 11:16:06 +0000 (13:16 +0200)]
Rollup merge of #73181 - LeSeulArtichaut:patch-1, r=spastorino

Automatically prioritize unsoundness issues

r? @spastorino cc @Mark-Simulacrum @rust-lang/wg-prioritization

4 years agoRollup merge of #73172 - matthiaskrgr:cl9ppy, r=Dylan-DPC
Dylan DPC [Thu, 11 Jun 2020 11:16:04 +0000 (13:16 +0200)]
Rollup merge of #73172 - matthiaskrgr:cl9ppy, r=Dylan-DPC

Fix more clippy warnings

Fixes more of:

clippy::unused_unit
clippy::op_ref
clippy::useless_format
clippy::needless_return
clippy::useless_conversion
clippy::bind_instead_of_map
clippy::into_iter_on_ref
clippy::redundant_clone
clippy::nonminimal_bool
clippy::redundant_closure
clippy::option_as_ref_deref
clippy::len_zero
clippy::iter_cloned_collect
clippy::filter_next

r? @Dylan-DPC

4 years agoRollup merge of #73164 - GuillaumeGomez:add-e0761, r=petrochenkov
Dylan DPC [Thu, 11 Jun 2020 11:16:02 +0000 (13:16 +0200)]
Rollup merge of #73164 - GuillaumeGomez:add-e0761, r=petrochenkov

Add new E0762 error code

4 years agoRollup merge of #73155 - marmeladema:save-analysis-various-fixes, r=Xanewok
Dylan DPC [Thu, 11 Jun 2020 11:16:00 +0000 (13:16 +0200)]
Rollup merge of #73155 - marmeladema:save-analysis-various-fixes, r=Xanewok

save_analysis: better handle paths and functions signature

This should improve slightly some possible regressions due to hir rework.

r? @Xanewok

4 years agoRollup merge of #73080 - ertos-rs:sean.wilson/devel/external_doc-ref-fix, r=ollie27
Dylan DPC [Thu, 11 Jun 2020 11:15:58 +0000 (13:15 +0200)]
Rollup merge of #73080 - ertos-rs:sean.wilson/devel/external_doc-ref-fix, r=ollie27

doc/rustdoc: Fix incorrect external_doc feature flag

4 years agoRollup merge of #72976 - GuillaumeGomez:cleanup-e0642, r=Dylan-DPC
Dylan DPC [Thu, 11 Jun 2020 11:15:57 +0000 (13:15 +0200)]
Rollup merge of #72976 - GuillaumeGomez:cleanup-e0642, r=Dylan-DPC

Clean up E0642 explanation

r? @Dylan-DPC

4 years agoRollup merge of #72941 - nagisa:ensure-stack-for-match, r=oli-obk
Dylan DPC [Thu, 11 Jun 2020 11:15:54 +0000 (13:15 +0200)]
Rollup merge of #72941 - nagisa:ensure-stack-for-match, r=oli-obk

Ensure stack when building MIR for matches

In particular matching on complex types such as strings will cause
deep recursion to happen.

Fixes #72933

r? @matthewjasper @oli-obk

4 years agoRollup merge of #72380 - lcnr:const_context, r=estebank
Dylan DPC [Thu, 11 Jun 2020 11:15:53 +0000 (13:15 +0200)]
Rollup merge of #72380 - lcnr:const_context, r=estebank

Fix `is_const_context`, update `check_for_cast`

A better version of #71477

Adds `fn enclosing_body_owner` and uses it in `is_const_context`.
`is_const_context` now uses the same mechanism as `mir_const_qualif` as it was previously incorrect.
Renames `is_const_context` to `is_inside_const_context`.

I also updated `check_for_cast` in the second commit, so r? @estebank

(I removed one lvl of indentation, so it might be easier to review by hiding whitespace changes)

4 years agoAuto merge of #71896 - spastorino:existential-assoc-types-variance, r=nikomatsakis
bors [Thu, 11 Jun 2020 04:58:48 +0000 (04:58 +0000)]
Auto merge of #71896 - spastorino:existential-assoc-types-variance, r=nikomatsakis

Relate existential associated types with variance Invariant

Fixes #71550 #72315

r? @nikomatsakis

The test case reported in that issue now errors with the following message ...

```
error[E0495]: cannot infer an appropriate lifetime for lifetime parameter 'a in function call due to conflicting requirements
  --> /tmp/test.rs:25:5
   |
25 |     bad(&Bar(PhantomData), x)
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
   |
note: first, the lifetime cannot outlive the lifetime `'a` as defined on the function body at 24:11...
  --> /tmp/test.rs:24:11
   |
24 | fn extend<'a, T>(x: &'a T) -> &'static T {
   |           ^^
note: ...so that reference does not outlive borrowed content
  --> /tmp/test.rs:25:28
   |
25 |     bad(&Bar(PhantomData), x)
   |                            ^
   = note: but, the lifetime must be valid for the static lifetime...
note: ...so that the types are compatible
  --> /tmp/test.rs:25:9
   |
25 |     bad(&Bar(PhantomData), x)
   |         ^^^^^^^^^^^^^^^^^
   = note: expected  `&'static T`
              found  `&T`

error: aborting due to previous error

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

I could also add that test case if we want to have a weaponized one too.

4 years agoUpdate src/libcore/num/mod.rs
Amanieu d'Antras [Thu, 11 Jun 2020 04:21:15 +0000 (05:21 +0100)]
Update src/libcore/num/mod.rs

Co-authored-by: lzutao <taolzu@gmail.com>
4 years agoAuto merge of #73198 - ehuss:update-cargo, r=ehuss
bors [Thu, 11 Jun 2020 01:27:03 +0000 (01:27 +0000)]
Auto merge of #73198 - ehuss:update-cargo, r=ehuss

Update cargo

15 commits in 40ebd52206e25c7a576ee42c137cc06a745a167a..1ec223effbbbf9fddd3453cdcae3a96a967608eb
2020-06-01 22:35:00 +0000 to 2020-06-09 20:03:14 +0000
- Default values for `readme` if not specified (rust-lang/cargo#8277)
- Fix tree completions. (rust-lang/cargo#8342)
- Support `{prefix}` and `{lowerprefix}` markers in `config.json` `dl` key (rust-lang/cargo#8267)
- Add environment variables to identify the binary and crate name (rust-lang/cargo#8270)
- Bump to 0.47.0, update changelog (rust-lang/cargo#8336)
- Nits: Remove unneeded mut and loop (rust-lang/cargo#8334)
- 1.45 beta backports (rust-lang/cargo#8331)
- Better error message when passing in relative path to Workspace::new (rust-lang/cargo#8321)
- Don't hash executable filenames on apple platforms. (rust-lang/cargo#8329)
- fix clippy warnings (rust-lang/cargo#8324)
- Require latest libgit2 to pull in bugfixes (rust-lang/cargo#8320)
- Fix an accidental raw access of field (rust-lang/cargo#8319)
- Use mem::take to replace with Default values (rust-lang/cargo#8314)
- Allow Windows dylibs without dll suffix. (rust-lang/cargo#8310)
- Show alias in help message (rust-lang/cargo#8307)

4 years agoAuto merge of #73206 - Dylan-DPC:rollup-rha9g8q, r=Dylan-DPC
bors [Wed, 10 Jun 2020 22:01:37 +0000 (22:01 +0000)]
Auto merge of #73206 - Dylan-DPC:rollup-rha9g8q, r=Dylan-DPC

Rollup of 9 pull requests

Successful merges:

 - #72706 (Add windows group to triagebot)
 - #72789 (resolve: Do not suggest imports from the same module in which we are resolving)
 - #72890 (improper ctypes: normalize return types and transparent structs)
 - #72897 (normalize adt fields during structural match checking)
 - #73005 (Don't create impl candidates when obligation contains errors)
 - #73023 (Remove noisy suggestion of hash_map )
 - #73070 (Add regression test for const generic ICE in #72819)
 - #73157 (Don't lose empty `where` clause when pretty-printing)
 - #73184 (Reoder order in which MinGW libs are linked to fix recent breakage)

Failed merges:

r? @ghost

4 years agoAuto merge of #73213 - ehuss:fix-emsdk, r=Mark-Simulacrum
bors [Wed, 10 Jun 2020 18:02:34 +0000 (18:02 +0000)]
Auto merge of #73213 - ehuss:fix-emsdk, r=Mark-Simulacrum

Fix emcc failure for wasm32.

The wasm32 job is currently failing on CI with the error `ERROR: llc executable not found at /usr/bin/llc`.  The issue is that https://github.com/emscripten-core/emsdk/pull/472 has changed how emsdk discovers its configuration.  We were relying on the global behavior that would use a configuration from the home directory.  However, it looks like emsdk is moving away from that approach.  This change adds the necessary env var for emcc to find the correct configuration.

There are a few alternate approaches this could take.  The `--no-embedded` option could be passed to `emsdk activate` to use the old behavior, but it seems like they want to move away from that.  Another option is to source `emsdk_env.sh`, which is how these env vars normally get set.  I'm not entirely sure how to do that easily in a Dockerfile, though.

4 years agox.py: with --json-output, forward cargo's JSON
Ralf Jung [Wed, 10 Jun 2020 16:59:48 +0000 (18:59 +0200)]
x.py: with --json-output, forward cargo's JSON

4 years agoAdd tests for macro@ and derive@
Manish Goregaokar [Wed, 10 Jun 2020 16:11:17 +0000 (09:11 -0700)]
Add tests for macro@ and derive@

4 years agoFix emcc failure for wasm32.
Eric Huss [Wed, 10 Jun 2020 13:02:42 +0000 (06:02 -0700)]
Fix emcc failure for wasm32.

4 years agoFix doctest template
Mihail Malo [Wed, 10 Jun 2020 10:55:40 +0000 (13:55 +0300)]
Fix doctest template

`saturating_add` example was not parameterized, but passed because the `u8` would saturate successfully

4 years agoAdd tests for E0762
Guillaume Gomez [Wed, 10 Jun 2020 09:55:50 +0000 (11:55 +0200)]
Add tests for E0762

4 years agoCreate new error code E0762 for unterminated char literals
Guillaume Gomez [Wed, 10 Jun 2020 09:53:57 +0000 (11:53 +0200)]
Create new error code E0762 for unterminated char literals

4 years agoRollup merge of #73184 - mati865:fix-mingw-libs-order, r=petrochenkov
Dylan DPC [Wed, 10 Jun 2020 09:03:51 +0000 (11:03 +0200)]
Rollup merge of #73184 - mati865:fix-mingw-libs-order, r=petrochenkov

Reoder order in which MinGW libs are linked to fix recent breakage

Recent upstream mingw-w64 changes made libmsvcrt depend on libmingwex breaking compilation in some cases when using **external** MinGW.

Applying this change to the master fixes nightly and stage{1,2} build. For stage0 one has to export `RUSTFLAGS_BOOTSTRAP='-C link-arg=-lmsvcrt'` until this PR lands in bootstrap compiler.
Therefore I'm humbly asking to also backport it to the beta and update bootstrap compiler.

4 years agoRollup merge of #73157 - Aaron1011:where-oh-where-has-my-little-span-gone, r=ecstatic...
Dylan DPC [Wed, 10 Jun 2020 09:03:49 +0000 (11:03 +0200)]
Rollup merge of #73157 - Aaron1011:where-oh-where-has-my-little-span-gone, r=ecstatic-morse

Don't lose empty `where` clause when pretty-printing

Previously, we would parse `struct Foo where;` and `struct Foo;`
identically, leading to an 'empty' `where` clause being omitted during
pretty printing. This will cause us to lose spans when proc-macros
involved, since we will have a collected `where` token that does not
appear in the pretty-printed item.

We now explicitly track the presence of a `where` token during parsing,
so that we can distinguish between `struct Foo where;` and `struct Foo;`
during pretty-printing

4 years agoRollup merge of #73070 - ayazhafiz:i/72819, r=nikomatsakis
Dylan DPC [Wed, 10 Jun 2020 09:03:47 +0000 (11:03 +0200)]
Rollup merge of #73070 - ayazhafiz:i/72819, r=nikomatsakis

Add regression test for const generic ICE in #72819

Closes #72819

4 years agoRollup merge of #73023 - ayushmishra2005:remove_noisy_suggestion, r=davidtwco
Dylan DPC [Wed, 10 Jun 2020 09:03:45 +0000 (11:03 +0200)]
Rollup merge of #73023 - ayushmishra2005:remove_noisy_suggestion, r=davidtwco

Remove noisy suggestion of hash_map

Remove noisy suggestion of hash_map #72642

fixes #72642

4 years agoRollup merge of #73005 - Aaron1011:fix/error-overflow, r=estebank
Dylan DPC [Wed, 10 Jun 2020 09:03:43 +0000 (11:03 +0200)]
Rollup merge of #73005 - Aaron1011:fix/error-overflow, r=estebank

Don't create impl candidates when obligation contains errors

Fixes #72839

In PR #72621, trait selection was modified to no longer bail out early
when an error type was encountered. This allowed us treat `ty::Error` as
`Sized`, causing us to avoid emitting a spurious "not sized" error after
a type error had already occured.

However, this means that we may now try to match an impl candidate
against the error type. Since the error type will unify with almost
anything, this can cause us to infinitely recurse (eventually triggering
an overflow) when trying to verify certain `where` clauses.

This commit causes us to skip generating any impl candidates when an
error type is involved.

4 years agoRollup merge of #72897 - lcnr:structurally-match-normalize, r=pnkfelix
Dylan DPC [Wed, 10 Jun 2020 09:03:42 +0000 (11:03 +0200)]
Rollup merge of #72897 - lcnr:structurally-match-normalize, r=pnkfelix

normalize adt fields during structural match checking

fixes #72896

currently only fixes the issue itself and compiles stage 1 libs.
I believe we have to use something else to normalize the adt fields here,
as I expect some partially resolved adts to cause problems :thinking:

stage 1 libs and the test itself pass, not sure about the rest...
Will spend some more time looking into it tomorrow.

r? @pnkfelix cc @eddyb

4 years agoRollup merge of #72890 - davidtwco:issue-66202-normalize-and-transparent-improper...
Dylan DPC [Wed, 10 Jun 2020 09:03:40 +0000 (11:03 +0200)]
Rollup merge of #72890 - davidtwco:issue-66202-normalize-and-transparent-improper-ctypes, r=varkor

improper ctypes: normalize return types and transparent structs

Fixes #66202.

See each commit individually (except the first which adds a test) for more detailed explanations on the changes made.

In summary, this PR ensures that return types are normalized before being checked for FFI-safety, and that transparent newtype wrappers are FFI-safe if the type being wrapped is FFI-safe (often true previously, but not if, after substitution, all types in a transparent newtype were zero sized).

4 years agoRollup merge of #72789 - petrochenkov:impcand, r=davidtwco
Dylan DPC [Wed, 10 Jun 2020 09:03:38 +0000 (11:03 +0200)]
Rollup merge of #72789 - petrochenkov:impcand, r=davidtwco

resolve: Do not suggest imports from the same module in which we are resolving

Based on the idea from https://github.com/rust-lang/rust/pull/72623.

4 years agoRollup merge of #72706 - spastorino:add-windows-group, r=nikomatsakis
Dylan DPC [Wed, 10 Jun 2020 09:03:36 +0000 (11:03 +0200)]
Rollup merge of #72706 - spastorino:add-windows-group, r=nikomatsakis

Add windows group to triagebot

r? @nikomatsakis

4 years agoDon't print bang diagnostics for derives
Manish Goregaokar [Wed, 10 Jun 2020 07:38:13 +0000 (00:38 -0700)]
Don't print bang diagnostics for derives

4 years agoAvoid collisions between traits and their derive macros
Manish Goregaokar [Wed, 10 Jun 2020 07:33:10 +0000 (00:33 -0700)]
Avoid collisions between traits and their derive macros

4 years agoUpdate cargo
Eric Huss [Wed, 10 Jun 2020 02:55:04 +0000 (19:55 -0700)]
Update cargo

4 years agoAuto merge of #73190 - Dylan-DPC:rollup-9wbyh4y, r=Dylan-DPC
bors [Wed, 10 Jun 2020 00:48:35 +0000 (00:48 +0000)]
Auto merge of #73190 - Dylan-DPC:rollup-9wbyh4y, r=Dylan-DPC

Rollup of 8 pull requests

Successful merges:

 - #72417 (Remove `RawVec::reserve_in_place`.)
 - #73098 (Add Item::is_fake for rustdoc)
 - #73122 (Resolve E0584 conflict)
 - #73123 (Clean up E0647 explanation)
 - #73133 (Enforce unwind invariants)
 - #73148 (Fix a typo (size of the size))
 - #73149 (typo: awailable -> available)
 - #73161 (Add mailmap entry)

Failed merges:

r? @ghost

4 years agoFix rustc-dev-guide url
Santiago Pastorino [Wed, 10 Jun 2020 00:19:26 +0000 (21:19 -0300)]
Fix rustc-dev-guide url

4 years agoAdd test for proc macro resolution in intra doc links
Manish Goregaokar [Tue, 9 Jun 2020 21:13:23 +0000 (14:13 -0700)]
Add test for proc macro resolution in intra doc links

4 years agointra-doc macro resolution should also handle proc macros
Manish Goregaokar [Tue, 9 Jun 2020 19:59:15 +0000 (12:59 -0700)]
intra-doc macro resolution should also handle proc macros

4 years agoRollup merge of #73161 - tspiteri:mailmap, r=nikomatsakis
Dylan DPC [Tue, 9 Jun 2020 23:06:35 +0000 (01:06 +0200)]
Rollup merge of #73161 - tspiteri:mailmap, r=nikomatsakis

Add mailmap entry

4 years agoRollup merge of #73149 - cuviper:awailable, r=steveklabnik
Dylan DPC [Tue, 9 Jun 2020 23:06:34 +0000 (01:06 +0200)]
Rollup merge of #73149 - cuviper:awailable, r=steveklabnik

typo: awailable -> available

4 years agoRollup merge of #73148 - DarkEld3r:patch-1, r=jonas-schievink
Dylan DPC [Tue, 9 Jun 2020 23:06:32 +0000 (01:06 +0200)]
Rollup merge of #73148 - DarkEld3r:patch-1, r=jonas-schievink

Fix a typo (size of the size)

4 years agoRollup merge of #73133 - doctorn:unwind-mir-validation, r=jonas-schievink
Dylan DPC [Tue, 9 Jun 2020 23:06:30 +0000 (01:06 +0200)]
Rollup merge of #73133 - doctorn:unwind-mir-validation, r=jonas-schievink

Enforce unwind invariants

I had a quick look at #72959. The failure message probably needs to be more detailed but I just wanted to check I got the right idea. I have no idea how to right a test for this either...

r? @jonas-schievink

Resolves #72959 (hypothetically)

4 years agoRollup merge of #73123 - GuillaumeGomez:cleanup-e0647, r=Dylan-DPC
Dylan DPC [Tue, 9 Jun 2020 23:06:29 +0000 (01:06 +0200)]
Rollup merge of #73123 - GuillaumeGomez:cleanup-e0647, r=Dylan-DPC

Clean up E0647 explanation

r? @Dylan-DPC

4 years agoRollup merge of #73122 - doctorn:issue-73116, r=varkor
Dylan DPC [Tue, 9 Jun 2020 23:06:27 +0000 (01:06 +0200)]
Rollup merge of #73122 - doctorn:issue-73116, r=varkor

Resolve E0584 conflict

Adds a new error code (`E0761`) to indicate ambiguity in module file names and an accompanying expanded description to resolve a conflict over `E0584`.

Resolves #73116

4 years agoRollup merge of #73098 - jyn514:rustdoc-is-fake, r=GuillaumeGomez
Dylan DPC [Tue, 9 Jun 2020 23:06:25 +0000 (01:06 +0200)]
Rollup merge of #73098 - jyn514:rustdoc-is-fake, r=GuillaumeGomez

Add Item::is_fake for rustdoc

I wasn't aware items _could_ be fake, so I think having a function
mentioning it could be helpful. Also, I'd need to make this change for
cross-crate intra-doc links anyway, so I figured it's better to make the
refactor separate.

4 years agoRollup merge of #72417 - nnethercote:rm-RawVec-reserve_in_place, r=Amanieu
Dylan DPC [Tue, 9 Jun 2020 23:06:23 +0000 (01:06 +0200)]
Rollup merge of #72417 - nnethercote:rm-RawVec-reserve_in_place, r=Amanieu

Remove `RawVec::reserve_in_place`.

And some related clean-ups.

r? @oli-obk

4 years agosave_analysis: fix enum reference to point to variant rather than constructor
marmeladema [Tue, 9 Jun 2020 22:06:02 +0000 (23:06 +0100)]
save_analysis: fix enum reference to point to variant rather than constructor

Fixes #61302

4 years agosave_analysis: improve pretty printing of enum
marmeladema [Tue, 9 Jun 2020 22:04:58 +0000 (23:04 +0100)]
save_analysis: improve pretty printing of enum

4 years agofix URLs, include ARM
Niko Matsakis [Tue, 9 Jun 2020 22:01:58 +0000 (18:01 -0400)]
fix URLs, include ARM

4 years agoReoder order in which MinGW libs are linked
Mateusz Mikuła [Tue, 9 Jun 2020 21:57:16 +0000 (23:57 +0200)]
Reoder order in which MinGW libs are linked

4 years agoAutomatically prioritize unsoundness issues
LeSeulArtichaut [Tue, 9 Jun 2020 20:58:32 +0000 (22:58 +0200)]
Automatically prioritize unsoundness issues

4 years agoAuto merge of #72972 - lzutao:clippy, r=Manishearth
bors [Tue, 9 Jun 2020 20:56:54 +0000 (20:56 +0000)]
Auto merge of #72972 - lzutao:clippy, r=Manishearth

Pull changes from rust-lang/rust-clippy

4 years agoFix more clippy warnings
Matthias Krüger [Tue, 9 Jun 2020 13:57:08 +0000 (15:57 +0200)]
Fix more clippy warnings

Fixes more of:

clippy::unused_unit
clippy::op_ref
clippy::useless_format
clippy::needless_return
clippy::useless_conversion
clippy::bind_instead_of_map
clippy::into_iter_on_ref
clippy::redundant_clone
clippy::nonminimal_bool
clippy::redundant_closure
clippy::option_as_ref_deref
clippy::len_zero
clippy::iter_cloned_collect
clippy::filter_next

4 years agoRelate existential associated types with variance Invariant
Santiago Pastorino [Mon, 4 May 2020 20:27:09 +0000 (17:27 -0300)]
Relate existential associated types with variance Invariant

4 years agoMerge commit 'ff0993c5e9162ddaea78e83d0f0161e68bd4ea73' into clippy
Lzu Tao [Tue, 9 Jun 2020 14:36:01 +0000 (14:36 +0000)]
Merge commit 'ff0993c5e9162ddaea78e83d0f0161e68bd4ea73' into clippy

4 years agolint: transitive FFI-safety for transparent types
David Wood [Mon, 1 Jun 2020 16:00:58 +0000 (17:00 +0100)]
lint: transitive FFI-safety for transparent types

This commit ensures that if a `repr(transparent)` newtype's only
non-zero-sized field is FFI-safe then the newtype is also FFI-safe.

Previously, ZSTs were ignored for the purposes of linting FFI-safety
in transparent structs - thus, only the single non-ZST would be checked
for FFI-safety. However, if the non-zero-sized field is a generic
parameter, and is substituted for a ZST, then the type would be
considered FFI-unsafe (as when every field is thought to be zero-sized,
the type is considered to be "composed only of `PhantomData`" which is
FFI-unsafe).

In this commit, for transparent structs, the non-zero-sized field is
identified (before any substitutions are applied, necessarily) and then
that field's type (now with substitutions) is checked for FFI-safety
(where previously it would have been skipped for being zero-sized in
this case).

To handle the case where the non-zero-sized field is a generic
parameter, which is substituted for `()` (a ZST), and is being used
as a return type - the `FfiUnsafe` result (previously `FfiPhantom`) is
caught and silenced.

Signed-off-by: David Wood <david@davidtw.co>
4 years agolint: check for unit ret type after normalization
David Wood [Mon, 1 Jun 2020 14:41:36 +0000 (15:41 +0100)]
lint: check for unit ret type after normalization

This commit moves the check that skips unit return types to after
where the return type has been normalized - therefore ensuring that
FFI-safety lints are not emitted for types which normalize to unit.

Signed-off-by: David Wood <david@davidtw.co>
4 years agoAddress comments
Nathan Corbyn [Tue, 9 Jun 2020 10:21:36 +0000 (11:21 +0100)]
Address comments

4 years agoUpdate comments
Nathan Corbyn [Tue, 9 Jun 2020 10:14:41 +0000 (11:14 +0100)]
Update comments

4 years agoAuto merge of #72114 - anyska:vtable-rename, r=nikomatsakis
bors [Tue, 9 Jun 2020 09:14:49 +0000 (09:14 +0000)]
Auto merge of #72114 - anyska:vtable-rename, r=nikomatsakis

Rename traits::Vtable to ImplSource.

Originally suggested by @eddyb.

r? @nikomatsakis

4 years agoAdd mailmap entry
Trevor Spiteri [Tue, 9 Jun 2020 08:51:15 +0000 (10:51 +0200)]
Add mailmap entry

4 years agoimproper_ctypes: add test for #66202
David Wood [Mon, 1 Jun 2020 14:34:45 +0000 (15:34 +0100)]
improper_ctypes: add test for #66202

This commit adds a test of the improper ctypes lint, checking that
return type are normalized bethat return types are normalized before
being checked for FFI-safety, and that transparent newtype wrappers
are FFI-safe if the type being wrapped is FFI-safe.

Signed-off-by: David Wood <david@davidtw.co>
4 years agoAuto merge of #73153 - ecstatic-morse:revert-71956, r=tmandry
bors [Tue, 9 Jun 2020 03:41:43 +0000 (03:41 +0000)]
Auto merge of #73153 - ecstatic-morse:revert-71956, r=tmandry

Revert #71956

...since it caused unsoundness in #73137. Also adds a reduced version of #73137 to the test suite. The addition of the `MaybeInitializedLocals` dataflow analysis has not been reverted, but it is no longer used.

Presumably there is a more targeted fix, but I'm worried that other bugs may be lurking. I'm not yet sure what the root cause of #73137 is.

This will need to get backported to beta.

r? @tmandry

4 years agoRemove noisy suggestion of hash_map #72642
Ayush Kumar Mishra [Fri, 5 Jun 2020 09:57:37 +0000 (15:27 +0530)]
Remove noisy suggestion of hash_map #72642

Fixed failing test-cases

Remove noisy suggestion of hash_map #72642

Fixed failing test-cases

4 years agoDon't lose empty `where` clause when pretty-printing
Aaron Hill [Tue, 9 Jun 2020 01:09:54 +0000 (21:09 -0400)]
Don't lose empty `where` clause when pretty-printing

Previously, we would parse `struct Foo where;` and `struct Foo;`
identically, leading to an 'empty' `where` clause being omitted during
pretty printing. This will cause us to lose spans when proc-macros
involved, since we will have a collected `where` token that does not
appear in the pretty-printed item.

We now explicitly track the presence of a `where` token during parsing,
so that we can distinguish between `struct Foo where;` and `struct Foo;`
during pretty-printing

4 years agofixup! Add regression test for const generic ICE in #72819
Ayaz Hafiz [Tue, 9 Jun 2020 01:04:41 +0000 (18:04 -0700)]
fixup! Add regression test for const generic ICE in #72819

4 years agofixup! Add regression test for const generic ICE in #72819
Ayaz Hafiz [Tue, 9 Jun 2020 00:46:28 +0000 (17:46 -0700)]
fixup! Add regression test for const generic ICE in #72819

4 years agoAuto merge of #73147 - Dylan-DPC:rollup-9saqhj5, r=Dylan-DPC
bors [Mon, 8 Jun 2020 23:52:04 +0000 (23:52 +0000)]
Auto merge of #73147 - Dylan-DPC:rollup-9saqhj5, r=Dylan-DPC

Rollup of 8 pull requests

Successful merges:

 - #71842 (doc: make impl block collapsible if it has an associated constant)
 - #72912 (Add new E0758 error code)
 - #73008 (Update RELEASES.md)
 - #73090 (Use `LocalDefId` directly in `Resolver::export_map`)
 - #73118 (Improve the wording in documentation of std::mem::drop)
 - #73124 (Removed lifetime parameters from Explanation of E0207 )
 - #73138 (Use shorthand linker strip arguments in order to support MacOS)
 - #73143 (Update books)

Failed merges:

r? @ghost

4 years agoAdd regression test for #73137
Dylan MacKenzie [Mon, 8 Jun 2020 22:01:02 +0000 (15:01 -0700)]
Add regression test for #73137

Co-authored-by: Aaron1011 <aa1ronham@gmail.com>
4 years agosave_analysis: better handle functions signature
marmeladema [Sat, 6 Jun 2020 13:21:19 +0000 (14:21 +0100)]
save_analysis: better handle functions signature

4 years agosave_analysis: better handle paths
marmeladema [Fri, 5 Jun 2020 22:07:03 +0000 (23:07 +0100)]
save_analysis: better handle paths

4 years agoRevert #71956
Dylan MacKenzie [Mon, 8 Jun 2020 21:50:39 +0000 (14:50 -0700)]
Revert #71956

4 years agoRename some identifiers in `RawVec` and `libarena`.
Nicholas Nethercote [Wed, 20 May 2020 10:45:05 +0000 (20:45 +1000)]
Rename some identifiers in `RawVec` and `libarena`.

- Use `len` more consistently for the number of elements in a vector,
  because that's the usual name.
- Use `additional` more consistently for the number of elements we want
  to add, because that's what `Vec::reserve()` uses.
- Use `cap` consistently rather than `capacity`.
- Plus a few other tweaks.

This increases consistency and conciseness.

4 years agoRemove `RawVec::reserve_in_place`.
Nicholas Nethercote [Thu, 21 May 2020 01:39:37 +0000 (11:39 +1000)]
Remove `RawVec::reserve_in_place`.

Also remove a now-unnecessary `placement` argument.

4 years agoRemove the `reserve_in_place` calls in `{Typed,Dropless}Arena::grow`.
Nicholas Nethercote [Thu, 21 May 2020 01:03:33 +0000 (11:03 +1000)]
Remove the `reserve_in_place` calls in `{Typed,Dropless}Arena::grow`.

They are pointless. No reasonable allocator will be able to satisfy a
`reserve_in_place` request that *doubles* the size of an allocation when
dealing with allocations that are 4 KiB and larger.

Just to be sure, I confirmed on Linux that the `reserve_in_place` calls
never succeed.

(Note however that the `reserve_in_place` call for `DroplessArena::grow`
did occasionally succeed prior to the off-by-one fix in the previous
commit, because we would sometimes do a `reserve_in_place` request for
the chunk's current size, which would trivially succeed!)

4 years agoFix off-by-one error in `DroplessArena::alloc_raw`.
Nicholas Nethercote [Thu, 21 May 2020 00:36:32 +0000 (10:36 +1000)]
Fix off-by-one error in `DroplessArena::alloc_raw`.

This causes unnecessary calls to `grow` when the allocation would fit
exactly in the remaining space.

4 years agotypo: awailable -> available
Josh Stone [Mon, 8 Jun 2020 20:37:58 +0000 (13:37 -0700)]
typo: awailable -> available

4 years agoRollup merge of #73143 - ehuss:update-books, r=ehuss
Dylan DPC [Mon, 8 Jun 2020 20:15:21 +0000 (22:15 +0200)]
Rollup merge of #73143 - ehuss:update-books, r=ehuss

Update books

## nomicon

3 commits in d1517d4e3f29264c5c67bce2658516bb5202c800..bfe1ab96d717d1dda50e499b360f2e2f57e1750a
2020-05-12 13:47:00 -0400 to 2020-06-05 13:19:42 -0400
- Clarify that str data must still be initialized
- Remove language-level UB for non-UTF-8 str
- fix Nomicon transmute UB

## reference

5 commits in becdca9477c9eafa96a4eea5156fe7a2730d9dd2..5d40ba5c2515caffa7790cda621239dc21ef5a72
2020-05-21 21:08:02 +0100 to 2020-06-06 20:25:36 -0700
- Add some links to Disambiguating Function Calls. (rust-lang-nursery/reference#829)
- change bash to sh as shell code blocks language indentifier (rust-lang-nursery/reference#827)
- Fix sentence mistake in array-expr.md (rust-lang-nursery/reference#826)
- removed the word "Second" form the beginning of the 2nd list item and  labelled it as `2` (rust-lang-nursery/reference#822)
- Update fn-like proc-macro invocation restrictions. (rust-lang-nursery/reference#816)

## book

14 commits in e8a4714a9d8a6136a59b8e63544e149683876e36..30cd9dfe71c446de63826bb4472627af45acc9db
2020-05-25 10:29:27 -0500 to 2020-06-07 23:07:19 -0500
- Unnecessarily long type name in Ch 13 (rust-lang/book#2362)
- Tweak example in chapter 10 (rust-lang/book#2363)
- Mention that to_lowercase isn't perfect (rust-lang/book#2364)
- fix typo in CONTRIBUTING.md (rust-lang/book#2360)
- Link German translation in appendix F (rust-lang/book#2347)
- Updates wording on Box example (rust-lang/book#2332)
- fix: match 15-24 with 15-18 (rust-lang/book#2324)
- Reword ch01-03 recap paragraph (rust-lang/book#2305)
- Remove some confusing wording. (rust-lang/book#2358)
- Clarify some wording a bit (rust-lang/book#2357)
- Update ch12-05 PowerShell note (rust-lang/book#2348)
- text -&gt; console (rust-lang/book#2352)
- Improve wording around drop (rust-lang/book#2350)
- Make some statements about crates more correct (rust-lang/book#2349)

## edition-guide

1 commits in 0a8ab5046829733eb03df0738c4fafaa9b36b348..82bec5877c77cfad530ca11095db4456d757f668
2020-05-18 08:34:23 -0500 to 2020-06-03 08:56:02 -0500
- Add stuff for Rust 1.33 (rust-lang/edition-guide#214)

4 years agoRollup merge of #73138 - eggyal:macos-linker-strip, r=petrochenkov
Dylan DPC [Mon, 8 Jun 2020 20:15:19 +0000 (22:15 +0200)]
Rollup merge of #73138 - eggyal:macos-linker-strip, r=petrochenkov

Use shorthand linker strip arguments in order to support MacOS

Per discussion from https://github.com/rust-lang/rust/issues/72110#issuecomment-636609419 onward, the current `-Z strip` options aren't supported by the MacOS linker, but I think only because it doesn't support the longhand arguments `--strip-debug` and `--strip-all`.

This PR switches to using the shorthand arguments `-s` and `-S` instead, which (I believe) are supported by all GCC linkers.

4 years agoRollup merge of #73124 - ayushmishra2005:correction_in_explanation_of_E0207, r=petroc...
Dylan DPC [Mon, 8 Jun 2020 20:15:17 +0000 (22:15 +0200)]
Rollup merge of #73124 - ayushmishra2005:correction_in_explanation_of_E0207, r=petrochenkov

Removed lifetime parameters from Explanation of E0207

Removed lifetime parameters from Explanation of E0207
Fixes #62144

4 years agoRollup merge of #73118 - alamb:alamb/doc-drop-typo, r=shepmaster
Dylan DPC [Mon, 8 Jun 2020 20:15:15 +0000 (22:15 +0200)]
Rollup merge of #73118 - alamb:alamb/doc-drop-typo, r=shepmaster

Improve the wording in documentation of std::mem::drop

I thought the original phrasing was somewhat awkward compared to rest of the (very well written) documentation, so figured I would propose a change to improve it.

4 years agoRollup merge of #73090 - marmeladema:resolver-outputs-local-def-id, r=petrochenkov
Dylan DPC [Mon, 8 Jun 2020 20:15:13 +0000 (22:15 +0200)]
Rollup merge of #73090 - marmeladema:resolver-outputs-local-def-id, r=petrochenkov

Use `LocalDefId` directly in `Resolver::export_map`

This is to avoid the final conversion from `NodeId` to `HirId`
during call to `(clone|into)_outputs`

This brings down the post-lowering uses of `NodeId` down to 2 calls to convert the `trait_map`.

cc #50928

r? @petrochenkov

4 years agoRollup merge of #73008 - tshepang:patch-1, r=nikomatsakis
Dylan DPC [Mon, 8 Jun 2020 20:15:12 +0000 (22:15 +0200)]
Rollup merge of #73008 - tshepang:patch-1, r=nikomatsakis

Update RELEASES.md

make catch_unwind line more readable

4 years agoRollup merge of #72912 - GuillaumeGomez:add-e0755, r=estebank
Dylan DPC [Mon, 8 Jun 2020 20:15:10 +0000 (22:15 +0200)]
Rollup merge of #72912 - GuillaumeGomez:add-e0755, r=estebank

Add new E0758 error code

4 years agoRollup merge of #71842 - tspiteri:doc-impl-const, r=GuillaumeGomez
Dylan DPC [Mon, 8 Jun 2020 20:15:08 +0000 (22:15 +0200)]
Rollup merge of #71842 - tspiteri:doc-impl-const, r=GuillaumeGomez

doc: make impl block collapsible if it has an associated constant

Fixes #71822.

4 years agoAuto merge of #72655 - jethrogb:sgx-lvi-hardening, r=petrochenkov
bors [Mon, 8 Jun 2020 20:10:07 +0000 (20:10 +0000)]
Auto merge of #72655 - jethrogb:sgx-lvi-hardening, r=petrochenkov

Enable LVI hardening for x86_64-fortanix-unknown-sgx

This implements mitigations for the Load Value Injection vulnerability (CVE-2020-0551) for the `x86_64-fortanix-unknown-sgx` target by enabling new LLVM passes. More information about LVI and mitigations may be found at https://software.intel.com/security-software-guidance/insights/deep-dive-load-value-injection.

This PR unconditionally enables the mitigations for `x86_64-fortanix-unknown-sgx` since there is no available hardware that doesn't require the mitigations. This may be reconsidered in the future.

* [x] This depends on https://github.com/rust-lang/compiler-builtins/pull/359/

4 years agoUpdate books
Eric Huss [Mon, 8 Jun 2020 19:01:01 +0000 (12:01 -0700)]
Update books

4 years agoAuto merge of #5692 - ebroto:5689_N_dotdot_N, r=yaahc
bors [Mon, 8 Jun 2020 17:15:45 +0000 (17:15 +0000)]
Auto merge of #5692 - ebroto:5689_N_dotdot_N, r=yaahc

reversed_empty_ranges: avoid linting N..N except in for loop arguments

changelog: [`reversed_empty_ranges`]: avoid linting N..N except in for loop arguments

r? @yaahc
Fixes #5689

4 years agoUse shorthand linker strip arguments in order to support MacOS
Alan Egerton [Mon, 8 Jun 2020 16:24:21 +0000 (17:24 +0100)]
Use shorthand linker strip arguments in order to support MacOS

4 years agoAuto merge of #5680 - ebroto:3792_let_return, r=Manishearth
bors [Mon, 8 Jun 2020 16:47:22 +0000 (16:47 +0000)]
Auto merge of #5680 - ebroto:3792_let_return, r=Manishearth

let_and_return: avoid "does not live long enough" errors

EDIT: Add #3324 to the list of fixes

<details>
<summary>Description of old impl</summary>
<br>
Avoid suggesting turning the RHS expression of the last statement into the block tail expression if a temporary borrows from a local that would be destroyed before.

This is my first incursion into MIR so there's probably room for improvement!
</details>

Avoid linting if the return type of some method or function called in the last statement has a lifetime parameter.

changelog: Fix false positive in [`let_and_return`]

Fixes #3792
Fixes #3324

4 years agoAuto merge of #73115 - RalfJung:rollup-jecowhz, r=RalfJung
bors [Mon, 8 Jun 2020 16:32:49 +0000 (16:32 +0000)]
Auto merge of #73115 - RalfJung:rollup-jecowhz, r=RalfJung

Rollup of 10 pull requests

Successful merges:

 - #72026 (Update annotate-snippets-rs to 0.8.0)
 - #72583 (impl AsRef<[T]> for vec::IntoIter<T>)
 - #72615 (Fix documentation example for gcov profiling)
 - #72761 (Added the documentation for the 'use' keyword)
 - #72799 (Add `-Z span-debug` to allow for easier debugging of proc macros)
 - #72811 (Liballoc impl)
 - #72963 (Cstring `from_raw` and `into_raw` safety precisions)
 - #73001 (Free `default()` forwarding to `Default::default()`)
 - #73075 (Add comments to `Resolve::get_module`)
 - #73092 (Clean up E0646)

Failed merges:

r? @ghost

4 years agoFix the typo (size of the size)
Stanislav Tkach [Mon, 8 Jun 2020 16:13:46 +0000 (19:13 +0300)]
Fix the typo (size of the size)

4 years agoStrengthen cleanup to cleanup check
Nathan Corbyn [Mon, 8 Jun 2020 15:04:41 +0000 (16:04 +0100)]
Strengthen cleanup to cleanup check

4 years agoRelax cleanup to cleanup check
Nathan Corbyn [Mon, 8 Jun 2020 15:00:09 +0000 (16:00 +0100)]
Relax cleanup to cleanup check

4 years agoAuto merge of #5378 - Centril:unnested-or-pats, r=flip1995,phansch
bors [Mon, 8 Jun 2020 13:49:29 +0000 (13:49 +0000)]
Auto merge of #5378 - Centril:unnested-or-pats, r=flip1995,phansch

New lint: `unnested_or_patterns`

changelog: Adds a lint `unnested_or_patterns`, suggesting `Some(0 | 2)` as opposed to `Some(0) | Some(2)`. The lint only fires on compilers capable of using `#![feature(or_patterns)]`.

- The lint is primarily encoded as a pure algorithm which to unnest or-patterns in an `ast::Pat` (`fn unnest_or_patterns`) through a `MutVisitor`. After that is done, and assuming that any change was detected, then `pprust::pat_to_string` is used to simply convert the transformed pattern into a suggestion.

- The PR introduces a module `utils::ast_utils` with a bunch of functions for spanless & nodeless equality comparisons of ASTs.

cc https://github.com/rust-lang/rust/issues/54883

4 years agoEnforce unwind invariants
Nathan Corbyn [Mon, 8 Jun 2020 12:54:20 +0000 (13:54 +0100)]
Enforce unwind invariants

4 years agoRemoved lifetime parameters from Explanation of E0207 #62144
Ayush Kumar Mishra [Mon, 8 Jun 2020 11:45:48 +0000 (17:15 +0530)]
Removed lifetime parameters from Explanation of E0207 #62144

4 years agoClean up E0647 explanation
Guillaume Gomez [Mon, 8 Jun 2020 11:02:23 +0000 (13:02 +0200)]
Clean up E0647 explanation

4 years agoResolve E0584 conflict
Nathan Corbyn [Mon, 8 Jun 2020 10:57:56 +0000 (11:57 +0100)]
Resolve E0584 conflict