Commit graph

121568 commits

Author SHA1 Message Date
Dylan DPC
12e5a69fee
Rollup merge of #73080 - ertos-rs:sean.wilson/devel/external_doc-ref-fix, r=ollie27
doc/rustdoc: Fix incorrect external_doc feature flag
2020-06-11 13:15:58 +02:00
Dylan DPC
f4661e2707
Rollup merge of #72976 - GuillaumeGomez:cleanup-e0642, r=Dylan-DPC
Clean up E0642 explanation

r? @Dylan-DPC
2020-06-11 13:15:57 +02:00
Dylan DPC
adc92becf0
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
2020-06-11 13:15:54 +02:00
Dylan DPC
298467ee9a
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)
2020-06-11 13:15:53 +02:00
bors
3ddf48053e 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.
2020-06-11 04:58:48 +00:00
bors
e93cb961ba 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)
2020-06-11 01:27:03 +00:00
bors
ec42485ee9 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
2020-06-10 22:01:37 +00:00
bors
449e8eaa28 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.
2020-06-10 18:02:34 +00:00
Eric Huss
cd02052ad0 Fix emcc failure for wasm32. 2020-06-10 06:23:06 -07:00
Dylan DPC
2b8f1eccaa
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.
2020-06-10 11:03:51 +02:00
Dylan DPC
e04e3c89cc
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
2020-06-10 11:03:49 +02:00
Dylan DPC
0a77c8c295
Rollup merge of #73070 - ayazhafiz:i/72819, r=nikomatsakis
Add regression test for const generic ICE in #72819

Closes #72819
2020-06-10 11:03:47 +02:00
Dylan DPC
e1cd8c41a5
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
2020-06-10 11:03:45 +02:00
Dylan DPC
024f025934
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.
2020-06-10 11:03:43 +02:00
Dylan DPC
8addb2e684
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 🤔

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
2020-06-10 11:03:42 +02:00
Dylan DPC
fda594e6ae
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).
2020-06-10 11:03:40 +02:00
Dylan DPC
78d08a2269
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.
2020-06-10 11:03:38 +02:00
Dylan DPC
a70fb70c1f
Rollup merge of #72706 - spastorino:add-windows-group, r=nikomatsakis
Add windows group to triagebot

r? @nikomatsakis
2020-06-10 11:03:36 +02:00
Eric Huss
fdeed85355 Update cargo 2020-06-09 19:55:04 -07:00
bors
bb8674837a 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
2020-06-10 00:48:35 +00:00
Santiago Pastorino
a01485c0da
Fix rustc-dev-guide url 2020-06-09 21:19:26 -03:00
Dylan DPC
74380d712d
Rollup merge of #73161 - tspiteri:mailmap, r=nikomatsakis
Add mailmap entry
2020-06-10 01:06:35 +02:00
Dylan DPC
8a0e6e9335
Rollup merge of #73149 - cuviper:awailable, r=steveklabnik
typo: awailable -> available
2020-06-10 01:06:34 +02:00
Dylan DPC
80d60cc25e
Rollup merge of #73148 - DarkEld3r:patch-1, r=jonas-schievink
Fix a typo (size of the size)
2020-06-10 01:06:32 +02:00
Dylan DPC
161a8bf865
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)
2020-06-10 01:06:30 +02:00
Dylan DPC
4ac3efa96e
Rollup merge of #73123 - GuillaumeGomez:cleanup-e0647, r=Dylan-DPC
Clean up E0647 explanation

r? @Dylan-DPC
2020-06-10 01:06:29 +02:00
Dylan DPC
95479d4905
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
2020-06-10 01:06:27 +02:00
Dylan DPC
cbfdff7a6b
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.
2020-06-10 01:06:25 +02:00
Dylan DPC
860e6bdd2f
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
2020-06-10 01:06:23 +02:00
Niko Matsakis
e0ec3d5dc6
fix URLs, include ARM 2020-06-09 18:01:58 -04:00
Mateusz Mikuła
e237e0280b Reoder order in which MinGW libs are linked 2020-06-09 23:58:39 +02:00
bors
283522400b Auto merge of #72972 - lzutao:clippy, r=Manishearth
Pull changes from rust-lang/rust-clippy
2020-06-09 20:56:54 +00:00
Santiago Pastorino
c99164e7a1
Relate existential associated types with variance Invariant 2020-06-09 13:21:27 -03:00
Lzu Tao
41c845efd9 Merge commit 'ff0993c5e9162ddaea78e83d0f0161e68bd4ea73' into clippy 2020-06-09 14:36:01 +00:00
David Wood
d4d3d7de68
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>
2020-06-09 14:37:08 +01:00
David Wood
3e7aabb1b3
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>
2020-06-09 14:37:05 +01:00
Nathan Corbyn
9495ee21b7 Address comments 2020-06-09 11:21:36 +01:00
Nathan Corbyn
039da0b832 Update comments 2020-06-09 11:14:41 +01:00
bors
feb3536eba Auto merge of #72114 - anyska:vtable-rename, r=nikomatsakis
Rename traits::Vtable to ImplSource.

Originally suggested by @eddyb.

r? @nikomatsakis
2020-06-09 09:14:49 +00:00
Trevor Spiteri
aef6335c15 Add mailmap entry 2020-06-09 10:51:15 +02:00
David Wood
a8640cdf47
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>
2020-06-09 09:03:15 +01:00
bors
ccac43b86b 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
2020-06-09 03:41:43 +00:00
Ayush Kumar Mishra
b05555290c Remove noisy suggestion of hash_map #72642
Fixed failing test-cases

Remove noisy suggestion of hash_map #72642

Fixed failing test-cases
2020-06-09 08:49:05 +05:30
Aaron Hill
0fcea2e423
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
2020-06-08 21:09:54 -04:00
Ayaz Hafiz
2981395d0c
fixup! Add regression test for const generic ICE in #72819 2020-06-08 18:04:41 -07:00
Ayaz Hafiz
f82382af28
fixup! Add regression test for const generic ICE in #72819 2020-06-08 17:46:28 -07:00
bors
5d39f1fa29 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
2020-06-08 23:52:04 +00:00
Dylan MacKenzie
b6121a5419 Add regression test for #73137
Co-authored-by: Aaron1011 <aa1ronham@gmail.com>
2020-06-08 16:51:26 -07:00
Dylan MacKenzie
c3b0b7b68f Revert #71956 2020-06-08 14:58:37 -07:00
Nicholas Nethercote
c9cbe7e7eb 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.
2020-06-09 07:55:35 +10:00