Commit graph

99659 commits

Author SHA1 Message Date
gnzlbg
3a6e96e8bc Allow simd_insert and simd_extract in const_fn 2019-09-25 10:28:53 +02:00
Aleksey Kladov
f60a8734e0 remove unused peekable 2019-09-25 10:41:43 +03:00
Aleksey Kladov
538437e829 move function closer to its usage 2019-09-25 10:32:04 +03:00
Aleksey Kladov
9a020186f8 remove unused parameters 2019-09-25 10:14:47 +03:00
bors
c7bc0bf82f Auto merge of #64627 - nnethercote:ObligForest-even-more, r=nikomatsakis
Even more `ObligationForest` improvements

Following on from #64545, more speed and readability improvements.

r? @nikomatsakis
2019-09-25 05:54:00 +00:00
bors
b7820b2893 Auto merge of #64754 - Centril:rollup-iwtb5xd, r=Centril
Rollup of 7 pull requests

Successful merges:

 - #64324 (rustc: Fix mixing crates with different `share_generics`)
 - #64428 (Error explanation e0524)
 - #64481 (A more explanatory thread local storage panic message)
 - #64599 (Rustdoc render async function re-export)
 - #64743 (Update cargo)
 - #64746 (Remove blanket silencing of "type annotation needed" errors)
 - #64753 (Don't emit explain with json short messages.)

Failed merges:

r? @ghost
2019-09-25 01:49:46 +00:00
Mazdak Farrokhzad
fa6dfc995e
Rollup merge of #64753 - ehuss:json-short-explain, r=Mark-Simulacrum
Don't emit explain with json short messages.

This fixes an issue where `--error-format=json --json=diagnostic-short` would emit the "For more information about this error" message, which doesn't match the behavior of `--error-format=short` which explicitly excludes it.
2019-09-25 03:48:32 +02:00
Mazdak Farrokhzad
5ed746b552
Rollup merge of #64746 - estebank:elide-impl-trait-obligations-on-err, r=cramertj
Remove blanket silencing of "type annotation needed" errors

Remove blanket check for existence of other errors before emitting "type annotation needed" errors, and add some eager checks to avoid adding obligations when they refer to types that reference `[type error]` in order to reduce unneeded errors.

Fix #64084.
2019-09-25 03:48:30 +02:00
Mazdak Farrokhzad
66ca0eb79a
Rollup merge of #64743 - alexcrichton:update-cargo, r=nikomatsakis
Update cargo

