]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoRollup merge of #62975 - ljedrz:kill_off_hir_to_node_id, r=Zoxc
Mazdak Farrokhzad [Wed, 25 Sep 2019 14:26:14 +0000 (16:26 +0200)]
Rollup merge of #62975 - ljedrz:kill_off_hir_to_node_id, r=Zoxc

Almost fully deprecate hir::map::Map.hir_to_node_id

- HirIdify `doctree::Module.id`
- HirIdify `hir::Crate.modules`
- introduce a `HirId` to `DefIndex` map in `map::Definitions`

The only last uses of `hir::map::Map.hir_to_node_id` in the compiler are:
- for the purposes of `driver::pretty` (in `map::nodes_matching_suffix`), but I don't know if we can remove `NodeId`s in there (I think when I attempted it previously there was some issue due to `HirId` not being representable with an integer)
- in `ty::query::on_disk_cache` (not sure about the purpose of this one)
- in `mir::transform::check_unsafety` (only important for error message order)

Any suggestions how to kill these off?

r? @Zoxc

4 years agoAuto merge of #64663 - jakoschiko:report-time, r=alexcrichton
bors [Wed, 25 Sep 2019 09:54:50 +0000 (09:54 +0000)]
Auto merge of #64663 - jakoschiko:report-time, r=alexcrichton

libtest: Add --report-time flag to print test execution time

Implements the flag `--report-time` to print the execution time of each executed (successful or failed) test.

Closes #46610

# Example

`cargo test -- --report-time` produces the following output to stdout:
```
running 6 tests
test tests::ignore ... ignored
test tests::noop ... ok 0.000s
test tests::should_panic ... ok 0.000s
test tests::panic_after_10millis ... FAILED 0.010s
test tests::sleep_100millis ... ok 0.100s
test tests::sleep_10secs ... ok 10.001s

failures:

---- tests::panic_after_10millis stdout ----
thread 'tests::panic_after_10millis' panicked at 'foo', src\lib.rs:31:9

failures:
    tests::panic_after_10millis

test result: FAILED. 4 passed; 1 failed; 1 ignored; 0 measured; 0 filtered out
```
`cargo test -- --report-time -Z unstable-options --format=json` produces the following output to stdout:
```
{ "type": "suite", "event": "started", "test_count": 6 }
{ "type": "test", "event": "started", "name": "tests::ignore" }
{ "type": "test", "event": "started", "name": "tests::noop" }
{ "type": "test", "event": "started", "name": "tests::panic_after_10millis" }
{ "type": "test", "event": "started", "name": "tests::should_panic" }
{ "type": "test", "name": "tests::ignore", "event": "ignored" }
{ "type": "test", "event": "started", "name": "tests::sleep_100millis" }
{ "type": "test", "name": "tests::noop", "event": "ok", "exec_time": "0.000s" }
{ "type": "test", "event": "started", "name": "tests::sleep_10secs" }
{ "type": "test", "name": "tests::should_panic", "event": "ok", "exec_time": "0.000s" }
{ "type": "test", "name": "tests::panic_after_10millis", "event": "failed", "exec_time": "0.010s", "stdout": "thread 'tests::panic_after_10millis' panicked at 'foo', src\\lib.rs:31:9\n" }
{ "type": "test", "name": "tests::sleep_100millis", "event": "ok", "exec_time": "0.101s" }
{ "type": "test", "name": "tests::sleep_10secs", "event": "ok", "exec_time": "10.000s" }
{ "type": "suite", "event": "failed", "passed": 4, "failed": 1, "allowed_fail": 0, "ignored": 1, "measured": 0, "filtered_out": 0 }
```
`cargo test -- --report-time --logfile foo.log` produces the following logfile:
```
ignored tests::ignore
ok tests::noop 0.000s
ok tests::should_panic 0.000s
failed tests::panic_after_10millis 0.010s
ok tests::sleep_100millis 0.100s
ok tests::sleep_10secs 10.001s
```

4 years agoAuto merge of #64627 - nnethercote:ObligForest-even-more, r=nikomatsakis
bors [Wed, 25 Sep 2019 05:54:00 +0000 (05:54 +0000)]
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

