Commit Graph

97655 Commits

Author SHA1 Message Date
Kevin Per
a90d0876d1 Move test-macros.rs back to ui to fix tests #62593 2019-08-15 17:05:49 +02:00
Kevin Per
df713dd397 Group all ui tests and move to abi #62593 2019-08-15 16:00:54 +02:00
Kevin Per
cac53fe3f2 Fixing broken tests #62401
The grouping led to a lot of `mv`. Therefore, some relative paths were
wrong. In this commit the dependent files were also moved so that the paths
work again.
2019-08-15 11:40:14 +02:00
Kevin Per
98325eb592 Grouping ABI tests (2) #62401 2019-08-15 11:39:48 +02:00
Kevin Per
f036faeb35 Grouping ABI test #62401 2019-08-15 11:37:19 +02:00
bors
1cdcea920e Auto merge of #62429 - cuviper:iter-closures, r=cramertj
Reduce the genericity of closures in the iterator traits

By default, closures inherit the generic parameters of their scope,
including `Self`. However, in most cases, the closures used to implement
iterators don't need to be generic on the iterator type, only its `Item`
type. We can reduce this genericity by redirecting such closures through
local functions.

This does make the closures more cumbersome to write, but it will
hopefully reduce duplication in their monomorphizations, as well as
their related type lengths.
2019-08-15 04:24:29 +00:00
bors
9e9a136fce Auto merge of #63575 - Centril:rollup-anlv9g5, r=Centril
Rollup of 11 pull requests

Successful merges:

 - #62984 (Add lint for excess trailing semicolons)
 - #63075 (Miri: Check that a ptr is aligned and inbounds already when evaluating `*`)
 - #63490 (libsyntax: cleanup and refactor `pat.rs`)
 - #63507 (When needing type annotations in local bindings, account for impl Trait and closures)
 - #63509 (Point at the right enclosing scope when using `await` in non-async fn)
 - #63528 (syntax: Remove `DummyResult::expr_only`)
 - #63537 (expand: Unimplement `MutVisitor` on `MacroExpander`)
 - #63542 (Add NodeId for Arm, Field and FieldPat)
 - #63543 (Merge Variant and Variant_)
 - #63560 (move test that shouldn't be in test/run-pass/)
 - #63570 (Adjust tracking issues for `MaybeUninit<T>` gates)

Failed merges:

r? @ghost
2019-08-15 00:32:05 +00:00
Mazdak Farrokhzad
78cd9d1fd5
Rollup merge of #63570 - rust-lang:maybe-uninit-gates, r=RalfJung
Adjust tracking issues for `MaybeUninit<T>` gates

cc #63566  #63567 #63568 #63569

r? @RalfJung
2019-08-14 22:56:32 +02:00
Mazdak Farrokhzad
d11cf775b7
Rollup merge of #63560 - Centril:mv-generator-test, r=petrochenkov
move test that shouldn't be in test/run-pass/

We no longer test `src/test/run-pass/`; the proper way now is `// run-pass` in `src/test/ui/`

r? @petrochenkov
2019-08-14 22:56:31 +02:00
Mazdak Farrokhzad
ad44d42750
Rollup merge of #63543 - c410-f3r:variant, r=c410-f3r
Merge Variant and Variant_

Extracted from #63468.
2019-08-14 22:56:29 +02:00
Mazdak Farrokhzad
d4ecc6f5c0
Rollup merge of #63542 - c410-f3r:node_ids, r=petrochenkov
Add NodeId for Arm, Field and FieldPat

Extracted from #63468
2019-08-14 22:56:28 +02:00
Mazdak Farrokhzad
83cd4e3211
Rollup merge of #63537 - petrochenkov:novisit, r=alexcrichton
expand: Unimplement `MutVisitor` on `MacroExpander`

Each call to `fully_expand_fragment` is something unique, interesting, and requiring attention.
It represents a "root" of expansion and its use means that something unusual is happening, like eager expansion or expansion performed outside of the primary expansion pass.
So, it shouldn't hide under a generic visitor call.