11 commits in b6c6f685b38d523580813b0031677c2298f458ea..aa6b7e01abce30091cc594cb23a15c46cead6e24
2019-09-19 21:10:09 +0000 to 2019-09-24 17:19:12 +0000
- Fix interpretation of `--features a b` on the CLI (rust-lang/cargo#7419)
- Update env_logger requirement from 0.6.0 to 0.7.0 (rust-lang/cargo#7422)
- Update some unstable docs (rust-lang/cargo#7407)
- Fix xcompile tests. (rust-lang/cargo#7408)
- -Ztimings: Fix more scale problems. (rust-lang/cargo#7403)
- Fix some rendering issues with -Ztimings. (rust-lang/cargo#7397)
- -Ztimings: show max jobs/cpus (rust-lang/cargo#7398)
- Fix -Ztimings with doc tests. (rust-lang/cargo#7395)
- Add documentation for the -Zdoctest-xcompile feature (rust-lang/cargo#7391)
- Fix integration tests waiting for binaries to finish. (rust-lang/cargo#7394)
- Extract Platform to a separate crate. (rust-lang/cargo#7375)
2019-09-25 03:48:29 +02:00
Mazdak Farrokhzad
34067ee961
Rollup merge of #64599 - csmoe:doc_async_reexport, r=nikomatsakis
Rustdoc render async function re-export

Closes #63710
r? @nikomatsakis
2019-09-25 03:48:27 +02:00
Mazdak Farrokhzad
bc3afb76bb
Rollup merge of #64481 - tomtau:fix/tls-error-message, r=KodrAus
A more explanatory thread local storage panic message

Outside rust-std internals, TLS is usually understood as Transport Layer Security, so the existing message could be a bit puzzling when one has TLS sessions in `thread_local!`.
2019-09-25 03:48:26 +02:00
Mazdak Farrokhzad
0204f36441
Rollup merge of #64428 - GuillaumeGomez:error-explanation-E0524, r=Centril
Error explanation e0524

Part of https://github.com/rust-lang/rust/issues/61137
2019-09-25 03:48:24 +02:00
Mazdak Farrokhzad
40fae88fa8
Rollup merge of #64324 - alexcrichton:share-generics-again, r=michaelwoerister
rustc: Fix mixing crates with different `share_generics`

This commit addresses #64319 by removing the `dylib` crate type from the
list of crate type that exports generic symbols. The bug in #64319
arises because a `dylib` crate type was trying to export a symbol in an
uptream crate but it miscalculated the symbol name of the uptream
symbol. This isn't really necessary, though, since `dylib` crates aren't
that heavily used, so we can just conservatively say that the `dylib`
crate type never exports generic symbols, forcibly removing them from
the exported symbol lists if were to otherwise find them.

The fix here happens in two places:

* First is in the `local_crate_exports_generics` method, indicating that
  it's now `false` for the `Dylib` crate type. Only rlibs actually
  export generics at this point.

* Next is when we load exported symbols from upstream crate. If, for our
  compilation session, the crate may be included from a dynamic library,
  then its generic symbols are removed. When the crate was linked into a
  dynamic library its symbols weren't exported, so we can't consider
  them a candidate to link against.

Overally this should avoid situations where we incorrectly calculate the
upstream symbol names in the face of differnet `share_generics` options,
ultimately...

Closes #64319
2019-09-25 03:48:22 +02:00
Eric Huss
6d07874e88 Don't emit explain with json short messages. 2019-09-24 16:53:33 -07:00
bors
dcd473d7b5 Auto merge of #64751 - Centril:rollup-hpbmcfj, r=Centril
Rollup of 16 pull requests

Successful merges:

 - #63356 (Issue#63183: Add fs::read_dir() and ReadDir warning about iterator order + example)
 - #63934 (Fix coherence checking for impl trait in type aliases)
 - #64016 (Streamline `Compiler`)
 - #64296 (Document the unstable iter_order_by library feature)
 - #64443 (rustdoc: general cleanup)
 - #64622 (Add a cycle detector for generic `Graph`s and `mir::Body`s)
 - #64689 (Refactor macro by example)
 - #64698 (Recover on `const X = 42;` and infer type + Error Stash API)
 - #64702 (Remove unused dependencies)
 - #64717 (update mem::discriminant test to use assert_eq and assert_ne over comparison operators)
 - #64720 ( remove rtp.rs, and move rtpSpawn and RTP_ID_ERROR to libc)
 - #64721 (Fixed issue from #64447)
 - #64725 (fix one typo)
 - #64737 (fix several issues in String docs)
 - #64742 (relnotes: make compatibility section more sterile and fix rustc version)
 - #64748 (Fix #64744. Account for the Zero sub-pattern case.)

Failed merges:

r? @ghost
2019-09-24 21:46:26 +00:00
Mazdak Farrokhzad
aeb24142be
Rollup merge of #64748 - Centril:fix-64744, r=estebank
Fix #64744. Account for the Zero sub-pattern case.

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

r? @estebank
2019-09-24 23:45:37 +02:00
Mazdak Farrokhzad
c9dbaec466
Rollup merge of #64742 - pietroalbini:relnotes-fixes, r=Mark-Simulacrum
relnotes: make compatibility section more sterile and fix rustc version

r? @Mark-Simulacrum
2019-09-24 23:45:35 +02:00
Mazdak Farrokhzad
477bdcdff8
Rollup merge of #64737 - jordins:master, r=steveklabnik
fix several issues in String docs

- In some places &str was shown instead of String.
- into_bytes is the reverse of from_utf8

Fixes #63797

I've retaken the work done in this PR: https://github.com/rust-lang/rust/pull/63865 which for some reason was closed.
and just done a minor change (I hope you don't mind @sam09 ).
2019-09-24 23:45:34 +02:00
Mazdak Farrokhzad
1252e70bea
Rollup merge of #64725 - guanqun:typo-fix, r=zackmdavis
fix one typo
2019-09-24 23:45:33 +02:00
Mazdak Farrokhzad
bea19338d2
Rollup merge of #64721 - hman523:issue64447, r=estebank
Fixed issue from #64447

Did two tiny fixes. One is a micro optimization since we know that max is going to be assigned a `usize`, we do not have to worry about a possible negative number.
The other issue that was fixed is that the max from the children isn't updated correctly. Now it will use `sub_result` instead of `primary` and will properly get the needed value.
2019-09-24 23:45:31 +02:00
Mazdak Farrokhzad
e861424562
Rollup merge of #64720 - Wind-River:master, r=alexcrichton
remove rtp.rs, and move rtpSpawn and RTP_ID_ERROR to libc

r? @alexcrichton
2019-09-24 23:45:30 +02:00
Mazdak Farrokhzad
8db83a04c5
Rollup merge of #64717 - andrewbanchich:master, r=joshtriplett
update mem::discriminant test to use assert_eq and assert_ne over comparison operators

Use assert_eq and assert_ne over comparison operators.
2019-09-24 23:45:28 +02:00
Mazdak Farrokhzad
9e12827d56
Rollup merge of #64702 - sinkuu:deps, r=jonas-schievink
Remove unused dependencies
2019-09-24 23:45:27 +02:00
Mazdak Farrokhzad
0d0f753955
Rollup merge of #64698 - Centril:infer-const-with-stash, r=estebank
Recover on `const X = 42;` and infer type + Error Stash API

Here we:

1. Introduce a notion of the "error stash".

   This is a map in the `Handler` to which you can `err.stash(...)` away your diagnostics and then steal them in a later "phase" of the compiler (e.g. stash in parser, steal in typeck) to enrich them with more information that isn't available in the previous "phase".

    I believe I've covered all the bases to make sure these diagnostics are actually emitted eventually even under `#[cfg(FALSE)]` but please check my logic.

2. Recover when parsing `[const | static mut?] $ident = $expr;` which has a missing type.

    Use the "error stash" to stash away the error and later steal the error in typeck where we emit the error as `MachineApplicable` with the actual inferred type. This builds on https://github.com/rust-lang/rust/pull/62804.

cc https://github.com/rust-lang/rfcs/pull/2545

r? @estebank
2019-09-24 23:45:24 +02:00
Mazdak Farrokhzad
6a4be43212
Rollup merge of #64689 - matklad:refactor-mbe, r=petrochenkov
Refactor macro by example

This doesn't do anything useful yet, and just moves code around and restricts visibility
2019-09-24 23:45:24 +02:00
Mazdak Farrokhzad
e00bd27953
Rollup merge of #64622 - ecstatic-morse:cycle-detector, r=oli-obk
Add a cycle detector for generic `Graph`s and `mir::Body`s

Cycle detection is one way to differentiate the upcoming `const_loop` feature flag (#52000) from the `const_if_match` one (#49146). It would be possible to use the existing implementation of strongly-connected components for this but less efficient.

The ["tri-color" terminology](http://www.cs.cornell.edu/courses/cs2112/2012sp/lectures/lec24/lec24-12sp.html) is common in introductory data structures and algorithms courses: black nodes are settled, grey nodes are visited, and white nodes have no state. This particular implementation is iterative and uses a well-known technique where "node settled" events are kept on the stack alongside nodes to visit. When a settled event is popped, we know that all successors of that node have been visited and themselves settled. If we encounter a successor node that has been visited (is on the stack) but not yet settled, we have found a cycle.

r? @eddyb
2019-09-24 23:45:22 +02:00
Mazdak Farrokhzad
4a58b14db5
Rollup merge of #64443 - Mark-Simulacrum:rustdoc-clean-1, r=GuillaumeGomez
rustdoc: general cleanup

Review should be conducted commit-by-commit.

There are some general cleanup commits in the end, which are somewhat related but can be easily split into another PR, so just let me know.
2019-09-24 23:45:20 +02:00
Mazdak Farrokhzad
e74d953bdc
Rollup merge of #64296 - KodrAus:chore/iter_order_by, r=Centril
Document the unstable iter_order_by library feature

Tracking issue: #64295

Follow-up for: #62205

References the tracking issue and adds a page to the unstable book for the new unstable `iter_order_by` feature.
2019-09-24 23:45:19 +02:00
Mazdak Farrokhzad
ad0b78d2c9
Rollup merge of #64016 - nnethercote:Compiler-fiddling, r=oli-obk
Streamline `Compiler`

A few commits to clean up `Compiler`.

r? @Zoxc
2019-09-24 23:45:17 +02:00
Mazdak Farrokhzad
94628afbef
Rollup merge of #63934 - Aaron1011:fix/impl-trait-coherence, r=nikomatsakis
Fix coherence checking for impl trait in type aliases

**UPDATE**: This PR now treats all opaque types as remote. The original description appears below, but is no longer accurate.

Fixes #63677

[RFC 2071](https://github.com/rust-lang/rfcs/pull/2071) (impl-trait-existential-types) does not explicitly state how `type_alias_impl_trait` should interact with coherence. However, there's only one choice which makes sense - coherence should look at the underlying type (i.e. the *"defining"* type of the `impl Trait`) of the type alias, just like we do for non-`impl Trait` type aliases.

Specifically, `impl Trait` type aliases that resolve to a local type should be treated like a local type with respect to coherence (e.g. `impl Trait` type aliases which resolve to a foreign type should be treated as a foreign type, and those that resolve to a local type should be treated as a local type).

Since neither inherent impls nor direct trait impl (i.e. `impl MyType` or `impl MyTrait for MyType`) are allowed for type aliases, this usually does not come up. Before we ever attempt to do coherence checking, we will have errored out if an `impl Trait` type alias was used directly in an `impl` clause.

However, during trait selection, we sometimes need to prove bounds like `T: Sized` for some type `T`. If `T` is an impl trait type alias, this requires to know the coherence behavior for `impl Trait` type aliases when we perform coherence checking.

Note: Since determining the underlying type of an `impl Trait` type alias requires us to perform body type checking, this commit causes us to type check some bodies easier than we otherwise would have. However, since this is done through a query, this shouldn't cause any problems

For completeness, I've added an additional test of the coherence-related behavior of `impl Trait` type aliases.

cc https://github.com/rust-lang/rust/issues/63063
2019-09-24 23:45:15 +02:00
Mazdak Farrokhzad
c623aa4a54
Rollup merge of #63356 - ali-raheem:issue#63183, r=KodrAus
Issue#63183: Add fs::read_dir() and ReadDir warning about iterator order + example

As per https://github.com/rust-lang/rust/issues/63183

Add warning about iterator order to read_dir and ReadDir, add example of explicitly ordering direntrys.
2019-09-24 23:45:13 +02:00
Mazdak Farrokhzad
7b71abdb54 Fix #64744 -- handle zero sub-pats case. 2019-09-24 22:42:45 +02:00
Aaron Hill
61cfe92a99
Add additional tests for type alias impl trait coherence 2019-09-24 15:59:02 -04:00
Esteban Küber
b7ca1c5a1e fix rebase 2019-09-24 11:55:53 -07:00
Esteban Küber
affa038c29 clean up, push silencing logic to more relevant places 2019-09-24 11:31:14 -07:00
Esteban Küber
d9ab4ff9a3 Remove blanket silencing of "type annotation needed" errors
Remove blanket check for existence of other errors before emitting
"type annotation needed" errors, and add some eager checks to avoid
adding obligations when they refer to types that reference
`[type error]` in order to reduce unneded errors.
2019-09-24 11:31:14 -07:00
Niko Matsakis
99dc545552 add a rustdoc comment to the reservation impl 2019-09-24 21:11:51 +03:00
Niko Matsakis
167ab0439e nit: update error text to cite tracking issue 2019-09-24 21:11:50 +03:00
Niko Matsakis
da60c53fa7 nit: update text to avoid "lattice specialization" term 2019-09-24 21:11:50 +03:00
Niko Matsakis
b40a64da4f remove outdated fixme 2019-09-24 21:11:50 +03:00
Niko Matsakis
68fd593a22 cite reservation impls tracking issue 2019-09-24 21:11:50 +03:00
Ariel Ben-Yehuda
5de1fafb15 improve comment 2019-09-24 21:11:50 +03:00
Ariel Ben-Yehuda
d7eb562080 add test for lattice specialization 2019-09-24 21:11:50 +03:00
Ariel Ben-Yehuda
9196b2d0c8 add error message for case 2019-09-24 21:11:50 +03:00
Ariel Ben-Yehuda
b5665e811b improve comments 2019-09-24 21:11:50 +03:00
Ariel Ben-Yehuda
1ec7ae14fa resolve the rustc_reservation_impl attribute in 1 place 2019-09-24 21:11:50 +03:00
Ariel Ben-Yehuda
9a94ecde04 improve and add tests 2019-09-24 21:11:50 +03:00
Ariel Ben-Yehuda
5d79e8c4c9 reserve impl<T> From<!> for T
this is necessary for never-type stabilization
2019-09-24 21:11:50 +03:00
Alex Crichton
5c5e3facab Update cargo
11 commits in b6c6f685b38d523580813b0031677c2298f458ea..aa6b7e01abce30091cc594cb23a15c46cead6e24
2019-09-19 21:10:09 +0000 to 2019-09-24 17:19:12 +0000
- Fix interpretation of `--features a b` on the CLI (rust-lang/cargo#7419)
- Update env_logger requirement from 0.6.0 to 0.7.0 (rust-lang/cargo#7422)
- Update some unstable docs (rust-lang/cargo#7407)
- Fix xcompile tests. (rust-lang/cargo#7408)
- -Ztimings: Fix more scale problems. (rust-lang/cargo#7403)
- Fix some rendering issues with -Ztimings. (rust-lang/cargo#7397)
- -Ztimings: show max jobs/cpus (rust-lang/cargo#7398)
- Fix -Ztimings with doc tests. (rust-lang/cargo#7395)
- Add documentation for the -Zdoctest-xcompile feature (rust-lang/cargo#7391)
- Fix integration tests waiting for binaries to finish. (rust-lang/cargo#7394)
- Extract Platform to a separate crate. (rust-lang/cargo#7375)
2019-09-24 11:06:56 -07:00
Pietro Albini
e8cf46e909
relnotes: make compatibility section more sterile and fix rustc version 2019-09-24 18:36:01 +02:00