4 years agoAuto merge of #64754 - Centril:rollup-iwtb5xd, r=Centril
bors [Wed, 25 Sep 2019 01:49:46 +0000 (01:49 +0000)]
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

4 years agoRollup merge of #64753 - ehuss:json-short-explain, r=Mark-Simulacrum
Mazdak Farrokhzad [Wed, 25 Sep 2019 01:48:32 +0000 (03:48 +0200)]
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.

4 years agoRollup merge of #64746 - estebank:elide-impl-trait-obligations-on-err, r=cramertj
Mazdak Farrokhzad [Wed, 25 Sep 2019 01:48:30 +0000 (03:48 +0200)]
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.

4 years agoRollup merge of #64743 - alexcrichton:update-cargo, r=nikomatsakis
Mazdak Farrokhzad [Wed, 25 Sep 2019 01:48:29 +0000 (03:48 +0200)]
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)

4 years agoRollup merge of #64599 - csmoe:doc_async_reexport, r=nikomatsakis
Mazdak Farrokhzad [Wed, 25 Sep 2019 01:48:27 +0000 (03:48 +0200)]
Rollup merge of #64599 - csmoe:doc_async_reexport, r=nikomatsakis

Rustdoc render async function re-export

Closes #63710
r? @nikomatsakis

4 years agoRollup merge of #64481 - tomtau:fix/tls-error-message, r=KodrAus
Mazdak Farrokhzad [Wed, 25 Sep 2019 01:48:26 +0000 (03:48 +0200)]
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!`.

4 years agoRollup merge of #64428 - GuillaumeGomez:error-explanation-E0524, r=Centril
Mazdak Farrokhzad [Wed, 25 Sep 2019 01:48:24 +0000 (03:48 +0200)]
Rollup merge of #64428 - GuillaumeGomez:error-explanation-E0524, r=Centril

Error explanation e0524

Part of https://github.com/rust-lang/rust/issues/61137

4 years agoRollup merge of #64324 - alexcrichton:share-generics-again, r=michaelwoerister
Mazdak Farrokhzad [Wed, 25 Sep 2019 01:48:22 +0000 (03:48 +0200)]
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

4 years agoDon't emit explain with json short messages.
Eric Huss [Tue, 24 Sep 2019 23:53:33 +0000 (16:53 -0700)]
Don't emit explain with json short messages.

4 years agoAuto merge of #64751 - Centril:rollup-hpbmcfj, r=Centril
bors [Tue, 24 Sep 2019 21:46:26 +0000 (21:46 +0000)]
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

4 years agoRollup merge of #64748 - Centril:fix-64744, r=estebank
Mazdak Farrokhzad [Tue, 24 Sep 2019 21:45:37 +0000 (23:45 +0200)]
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

4 years agoRollup merge of #64742 - pietroalbini:relnotes-fixes, r=Mark-Simulacrum
Mazdak Farrokhzad [Tue, 24 Sep 2019 21:45:35 +0000 (23:45 +0200)]
Rollup merge of #64742 - pietroalbini:relnotes-fixes, r=Mark-Simulacrum

relnotes: make compatibility section more sterile and fix rustc version

r? @Mark-Simulacrum

4 years agoRollup merge of #64737 - jordins:master, r=steveklabnik
Mazdak Farrokhzad [Tue, 24 Sep 2019 21:45:34 +0000 (23:45 +0200)]
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 ).

4 years agoRollup merge of #64725 - guanqun:typo-fix, r=zackmdavis
Mazdak Farrokhzad [Tue, 24 Sep 2019 21:45:33 +0000 (23:45 +0200)]
Rollup merge of #64725 - guanqun:typo-fix, r=zackmdavis

fix one typo

4 years agoRollup merge of #64721 - hman523:issue64447, r=estebank
Mazdak Farrokhzad [Tue, 24 Sep 2019 21:45:31 +0000 (23:45 +0200)]
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.

4 years agoRollup merge of #64720 - Wind-River:master, r=alexcrichton
Mazdak Farrokhzad [Tue, 24 Sep 2019 21:45:30 +0000 (23:45 +0200)]
Rollup merge of #64720 - Wind-River:master, r=alexcrichton

 remove rtp.rs, and move rtpSpawn and RTP_ID_ERROR to libc

r? @alexcrichton

4 years agoRollup merge of #64717 - andrewbanchich:master, r=joshtriplett
Mazdak Farrokhzad [Tue, 24 Sep 2019 21:45:28 +0000 (23:45 +0200)]
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.

4 years agoRollup merge of #64702 - sinkuu:deps, r=jonas-schievink
Mazdak Farrokhzad [Tue, 24 Sep 2019 21:45:27 +0000 (23:45 +0200)]
Rollup merge of #64702 - sinkuu:deps, r=jonas-schievink

Remove unused dependencies

4 years agoRollup merge of #64698 - Centril:infer-const-with-stash, r=estebank
Mazdak Farrokhzad [Tue, 24 Sep 2019 21:45:24 +0000 (23:45 +0200)]
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

4 years agoRollup merge of #64689 - matklad:refactor-mbe, r=petrochenkov
Mazdak Farrokhzad [Tue, 24 Sep 2019 21:45:24 +0000 (23:45 +0200)]
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

4 years agoRollup merge of #64622 - ecstatic-morse:cycle-detector, r=oli-obk
Mazdak Farrokhzad [Tue, 24 Sep 2019 21:45:22 +0000 (23:45 +0200)]
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

4 years agoRollup merge of #64443 - Mark-Simulacrum:rustdoc-clean-1, r=GuillaumeGomez
Mazdak Farrokhzad [Tue, 24 Sep 2019 21:45:20 +0000 (23:45 +0200)]
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.

4 years agoRollup merge of #64296 - KodrAus:chore/iter_order_by, r=Centril
Mazdak Farrokhzad [Tue, 24 Sep 2019 21:45:19 +0000 (23:45 +0200)]
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.

4 years agoRollup merge of #64016 - nnethercote:Compiler-fiddling, r=oli-obk
Mazdak Farrokhzad [Tue, 24 Sep 2019 21:45:17 +0000 (23:45 +0200)]
Rollup merge of #64016 - nnethercote:Compiler-fiddling, r=oli-obk

Streamline `Compiler`

A few commits to clean up `Compiler`.

r? @Zoxc

4 years agoRollup merge of #63934 - Aaron1011:fix/impl-trait-coherence, r=nikomatsakis
Mazdak Farrokhzad [Tue, 24 Sep 2019 21:45:15 +0000 (23:45 +0200)]
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

4 years agoRollup merge of #63356 - ali-raheem:issue#63183, r=KodrAus
Mazdak Farrokhzad [Tue, 24 Sep 2019 21:45:13 +0000 (23:45 +0200)]
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.

4 years agoFix #64744 -- handle zero sub-pats case.
Mazdak Farrokhzad [Tue, 24 Sep 2019 20:42:45 +0000 (22:42 +0200)]
Fix #64744 -- handle zero sub-pats case.

4 years agoAdd additional tests for type alias impl trait coherence
Aaron Hill [Tue, 24 Sep 2019 14:01:14 +0000 (10:01 -0400)]
Add additional tests for type alias impl trait coherence

4 years agofix rebase
Esteban Küber [Tue, 24 Sep 2019 18:55:53 +0000 (11:55 -0700)]
fix rebase

4 years agoclean up, push silencing logic to more relevant places
Esteban Küber [Tue, 24 Sep 2019 18:28:30 +0000 (11:28 -0700)]
clean up, push silencing logic to more relevant places

4 years agoRemove blanket silencing of "type annotation needed" errors
Esteban Küber [Tue, 24 Sep 2019 18:05:49 +0000 (11:05 -0700)]
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.

4 years agoUpdate cargo
Alex Crichton [Tue, 24 Sep 2019 18:06:56 +0000 (11:06 -0700)]
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)

4 years agorelnotes: make compatibility section more sterile and fix rustc version
Pietro Albini [Tue, 24 Sep 2019 16:36:01 +0000 (18:36 +0200)]
relnotes: make compatibility section more sterile and fix rustc version

4 years agoFix coherence checking for impl trait in type aliases
Aaron Hill [Tue, 27 Aug 2019 01:32:14 +0000 (21:32 -0400)]
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.

4 years agofix several issues in String docs
jordins [Tue, 24 Sep 2019 13:25:24 +0000 (15:25 +0200)]
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

4 years agoAuto merge of #63770 - oli-obk:allow_internal_unstable, r=Centril
bors [Tue, 24 Sep 2019 10:58:41 +0000 (10:58 +0000)]
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

4 years agoStabilize `str::len`, `[T]::len`, `is_empty` and `str::as_bytes` as const fn
Oliver Scherer [Wed, 21 Aug 2019 00:23:46 +0000 (02:23 +0200)]
Stabilize `str::len`, `[T]::len`, `is_empty` and `str::as_bytes` as const fn

4 years agoAuto merge of #64316 - alexcrichton:cleanup-shim, r=Mark-Simulacrum
bors [Tue, 24 Sep 2019 06:41:15 +0000 (06:41 +0000)]
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.

4 years agobug-out asyncness query on non-local funtions
csmoe [Mon, 23 Sep 2019 17:13:11 +0000 (17:13 +0000)]
bug-out asyncness query on non-local funtions

4 years agofix one typo
Guanqun Lu [Tue, 24 Sep 2019 02:29:09 +0000 (10:29 +0800)]
fix one typo

4 years agochanged a line from an if else to std::cmp::max
hman523 [Tue, 24 Sep 2019 00:51:15 +0000 (19:51 -0500)]
changed a line from an if else to std::cmp::max

4 years agoFixed issue from #64447
hman523 [Mon, 23 Sep 2019 23:20:21 +0000 (18:20 -0500)]
Fixed issue from #64447

4 years agoMerge pull request #29 from Wind-River/cleanup
n-salim [Mon, 23 Sep 2019 22:39:48 +0000 (15:39 -0700)]
Merge pull request #29 from Wind-River/cleanup

remove rtp.rs and move rtpSpawn, RTP_ID_ERROR to libc

4 years agoremove rtp.rs, and move rtpSpawn and RTP_ID_ERROR to libc
Baoshan Pang [Mon, 23 Sep 2019 22:37:18 +0000 (15:37 -0700)]
remove rtp.rs, and move rtpSpawn and RTP_ID_ERROR to libc

4 years agoAdd convenience function for detecting cyclic CFGs
Dylan MacKenzie [Wed, 18 Sep 2019 21:53:55 +0000 (14:53 -0700)]
Add convenience function for detecting cyclic CFGs

4 years agoAdd cycle detection for graphs
Dylan MacKenzie [Wed, 18 Sep 2019 21:35:56 +0000 (14:35 -0700)]
Add cycle detection for graphs

4 years agoMerge pull request #26 from rust-lang/master
n-salim [Mon, 23 Sep 2019 21:12:26 +0000 (14:12 -0700)]
Merge pull request #26 from rust-lang/master

Sync to rust-lang/rust master

4 years agoMerge pull request #28 from rust-lang/master
Baoshan [Mon, 23 Sep 2019 21:09:23 +0000 (14:09 -0700)]
Merge pull request #28 from rust-lang/master

Sync to rust-lang/rust master

4 years agoAllow using upstream generics in a dylib crate type
Alex Crichton [Mon, 23 Sep 2019 21:01:06 +0000 (14:01 -0700)]
Allow using upstream generics in a dylib crate type

... just don't export them!

4 years agocleanup librustc_errors Handler code.
Mazdak Farrokhzad [Mon, 23 Sep 2019 20:28:14 +0000 (22:28 +0200)]
cleanup librustc_errors Handler code.

4 years agoupdate test
Andrew Banchich [Mon, 23 Sep 2019 20:09:36 +0000 (16:09 -0400)]
update test

Use assert_eq and assert_ne over comparison operators.

4 years agorustc: Fix mixing crates with different `share_generics`
Alex Crichton [Wed, 11 Sep 2019 15:08:04 +0000 (08:08 -0700)]
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

4 years agorustc: Convert `dependency_formats` to a query
Alex Crichton [Mon, 16 Sep 2019 20:34:57 +0000 (13:34 -0700)]
rustc: Convert `dependency_formats` to a query

This commit converts a field of `Session`, `dependency_formats`, into a
query of `TyCtxt`. This information then also needed to be threaded
through to other remaining portions of the linker, but it's relatively
straightforward. The only change here is that instead of
`HashMap<CrateType, T>` the data structure changed to `Vec<(CrateType,
T)>` to make it easier to deal with in queries.

4 years agostash_diagnostic: ICE in a different way
Mazdak Farrokhzad [Mon, 23 Sep 2019 17:29:02 +0000 (19:29 +0200)]
stash_diagnostic: ICE in a different way

4 years agoFix rebase conflicts
Alex Crichton [Mon, 23 Sep 2019 16:35:50 +0000 (09:35 -0700)]
Fix rebase conflicts

4 years agoRemove `--enable-extended` from cross dist builder
Alex Crichton [Wed, 18 Sep 2019 19:34:19 +0000 (12:34 -0700)]
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.

4 years agorustbuild: Pass `-Zsave-analysis` during tests
Alex Crichton [Tue, 17 Sep 2019 18:23:09 +0000 (11:23 -0700)]
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.

4 years agoTweak libserialize allows
Alex Crichton [Mon, 16 Sep 2019 21:01:11 +0000 (14:01 -0700)]
Tweak libserialize allows

4 years agoNo need to remove target-specific RUSTFLAGS
Alex Crichton [Wed, 11 Sep 2019 15:06:25 +0000 (08:06 -0700)]
No need to remove target-specific RUSTFLAGS

Turns out Cargo favors RUSTFLAGS!

4 years agoAdd `#![deny(warnings)]` to internal tools
Alex Crichton [Tue, 10 Sep 2019 16:28:47 +0000 (09:28 -0700)]
Add `#![deny(warnings)]` to internal tools

