Commit graph

6065 commits

Author SHA1 Message Date
bors
f690098e6d Auto merge of #62766 - alexcrichton:stabilize-pipelined-compilation, r=oli-obk
rustc: Stabilize options for pipelined compilation

This commit stabilizes options in the compiler necessary for Cargo to
enable "pipelined compilation" by default. The concept of pipelined
compilation, how it's implemented, and what it means for rustc are
documented in #60988. This PR is coupled with a PR against Cargo
(rust-lang/cargo#7143) which updates Cargo's support for pipelined
compliation to rustc, and also enables support by default in Cargo.
(note that the Cargo PR cannot land until this one against rustc lands).

The technical changes performed here were to stabilize the functionality
proposed in #60419 and #60987, the underlying pieces to enable pipelined
compilation support in Cargo. The issues have had some discussion during
stabilization, but the newly stabilized surface area here is:

* A new `--json` flag was added to the compiler.
* The `--json` flag can be passed multiple times.
* The value of the `--json` flag is a comma-separated list of
  directives.
* The `--json` flag cannot be combined with `--color`
* The `--json` flag must be combined with `--error-format=json`
* The acceptable list of directives to `--json` are:
  * `diagnostic-short` - the `rendered` field of diagnostics will have a
    "short" rendering matching `--error-format=short`
  * `diagnostic-rendered-ansi` - the `rendered` field of diagnostics
    will be colorized with ansi color codes embedded in the string field
  * `artifacts` - JSON blobs will be emitted for artifacts being emitted
    by the compiler

The unstable `-Z emit-artifact-notifications` and `--json-rendered`
flags have also been removed during this commit as well.

Closes #60419
Closes #60987
Closes #60988
2019-07-30 08:39:29 +00:00
Mazdak Farrokhzad
91c10f8839
Rollup merge of #63111 - Centril:rest-pat-tests, r=estebank
Add syntactic and semantic tests for rest patterns, i.e. `..`

As per my first note in https://github.com/rust-lang/rust/issues/62254#issuecomment-515784884 this adds syntactic and semantic tests for `..` ("rest") patterns which were implemented in https://github.com/rust-lang/rust/pull/62550.

r? @estebank
2019-07-30 05:37:46 +02:00
Mazdak Farrokhzad
09eb0b1b32
Rollup merge of #63096 - Centril:existential-type-add-tests, r=varkor
Add tests for some `existential_type` ICEs

Fix #53678
Fix #60407
Fix #60564

https://github.com/rust-lang/rust/issues/54899 will need some minimization before it can be added.

r? @varkor
2019-07-30 05:37:39 +02:00
Mazdak Farrokhzad
f3750e34b4
Rollup merge of #63093 - Aaron1011:fix/existential-closure, r=cramertj
Properly check the defining scope of existential types

Fixes #52632

Existential types (soon to be 'impl trait' aliases) can either be
delcared at a top-level crate/module scope, or within another item such
as an fn. Previously, we were handling the second case incorrectly when
recursively searching for defining usages - we would check children of
the item, but not the item itself. This lead to us missing closures
that consituted a defining use of the existential type, as their opaque
type instantiations are stored in the TypeckTables of their parent
function.

This commit ensures that we explicitly visit the defining item itself,
not just its children.
2019-07-30 05:37:37 +02:00
Mazdak Farrokhzad
652f13d838
Rollup merge of #63083 - matthewjasper:parameter-hygiene, r=petrochenkov
Make generic parameters always use modern hygiene

* E0263 (lifetime parameter declared twice in the same scope) now compares modernized identifiers.
* Const parameters are now resolved with modern hygiene.

Closes #58307
Closes #60746
Closes #61574
Closes #62433
2019-07-30 05:37:34 +02:00
Mazdak Farrokhzad
36029878e7
Rollup merge of #62928 - Centril:recover-parens-around-for-head, r=estebank
Syntax: Recover on `for ( $pat in $expr ) $block`

Fixes #62724 by adding some recovery:

```
error: unexpected closing `)`
  --> $DIR/recover-for-loop-parens-around-head.rs:10:23
   |
LL |     for ( elem in vec ) {
   |         --------------^
   |         |
   |         opening `(`
   |         help: remove parenthesis in `for` loop: `elem in vec`
```

The last 2 commits are drive-by cleanups.

r? @estebank
2019-07-30 05:37:32 +02:00
Mazdak Farrokhzad
6c7613b7fd Add semantic test for rest patterns. 2019-07-29 21:39:36 +02:00
Matthew Jasper
0fb9295e12 Add another test for const parameter (non) hygiene. 2019-07-29 20:04:07 +01:00
Mazdak Farrokhzad
15bc63e8bf Add syntactic test for rest patterns. 2019-07-29 21:04:03 +02:00
Mazdak Farrokhzad
a54dd2318a Add test for #60564. 2019-07-29 06:56:28 +02:00
Mazdak Farrokhzad
1e927d8689 Add test for #60407. 2019-07-29 06:56:28 +02:00
Mazdak Farrokhzad
b779f45fed Add test for #53678. 2019-07-29 06:56:28 +02:00
Mazdak Farrokhzad
b2a5d99705 Move ui/existential_type.rs -> ui/existential_type/existential_type-pass. 2019-07-29 06:56:28 +02:00
Mazdak Farrokhzad
e2ee2a3854 Move ui/{existential-type -> existential_types}. 2019-07-29 06:56:28 +02:00
Mazdak Farrokhzad
f8321d0d97
Rollup merge of #63092 - Centril:update-impl-trait-gates, r=varkor
Update `impl Trait` gate issues

cc https://github.com/rust-lang/rust/issues/63065
cc https://github.com/rust-lang/rust/issues/63063

r? @varkor cc @alexreg
2019-07-29 02:11:00 +02:00
Mazdak Farrokhzad
f6f214233f
Rollup merge of #63086 - BaoshanPang:testcases, r=nagisa
Ignore test cases that are not supported by vxWorks

bypass x86stdcall.rs for vxworks

ignore wait-forked-but-failed-child.rs as there is no command 'ps' on vxWorks

ignore process-sigpipe.rs as there is no 'sh' on vxWorks

ignore core-run-destroy.rs as there is no 'cat' and 'sleep' on vxWorks
2019-07-29 02:10:58 +02:00
Mazdak Farrokhzad
7f2c3e1723
Rollup merge of #63077 - petrochenkov:nolangfeat, r=petrochenkov
cleanup: Remove some language features related to built-in macros

They are now library features.
Cleanup after https://github.com/rust-lang/rust/pull/62086.
The unstable book files are moved because tidy complained.
2019-07-29 02:10:57 +02:00
Aaron Hill
3e98c3acf5
Rename test and add comment 2019-07-28 19:12:27 -04:00
Mazdak Farrokhzad
2a49dd0db6 Update existential_type + impl_trait_in_bindings issue numbers. 2019-07-29 00:09:18 +02:00
Aaron Hill
18bf9dd4b7
Properly check the defining scope of existential types
Fixes #52632

Existential types (soon to be 'impl trait' aliases) can either be
delcared at a top-level crate/module scope, or within another item such
as an fn. Previously, we were handling the second case incorrectly when
recursively searching for defining usages - we would check children of
the item, but not the item itself. This lead to us missing closures
that consituted a defining use of the existential type, as their opaque
type instantiations are stored in the TypeckTables of their parent
function.

This commit ensures that we explicitly visit the defining item itself,
not just its children.
2019-07-28 18:02:16 -04:00
bors
c7312fe4ff Auto merge of #63090 - Centril:rollup-xnjwm2h, r=Centril
Rollup of 8 pull requests

Successful merges:

 - #61856 (Lint attributes on function arguments)
 - #62360 (Document that ManuallyDrop::drop should not called more than once)
 - #62392 (Update minifier-rs version)
 - #62871 (Explicit error message for async recursion.)
 - #62995 (Avoid ICE when suggestion span is at Eof)
 - #63053 (SystemTime docs: recommend Instant for elapsed time)
 - #63081 (tidy: Cleanup the directory whitelist)
 - #63088 (Remove anonymous_parameters from unrelated test)

Failed merges:

r? @ghost
2019-07-28 20:22:42 +00:00
Mazdak Farrokhzad
29c377882f
Rollup merge of #63088 - dtolnay:anonymous, r=Centril
Remove anonymous_parameters from unrelated test

The parsing of anonymous_parameters is sufficiently covered by:

- [src/test/ui/issues/issue-13105.rs](023525dbda/src/test/ui/issues/issue-13105.rs)
- [src/test/ui/issues/issue-13775.rs](023525dbda/src/test/ui/issues/issue-13775.rs)
- [src/test/ui/issues/issue-34074.rs](023525dbda/src/test/ui/issues/issue-34074.rs)

Removing anonymous_parameters from this test means fewer exclusions for me in https://github.com/dtolnay/syn/issues/644.
2019-07-28 21:20:02 +02:00
Mazdak Farrokhzad
a3cae5740c
Rollup merge of #62995 - estebank:issue-62973, r=varkor
Avoid ICE when suggestion span is at Eof

Fix #62973.
2019-07-28 21:19:58 +02:00
Mazdak Farrokhzad
2ac9b89d7b
Rollup merge of #62871 - gilescope:async-recursion-error, r=Centril
Explicit error message for async recursion.

Attempt at clearer error message when async recusion is attempted. In response to #62539 (and #53690).
2019-07-28 21:19:56 +02:00
Mazdak Farrokhzad
a4cd2ecab2
Rollup merge of #61856 - c410-f3r:attrs-fn, r=matthewjasper
Lint attributes on function arguments

Fixes #61238.

cc #60406
2019-07-28 21:19:50 +02:00
Mazdak Farrokhzad
dfad725be5 Recover 'for ( $pat in $expr ) $block'. 2019-07-28 20:43:09 +02:00
David Tolnay
6fd6972e8b
Remove anonymous_parameters from unrelated test 2019-07-28 10:17:36 -07:00
Baoshan Pang
173cbf1134 bypass x86stdcall.rs for vxworks
ignore wait-forked-but-failed-child.rs as there is no command 'ps' on vxWorks

ignore process-sigpipe.rs as there is no 'sh' on vxWorks

ignore core-run-destroy.rs as there is no 'cat' and 'sleep' on vxWorks
2019-07-28 10:05:29 -07:00
Giles Cope
4b1d404d83 Better recursive async fn error message.
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-07-28 17:03:42 +01:00
Vadim Petrochenkov
434152157f Remove lint annotations in specific crates that are already enforced by rustbuild
Remove some random unnecessary lint `allow`s
2019-07-28 18:46:24 +03:00
Matthew Jasper
8876b3b9b0 Resolve const parameters with modern hygiene
Declarations were already modernized, resulting in cases where a macro
couldn't resolve it's own identifier.
2019-07-28 13:34:03 +01:00
Matthew Jasper
3dca17e62d Disallow duplicate lifetime parameters with legacy hygiene
They were resolved with modern hygiene, making this just a strange way
to shadow lifetimes.
2019-07-28 13:33:51 +01:00
Vadim Petrochenkov
b92697b8fb cleanup: Remove some language features related to built-in macros
They are now library features.
2019-07-28 14:14:48 +03:00
Mazdak Farrokhzad
d17ad1b069
Rollup merge of #63067 - JohnTitor:test-for-50900, r=Centril
Add test for issue-50900

Closes #50900
2019-07-28 11:11:15 +02:00
Mazdak Farrokhzad
4b3a017b35
Rollup merge of #63061 - Centril:constantly-improving, r=scottmcm
In which we constantly improve the Vec(Deque) array PartialEq impls

Use the same approach as in https://github.com/rust-lang/rust/pull/62435 as sanctioned by https://github.com/rust-lang/rust/issues/61415#issuecomment-504155110.

r? @scottmcm
2019-07-28 11:11:14 +02:00
Mazdak Farrokhzad
a558668cf2
Rollup merge of #63051 - estebank:borrow-ice, r=matthewjasper
Avoid ICE when referencing desugared local binding in borrow error

To avoid leaking the names of local bindings from expressions like for loops, #60984 explicitly ignored them, but an assertion that `LocalKind::Var` *must* have a name would trigger an ICE.

Before this change, the binding generated by desugaring the for loop would leak into the diagnostic (#63027):
```
error[E0515]: cannot return value referencing local variable `__next`
  --> return-local-binding-from-desugaring.rs:LL:CC
   |
LL |     for ref x in xs {
   |         ----- `__next` is borrowed here
...
LL |     result
   |     ^^^^^^ returns a value referencing data owned by the current function
```

Ideally `LocalKind` would carry more information to more accurately explain the problem, but for now, in order to avoid the ICE (fix #63026), we accept `LocalKind::Var` without a name and produce the following output:

```
error[E0515]: cannot return value referencing local binding
  --> $DIR/return-local-binding-from-desugaring.rs:30:5
   |
LL |     for ref x in xs {
   |                  -- local binding introduced here
...
LL |     result
   |     ^^^^^^ returns a value referencing data owned by the current function
```
2019-07-28 11:11:12 +02:00
Mazdak Farrokhzad
75e23ff411
Rollup merge of #62550 - Centril:rest-patterns, r=petrochenkov
Implement RFC 2707 + Parser recovery for range patterns

Implement https://github.com/rust-lang/rfcs/pull/2707.

- Add a new basic syntactic pattern form `ast::PatKind::Rest` (parsed as `..` or `DOTDOT`) and simplify `ast::PatKind::{Slice, Tuple, TupleStruct}` as a result.

- Lower `ast::PatKind::Rest` in combination with the aforementioned `PatKind` variants as well as `PatKind::Ident`. The HIR remains unchanged for now (may be advisable to make slight adjustments later).

- Refactor `parser.rs` wrt. parsing sequences and lists of things in the process.

- Add parser recovery for range patterns of form `X..`, `X..=`, `X...`, `..Y`, `..=Y`, and `...Y`.
   This should make it easy to actually support these patterns semantically later if we so desire.

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

r? @petrochenkov
2019-07-28 11:11:04 +02:00
Yuki Okushi
15307ca993 Move to src/test/ui/match/ 2019-07-28 16:51:21 +09:00
Yuki Okushi
29a00ef4a6 Add test for issue-50900 2019-07-28 16:26:01 +09:00
Mazdak Farrokhzad
d33696fcb4 borrowck-describe-lvalue: --bless --compare-mode=nll. 2019-07-28 07:04:16 +02:00
Mazdak Farrokhzad
87742073a0 And --bless tests accordingly for those exceptions. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
5f4dd1d19a Address comments re. off-topic errors. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
acc6a6d8cb --bless tests after rebase. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
7c0b1da2c1 Win some lose some; Unfortunately we lost recovery in one case. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
e3cdadd73f (pat, ..,) is now syntactically legal. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
06e5ae5c82 Account for better recovery in two cases. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
e725ea2215 Intersection patterns 'p1 @ p2' are not supported. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
91c8b53f45 --bless tests due to new subslice syntax. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
75da43dc87 Use new 'p @ ..' syntax in tests. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
891a736b02 Test parsing and recovery of all sorts of range patterns. 2019-07-28 06:53:38 +02:00