Commit Graph

99426 Commits

Author SHA1 Message Date
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
Pietro Albini
e8cf46e909
relnotes: make compatibility section more sterile and fix rustc version 2019-09-24 18:36:01 +02:00
Aaron Hill
33e1dd7864
Fix coherence checking for impl trait in type aliases
Fixes #63677

RFC #2071 (impl-trait-existential-types) does not explicitly state how
impl trait type alises 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 alises which 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 forieign 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 allowd 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 easlier 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.
2019-09-24 11:14:35 -04:00
jordins
62dc7948d1 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
2019-09-24 15:25:24 +02:00
bors
6ef275e6c3 Auto merge of #63770 - oli-obk:allow_internal_unstable, r=Centril
Stabilize `str::len`, `[T]::len` and `str::as_bytes` as const fn

r? @Centril

cc @RalfJung

This also introduces a scheme for making certain feature gates legal in stabilized const fns
2019-09-24 10:58:41 +00:00
Oliver Scherer
7767e7fb16 Stabilize str::len, [T]::len, is_empty and str::as_bytes as const fn 2019-09-24 12:56:44 +02:00
bors
7fdea7a72a Auto merge of #64316 - alexcrichton:cleanup-shim, r=Mark-Simulacrum
Delete most of `src/bootstrap/bin/rustc.rs`

This commit is an attempt at deleting as much of the `rustc.rs` shim that we have in rustbuild as possible.  This shim predates `RUSTFLAGS` and is as old as rustbuild itself. While useful for quick hacks, it subverts Cargo's knowledge of `rustc`, makes it more difficult to build crates out of rustbuild, and is generally a hazard/code smell due to its architecture.

Additionally since the inception of this script we've added a number of features to Cargo such as profile overrides and `RUSTFLAGS`. This commit attempts to use these features of Cargo as much as possible to delete almost all of `src/bootstrap/bin/rustc.rs`. It's hoped that all new configuration for the Rust compiler can be codified in rustbuild rather than in this shim, allowing Cargo to have more knowledge about what's going on and making it a bit easier to reproduce builds outside of Cargo itself.

This was primarily motivated by some recent work on std-aware Cargo, and is also generally a cleanup of the script itself. This internally resulted in a number of refactorings of rustbuild itself, and the commits should be readable one-at-a-time instead of having to digest them all at once.
2019-09-24 06:41:15 +00:00
Guanqun Lu
5aa5d57808 fix one typo 2019-09-24 10:29:09 +08:00
hman523
a6da0e921b changed a line from an if else to std::cmp::max 2019-09-23 19:51:15 -05:00
hman523
fa2cfaf064 Fixed issue from #64447 2019-09-23 18:20:21 -05:00
n-salim
75ecbe2d84
Merge pull request #29 from Wind-River/cleanup
remove rtp.rs and move rtpSpawn, RTP_ID_ERROR to libc
2019-09-23 15:39:48 -07:00
Baoshan Pang
b548814a8b remove rtp.rs, and move rtpSpawn and RTP_ID_ERROR to libc 2019-09-23 15:37:18 -07:00
Dylan MacKenzie
c9e4816fe3 Add convenience function for detecting cyclic CFGs 2019-09-23 15:26:41 -07:00
Dylan MacKenzie
4fd9b9944f Add cycle detection for graphs 2019-09-23 15:26:41 -07:00
n-salim
cd88dae211
Merge pull request #26 from rust-lang/master
Sync to rust-lang/rust master
2019-09-23 14:12:26 -07:00
Baoshan
27532330e9
Merge pull request #28 from rust-lang/master
Sync to rust-lang/rust master
2019-09-23 14:09:23 -07:00
Mazdak Farrokhzad
f70665a846 cleanup librustc_errors Handler code. 2019-09-23 22:28:14 +02:00
Andrew Banchich
8acf95886b
update test
Use assert_eq and assert_ne over comparison operators.
2019-09-23 16:09:36 -04:00
Mazdak Farrokhzad
62fc4d36df stash_diagnostic: ICE in a different way 2019-09-23 19:29:02 +02:00
Alex Crichton
1a8897fd8a Fix rebase conflicts 2019-09-23 09:35:50 -07:00
Alex Crichton
b923306913 Remove --enable-extended from cross dist builder
Shouldn't have an effect on produced artifacts and otherwise is causing
issues where `-Zsave-analysis` is passed during tests but fails
compilation.
2019-09-23 09:34:44 -07:00
Alex Crichton
008ed188ce rustbuild: Pass -Zsave-analysis during tests
This is needed to ensure that the crates during a normal build are
shared with the crates during testing, otherwise they'll end up hasing
differently and we'll recompile crates like `core` during tests.
2019-09-23 09:34:44 -07:00
Alex Crichton
d8253c166b Tweak libserialize allows 2019-09-23 09:34:44 -07:00
Alex Crichton
ff6a7c77ae No need to remove target-specific RUSTFLAGS
Turns out Cargo favors RUSTFLAGS!
2019-09-23 09:34:44 -07:00
Alex Crichton
7342325dfb Add #![deny(warnings)] to internal tools 2019-09-23 09:34:44 -07:00
Alex Crichton
7b907ded0e Fix compiling libserialize tests
They've got new warnings turned on so they need more `#![allow]`
2019-09-23 09:34:44 -07:00
Alex Crichton
9b34ef643f Stylistic changes 2019-09-23 09:34:44 -07:00
Alex Crichton
160787129b Add some FIXME for future Cargo issues 2019-09-23 09:34:44 -07:00
Alex Crichton
385470b8bb Move handling of -Cprefer-dynamic into builder.rs
This logic is *super* old and can be tweaked and moved into `builder.rs`
2019-09-23 09:34:44 -07:00
Alex Crichton
b3f95f460f Move --cfg bootstrap out of rustc.rs
Instead let's do this via `RUSTFLAGS` in `builder.rs`. Currently
requires a submodule update of `stdarch` to fix a problem with previous
compilers.
2019-09-23 09:34:44 -07:00
Alex Crichton
a816fa185b Move handling of RUSTC_PARALLEL_COMPILER to compile.rs
No longer needs to live in `rustc.rs`
2019-09-23 09:34:44 -07:00
Alex Crichton
3d13f46304 Move handling of {MUSL,WASI}_ROOT to compile.rs
No longer any need for them to live in `rustc.rs`!
2019-09-23 09:34:44 -07:00
Alex Crichton
0b6766d8d7 Allow adding RUSTFLAGS after Builder::cargo
This commit changes the return type of `Builder::cargo` to return a
builder that allows dynamically adding more `RUSTFLAGS` values
after-the-fact. While not used yet, this will later be used to delete
more of `rustc.rs`
2019-09-23 09:34:44 -07:00