4 years agoFix compiling libserialize tests
Alex Crichton [Tue, 10 Sep 2019 16:10:32 +0000 (09:10 -0700)]
Fix compiling libserialize tests

They've got new warnings turned on so they need more `#![allow]`

4 years agoStylistic changes
Alex Crichton [Tue, 10 Sep 2019 16:10:24 +0000 (09:10 -0700)]
Stylistic changes

4 years agoAdd some FIXME for future Cargo issues
Alex Crichton [Mon, 9 Sep 2019 17:34:31 +0000 (10:34 -0700)]
Add some FIXME for future Cargo issues

4 years agoMove handling of `-Cprefer-dynamic` into `builder.rs`
Alex Crichton [Mon, 9 Sep 2019 17:31:22 +0000 (10:31 -0700)]
Move handling of `-Cprefer-dynamic` into `builder.rs`

This logic is *super* old and can be tweaked and moved into `builder.rs`

4 years agoMove `--cfg bootstrap` out of `rustc.rs`
Alex Crichton [Mon, 9 Sep 2019 17:27:01 +0000 (10:27 -0700)]
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.

4 years agoMove handling of `RUSTC_PARALLEL_COMPILER` to `compile.rs`
Alex Crichton [Mon, 9 Sep 2019 17:22:24 +0000 (10:22 -0700)]
Move handling of `RUSTC_PARALLEL_COMPILER` to `compile.rs`