Also, from all the implemented visitor methods only two were actually used.

cc https://github.com/rust-lang/rust/pull/63468#discussion_r313504119
2019-08-14 22:56:27 +02:00
Mazdak Farrokhzad
409df9b530
Rollup merge of #63528 - petrochenkov:anyany, r=estebank
syntax: Remove `DummyResult::expr_only`

The effect is that if a built-in macro both returns an erroneous AST fragment and is used in unexpected position, then the incorrect position error won't be reported.

This combination of two errors should be rare and isn't worth an extra field that makes people ask questions in comments.
(There wasn't even a test making sure it worked.)

Addresses https://github.com/rust-lang/rust/pull/63468#discussion_r313504644
r? @estebank
2019-08-14 22:56:25 +02:00
Mazdak Farrokhzad
02e2a57f26
Rollup merge of #63509 - estebank:async-span, r=Centril
Point at the right enclosing scope when using `await` in non-async fn

Fix #63398.
2019-08-14 22:56:24 +02:00
Mazdak Farrokhzad
d2d49d238f
Rollup merge of #63507 - estebank:type-inference-error, r=Centril
When needing type annotations in local bindings, account for impl Trait and closures

Fix https://github.com/rust-lang/rust/issues/46680, fix https://github.com/rust-lang/rust/issues/63504, fix https://github.com/rust-lang/rust/issues/63506, fix #40014, cc https://github.com/rust-lang/rust/issues/63502.
2019-08-14 22:56:22 +02:00
Mazdak Farrokhzad
aaeff01446
Rollup merge of #63490 - Centril:cleanup-pat-parser, r=petrochenkov
libsyntax: cleanup and refactor `pat.rs`

A smaller refactoring & cleanup of `pat.rs` (best read commit by commit).

r? @petrochenkov
2019-08-14 22:56:21 +02:00
Mazdak Farrokhzad
c358476c1b
Rollup merge of #63075 - RalfJung:deref-checks, r=oli-obk
Miri: Check that a ptr is aligned and inbounds already when evaluating `*`

This syncs Miri with what the Nomicon and the Reference say, and resolves https://github.com/rust-lang/miri/issues/447.

Also this would not have worked without https://github.com/rust-lang/rust/pull/62982 due to new cycles. ;)

r? @oli-obk
2019-08-14 22:56:20 +02:00
Mazdak Farrokhzad
7178cf5f97
Rollup merge of #62984 - nathanwhit:extra_semi_lint, r=varkor
Add lint for excess trailing semicolons

Closes #60876.
A caveat (not necessarily a negative, but something to consider) with this implementation is that excess semicolons after return/continue/break now also cause an 'unreachable statement' warning.

For the following example:
```
fn main() {
    extra_semis();
}
fn extra_semis() -> i32 {
    let mut sum = 0;;;
    for i in 0..10 {
        if i == 5 {
            continue;;
        } else if i == 9 {
            break;;
        } else {
            sum += i;;
        }
    }
    return sum;;
}
```
The output is:
```
warning: unnecessary trailing semicolons
 --> src/main.rs:5:21
  |
5 |     let mut sum = 0;;;
  |                     ^^ help: remove these semicolons
  |
  = note: `#[warn(redundant_semicolon)]` on by default

warning: unnecessary trailing semicolon
 --> src/main.rs:8:22
  |
8 |             continue;;
  |                      ^ help: remove this semicolon

warning: unnecessary trailing semicolon
  --> src/main.rs:10:19
   |
10 |             break;;
   |                   ^ help: remove this semicolon

warning: unnecessary trailing semicolon
  --> src/main.rs:12:22
   |
12 |             sum += i;;
   |                      ^ help: remove this semicolon

warning: unnecessary trailing semicolon
  --> src/main.rs:15:16
   |
15 |     return sum;;
   |                ^ help: remove this semicolon

warning: unreachable statement
 --> src/main.rs:8:22
  |
8 |             continue;;
  |                      ^
  |
  = note: `#[warn(unreachable_code)]` on by default

warning: unreachable statement
  --> src/main.rs:10:19
   |
10 |             break;;
   |                   ^

warning: unreachable statement
  --> src/main.rs:15:16
   |
15 |     return sum;;
   |                ^

```
2019-08-14 22:56:18 +02:00
bors
082cf2f9d1 Auto merge of #63534 - Mark-Simulacrum:stage0-bump, r=Centril
Bump to 1.39

r? @Centril
2019-08-14 20:49:07 +00:00
Esteban Küber
6c3a98e029 review comments 2019-08-14 12:14:25 -07:00
Mazdak Farrokhzad
24693d70d6
Adjust tracking issues for MaybeUninit<T> gates 2019-08-14 20:07:37 +02:00
Caio
6a42b0b28d Merge Variant and Variant_ 2019-08-14 14:47:01 -03:00
Mazdak Farrokhzad
264640cde5 move test that shouldn't be in test/run-pass/ 2019-08-14 18:04:33 +02:00
Alex Crichton
f7ff36dcb2 Update error-format to match new Cargo flags for pipelining 2019-08-14 05:39:53 -04:00
Mark Rousskov
6575a96198 Disable --cfg bootstrap in libcore
This is needed to permit us building core_arch which is a submodule dep
(so we can't snap it to the new beta compiler).
2019-08-14 05:39:53 -04:00
Mark Rousskov
2601c86487 Handle cfg(bootstrap) throughout 2019-08-14 05:39:53 -04:00
bors
c43d03a19f Auto merge of #63544 - Centril:rollup-qhqfcov, r=Centril
Rollup of 17 pull requests

Successful merges:

 - #62760 (Deduplicate error messages in `librsctc_mir`)
 - #62849 (typeck: Prohibit RPIT types that inherit lifetimes)
 - #63383 (`async fn` lifetime elision tests)
 - #63421 (Implement Clone, Display for ascii::EscapeDefault)
 - #63459 (syntax: account for CVarArgs being in the argument list.)
 - #63475 (Bring back suggestion for splitting `<-` into `< -`)
 - #63485 (ci: move mirrors to their standalone bucket)
 - #63486 (Document `From` trait for `BinaryHeap`)
 - #63488 (improve DiagnosticBuilder docs)
 - #63493 (Remove unneeded comment in src/libcore/hash/mod.rs)
 - #63499 (handle elision in async fn correctly)
 - #63501 (use `ParamName` to track in-scope lifetimes instead of Ident)
 - #63508 (Do not ICE when synthesizing spans falling inside unicode chars)
 - #63511 (ci: add a check for clock drift)
 - #63512 (Provide map_ok and map_err method for Poll<Option<Result<T, E>>>)
 - #63529 (RELEASES.md: ? is one of three Kleene operators)
 - #63530 (Fix typo in error message.)

Failed merges:

r? @ghost
2019-08-14 07:08:50 +00:00
Mazdak Farrokhzad
a8bb3756b6
Rollup merge of #63530 - ehuss:typo-statemement, r=centril
Fix typo in error message.
2019-08-14 04:18:57 +02:00
Mazdak Farrokhzad
92e5508522
Rollup merge of #63529 - andersk:release-notes-kleene, r=Centril
RELEASES.md: ? is one of three Kleene operators

The slash and quotes in ?/“Kleene” appeared to define “Kleene” as the name for the `?` operator, which is not the case. Rust has three Kleene operators `*`, `+`, `?`.

([Pointed out](https://www.reddit.com/r/rust/comments/cprt0z/rust_1370_prerelease_testing/ewr90y3/) by /u/Sharlinator on Reddit.)
2019-08-14 04:18:55 +02:00
Mazdak Farrokhzad
d5dd097ad3
Rollup merge of #63512 - 95th:master, r=cramertj
Provide map_ok and map_err method for Poll<Option<Result<T, E>>>

Currently `map_ok` and `map_err` methods are given for `Poll<Result<T, E>>`.

This PR adds these methods for `Poll<Option<Result<T, E>>>` as they are helpful in stream building code.
2019-08-14 04:18:54 +02:00
Mazdak Farrokhzad
051598b29e
Rollup merge of #63511 - pietroalbini:pa-ci-date, r=Mark-Simulacrum
ci: add a check for clock drift

Recently we encountered multiple spurious failures where the crates.io
certificate was reported as expired, even though it's currently due to
expire in a few months. This adds some code to our CI to check for clock
drifts, to possibly find the cause or rule out a bad VM clock.

cc https://github.com/rust-lang/rust/issues/63510
r? @Mark-Simulacrum
2019-08-14 04:18:52 +02:00
Mazdak Farrokhzad
43f4990fc4
Rollup merge of #63508 - estebank:compromice, r=petrochenkov
Do not ICE when synthesizing spans falling inside unicode chars

Fix https://github.com/rust-lang/rust/issues/61226.
2019-08-14 04:18:51 +02:00
Mazdak Farrokhzad
5741e29417
Rollup merge of #63501 - nikomatsakis:issue-63500-async-anon-impl-lifetime, r=cramertj
use `ParamName` to track in-scope lifetimes instead of Ident

Also, clear in-scope lifetimes when visiting nested items.

Fixes #63500.
Fixes #63225.
Fixes #52532.

r? @cramertj
2019-08-14 04:18:49 +02:00
Mazdak Farrokhzad
4134241bcf
Rollup merge of #63499 - nikomatsakis:issuee-63388-async-fn-elision-self-mut-self, r=cramertj
handle elision in async fn correctly

We now always make fresh lifetimne parameters for all elided
lifetimes, whether they are in the inputs or outputs. But then
we generate `'_` in the case of elided lifetimes from the outputs.

Example:

```rust
async fn foo<'a>(x: &'a u32) -> &u32 { .. }
```

becomes

```rust
type Foo<'a, 'b> = impl Future<Output = &'b u32>;
fn foo<'a>(x: &'a u32) -> Foo<'a, '_>
```

Fixes #63388
2019-08-14 04:18:48 +02:00
Mazdak Farrokhzad
0098d0c514
Rollup merge of #63493 - sd234678:remove-unneeded-comment-from-src/libcore/hash, r=Centril
Remove unneeded comment in src/libcore/hash/mod.rs

Split out from larger PR #63347 - other sections in there require further discussion.

r? @Centril
2019-08-14 04:18:47 +02:00
Mazdak Farrokhzad
f47226e0c4
Rollup merge of #63488 - RalfJung:diagnostic-docs, r=zackmdavis
improve DiagnosticBuilder docs

Cc @estebank @oli-obk

Is there any way to do something like `span_note` but with a label attached to the span? I thought `.span_note().span_label()` would do it, but no, that does not work.
2019-08-14 04:18:45 +02:00
Mazdak Farrokhzad
4e1b865955
Rollup merge of #63486 - Observer42:document-from-trait-in-binaryheap, r=Centril
Document `From` trait for `BinaryHeap`

This PR solves part of #51430. (cc @skade)

The comments described allocation and time complexity of the conversion from Vec to BinaryHeap

The complexity description of BinaryHeap operations is available at mod level:
https://doc.rust-lang.org/alloc/collections/binary_heap/index.html

But it doesn't show up at BinaryHeap page:
https://doc.rust-lang.org/alloc/collections/binary_heap/struct.BinaryHeap.html
2019-08-14 04:18:44 +02:00
Mazdak Farrokhzad
6092519e44
Rollup merge of #63485 - pietroalbini:new-mirror-bucket, r=alexcrichton
ci: move mirrors to their standalone bucket

Currently mirrors are stored in the rust-lang-ci2 S3 bucket along with
CI toolchains. This is problematic for multiple reasons:

- CI IAM credentials are allowed to both edit and delete those files.
  A malicious user gaining access to those credentials would be able to
  change our mirrored dependencies, possibly compromising the compiler.

- Contents of the rust-lang-ci2 bucket are disposable except for the
  mirrors' content. When we implement backups for S3 buckets we'd have
  to replicate just that part of the bucket, complicating the backup
  logic and increasing the chance of mistakes. A standalone bucket will
  be way easier to backup.

This commit switches our CI to use the new rust-lang-ci-mirrors bucket.

r? @alexcrichton
2019-08-14 04:18:43 +02:00
Mazdak Farrokhzad
c824839471
Rollup merge of #63475 - iluuu1994:issue-62632, r=Centril
Bring back suggestion for splitting `<-` into `< -`

Closes #62632
2019-08-14 04:18:42 +02:00
Mazdak Farrokhzad
76bd7d62d6
Rollup merge of #63459 - eddyb:issue-63430, r=petrochenkov
syntax: account for CVarArgs being in the argument list.

Fixes #63430 by testing for `1` argument (the `CVarArgs` itself) instead of `0`.

Note that the error has basically been impossible to trigger since the change that caused #63430, so perhaps we need an audit of untested errors.

Also, this check probably belongs in AST validation/HIR lowering, but I'd rather fix it in place for now.

r? @petrochenkov cc @dlrobertson
2019-08-14 04:18:40 +02:00
Mazdak Farrokhzad
b5df4bb7eb
Rollup merge of #63421 - clarfon:escape_default, r=dtolnay
Implement Clone, Display for ascii::EscapeDefault

This will mimic the same behaviour as the `char` version; `Display`ing the iterator will give its string representation without advancing it.
2019-08-14 04:18:39 +02:00
Mazdak Farrokhzad
3d5387d39b
Rollup merge of #63383 - Centril:async-lifetime-elision-tests, r=nikomatsakis
`async fn` lifetime elision tests

Add `async fn` version of the tests in https://github.com/rust-lang/rust/pull/61207 per the first checkbox in https://github.com/rust-lang/rust/issues/62121#issuecomment-506884048.
Works towards resolving blockers in https://github.com/rust-lang/rust/pull/63209.

r? @nikomatsakis
cc @cramertj
2019-08-14 04:18:37 +02:00
Mazdak Farrokhzad
3f18112079
Rollup merge of #62849 - davidtwco:prohibit-inheriting-lifetimes, r=nikomatsakis
typeck: Prohibit RPIT types that inherit lifetimes

Part of #61949.

This PR prohibits return position `impl Trait` types that "inherit
lifetimes" from the parent scope. The intent is to forbid cases that are
challenging until they can be addressed properly.

cc @nikomatsakis
2019-08-14 04:18:36 +02:00
Mazdak Farrokhzad
dda33cad38
Rollup merge of #62760 - chansuke:dedupe-error-messages, r=zackmdavis
Deduplicate error messages in `librsctc_mir`

Deduplicated the error messages in `librustc_mir`. #62022
2019-08-14 04:18:35 +02:00
Caio
9348af8396 Add NodeId for Arm, Field and FieldPat 2019-08-13 22:42:10 -03:00
Esteban Küber
806476c840 Suggest giving return type to closures on E0282 2019-08-13 16:41:43 -07:00
Vadim Petrochenkov
d416ebeb6e expand: Unimplement MutVisitor on MacroExpander
Each call to `fully_expand_fragment` is something unique, interesting, and requiring attention.
It represents a "root" of expansion and its use means that something unusual is happening, like eager expansion or expansion performed outside of the primary expansion pass.
So, it shouldn't be hide under a generic visitor call.

Also, from all the implemented visitor methods only two were actually used.
2019-08-14 02:35:01 +03:00
Vadim Petrochenkov
0d29142aad expand: expand_fragment -> fully_expand_fragment 2019-08-14 01:59:14 +03:00
Eric Huss
643ddfaaa8
Apply Centril's suggestion
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-08-13 15:09:11 -07:00
Esteban Küber
84e202e6b3 review comments 2019-08-13 11:35:49 -07:00