No longer needs to live in `rustc.rs`

4 years agoMove handling of `{MUSL,WASI}_ROOT` to `compile.rs`
Alex Crichton [Mon, 9 Sep 2019 17:21:15 +0000 (10:21 -0700)]
Move handling of `{MUSL,WASI}_ROOT` to `compile.rs`

No longer any need for them to live in `rustc.rs`!

4 years agoAllow adding `RUSTFLAGS` after `Builder::cargo`
Alex Crichton [Mon, 9 Sep 2019 17:17:38 +0000 (10:17 -0700)]
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`

4 years agoMove debuginfo level handling to `builder.rs`
Alex Crichton [Mon, 9 Sep 2019 16:49:48 +0000 (09:49 -0700)]
Move debuginfo level handling to `builder.rs`

4 years agoRemove duplication of `RUSTC_DEBUGINFO_MAP` in rustc.rs
Alex Crichton [Mon, 9 Sep 2019 16:43:22 +0000 (09:43 -0700)]
Remove duplication of `RUSTC_DEBUGINFO_MAP` in rustc.rs

4 years agoMove handling of `codegen-units` to `builder.rs`
Alex Crichton [Mon, 9 Sep 2019 16:42:56 +0000 (09:42 -0700)]
Move handling of `codegen-units` to `builder.rs`

4 years agoMove handling of internal lints to `build.rs`
Alex Crichton [Mon, 9 Sep 2019 16:31:42 +0000 (09:31 -0700)]
Move handling of internal lints to `build.rs`

4 years agoMove handling of some warnings to `builder.rs`
Alex Crichton [Mon, 9 Sep 2019 16:29:47 +0000 (09:29 -0700)]
Move handling of some warnings to `builder.rs`

4 years agoMove handling of `-Dwarnings` to `builder.rs`
Alex Crichton [Mon, 9 Sep 2019 16:28:07 +0000 (09:28 -0700)]
Move handling of `-Dwarnings` to `builder.rs`

4 years agobootstrap: Remove need for `RUSTC_RPATH` variable
Alex Crichton [Thu, 15 Aug 2019 20:58:30 +0000 (13:58 -0700)]
bootstrap: Remove need for `RUSTC_RPATH` variable

4 years agobootstrap: Handle target-specific cargo env vars
Alex Crichton [Mon, 9 Sep 2019 16:20:29 +0000 (09:20 -0700)]
bootstrap: Handle target-specific cargo env vars

This commit ensure that we handle target-specific env vars for RUSTFLAGS
through Cargo as well.

4 years agobootstrap: Move `RUSTC_CRT_STATIC` to `builder.rs`
Alex Crichton [Thu, 15 Aug 2019 20:57:09 +0000 (13:57 -0700)]
bootstrap: Move `RUSTC_CRT_STATIC` to `builder.rs`

4 years agobootstrap: Remove need for RUSTC_SAVE_ANALYSIS
Alex Crichton [Thu, 15 Aug 2019 20:54:36 +0000 (13:54 -0700)]
bootstrap: Remove need for RUSTC_SAVE_ANALYSIS

4 years agobootstrap: Remove usage of `RUSTC_TARGET_LINKER`
Alex Crichton [Thu, 15 Aug 2019 20:51:47 +0000 (13:51 -0700)]
bootstrap: Remove usage of `RUSTC_TARGET_LINKER`

Cargo has a native enviroment variable for this.

4 years agobootstrap: Move `-Zdual-proc-macros` to `builder.rs`
Alex Crichton [Thu, 15 Aug 2019 20:46:54 +0000 (13:46 -0700)]
bootstrap: Move `-Zdual-proc-macros` to `builder.rs`

4 years agobootstrap: Move `-Zexternal-macro-backtrace` to builder
Alex Crichton [Thu, 15 Aug 2019 20:46:07 +0000 (13:46 -0700)]
bootstrap: Move `-Zexternal-macro-backtrace` to builder

No need for this to be in `rustc.rs`

4 years agobootstrap: Move `RUSTC_BREAK_ON_ICE` out of shim
Alex Crichton [Thu, 15 Aug 2019 20:45:20 +0000 (13:45 -0700)]
bootstrap: Move `RUSTC_BREAK_ON_ICE` out of shim

This is always set, so let's just always set it elsewhere to reduce the
need for our `rustc.rs` shim.

4 years agobootstrap: Delete handling of `RUSTC_METADATA_SUFFIX`
Alex Crichton [Thu, 15 Aug 2019 20:44:22 +0000 (13:44 -0700)]
bootstrap: Delete handling of `RUSTC_METADATA_SUFFIX`

This is already handled by `__CARGO_DEFAULT_LIB_METADATA` so there's no
need to doubly do it.

4 years agobootstrap: Add a helper for managing RUSTFLAGS
Alex Crichton [Thu, 15 Aug 2019 20:42:39 +0000 (13:42 -0700)]
bootstrap: Add a helper for managing RUSTFLAGS

Most of `bootstrap/bin/rustc.rs` doesn't need to exist with the advent
of `RUSTFLAGS` (yes this is super old) so this starts by refactoring a
bit to make it easier locally in the `Builder::cargo` method to append
to `RUSTFLAGS` that gets down to rustc.

4 years agoAdd parser recovery for `const $ident = $expr;`.
Mazdak Farrokhzad [Mon, 23 Sep 2019 02:48:22 +0000 (04:48 +0200)]
Add parser recovery for `const $ident = $expr;`.
Then use the diagnostics-stealing API to stash parser
errors and enrich them with type information in typeck.

4 years agoIntroduce a diagnostic stashing API.
Mazdak Farrokhzad [Mon, 23 Sep 2019 02:45:21 +0000 (04:45 +0200)]
Introduce a diagnostic stashing API.

4 years agoRemove needless `mut` in paths
Mark Rousskov [Fri, 13 Sep 2019 20:00:36 +0000 (16:00 -0400)]
Remove needless `mut` in paths

4 years agoRemove unused arguments
Mark Rousskov [Fri, 13 Sep 2019 19:22:00 +0000 (15:22 -0400)]
Remove unused arguments

4 years agoUtilize shared error codes rather than re-querying env
Mark Rousskov [Fri, 13 Sep 2019 18:59:08 +0000 (14:59 -0400)]
Utilize shared error codes rather than re-querying env

4 years agoRemove pointless or
Mark Rousskov [Fri, 13 Sep 2019 18:32:59 +0000 (14:32 -0400)]
Remove pointless or

4 years agoRemove needless Rc<RefCell<...>>
Mark Rousskov [Fri, 13 Sep 2019 18:25:56 +0000 (14:25 -0400)]
Remove needless Rc<RefCell<...>>

4 years agoProvide helper for synthesizing paths with resource suffix
Mark Rousskov [Fri, 13 Sep 2019 18:21:40 +0000 (14:21 -0400)]
Provide helper for synthesizing paths with resource suffix

4 years agoAuto merge of #64272 - Mark-Simulacrum:parallel-handler, r=estebank
bors [Mon, 23 Sep 2019 06:38:23 +0000 (06:38 +0000)]
Auto merge of #64272 - Mark-Simulacrum:parallel-handler, r=estebank

Refactor librustc_errors::Handler API

This should be reviewed by-commit.

The last commit moves all fields into an inner struct behind a single lock; this is done to prevent possible deadlocks in a multi-threaded compiler, as well as inconsistent state observation.

4 years agoRemove unused dependencies
Shotaro Yamada [Thu, 19 Sep 2019 13:24:06 +0000 (22:24 +0900)]
Remove unused dependencies

4 years agoAuto merge of #64695 - Centril:rollup-t1xnl2c, r=Centril
bors [Mon, 23 Sep 2019 02:25:10 +0000 (02:25 +0000)]
Auto merge of #64695 - Centril:rollup-t1xnl2c, r=Centril

Rollup of 7 pull requests

Successful merges:

 - #64294 (Fix `Stdio::piped` example code and lint)
 - #64670 (Cleanup syntax::ext::build)
 - #64674 (Propagate `types.err` in locals further to avoid spurious knock-down errors)
 - #64676 (Parse assoc type bounds in generic params and provide custom diagnostic)
 - #64677 (remove outdated comment)
 - #64679 (Infer consts more consistently)
 - #64688 (Clarify the "since" tidy check)

Failed merges:

r? @ghost

4 years agoDelete iter-order-by.md
Ashley Mannix [Mon, 23 Sep 2019 01:57:07 +0000 (11:57 +1000)]
Delete iter-order-by.md

4 years agoRollup merge of #64688 - rust-lang:clarify-tidy-since, r=alexreg
Mazdak Farrokhzad [Sun, 22 Sep 2019 22:36:41 +0000 (00:36 +0200)]
Rollup merge of #64688 - rust-lang:clarify-tidy-since, r=alexreg

Clarify the "since" tidy check

r? @pietroalbini

cc @alexreg