Commit graph

5689 commits

Author SHA1 Message Date
Esteban Küber
66202c113a Add nll test 2019-03-24 12:58:30 -07:00
Esteban Küber
ae883dc826 When moving out of a for loop head, suggest borrowing it
When encountering code like the following, suggest borrowing the for loop
head to avoid moving it into the for loop pattern:

```
fn main() {
    let a = vec![1, 2, 3];
    for i in &a {
        for j in a {
            println!("{} * {} = {}", i, j, i * j);
        }
    }
}
```
2019-03-24 11:46:13 -07:00
bors
0576ac109b Auto merge of #59397 - kennytm:rollup, r=kennytm
Rollup of 7 pull requests

Successful merges:

 - #59213 (Track changes to robots.txt)
 - #59239 (Remove inline assembly from hint::spin_loop)
 - #59251 (Use a valid name for graphviz graphs)
 - #59296 (Do not encode gensymed imports in metadata)
 - #59328 (Implement specialized nth_back() for Box and Windows.)
 - #59355 (Fix ICE with const generic param in struct)
 - #59377 (Correct minimum system LLVM version in tests)
2019-03-24 17:53:45 +00:00
Andy Russell
4728433c9e
make asm diagnostic instruction optional
`DiagnosticInfoInlineAsm::getInstruction` may return a null pointer, so
the instruction shouldn't be blindly unwrapped.
2019-03-24 12:21:03 -04:00
Andy Russell
8d7c2bb06a
replace redundant note in deprecation warning 2019-03-24 11:02:37 -04:00
bors
c7b5f4d0f7 Auto merge of #58305 - scalexm:chalk-continued, r=nikomatsakis
(WIP) Small fixes in chalkification

Small fixes around region constraints and builtin impls. There are still some type inference errors, for example the following code errors out:
```rust
fn main() {
    let mut x: Vec<i32> = Vec::new();
    //                    ^^^^^^^^ cannot infer type for `std::vec::Vec<_>`
}
```
but explicitly specifying `Vec::<i32>::new` works.

With these few fixes, the following code now passes type-checking:
```rust
fn main() {
    let mut x: Vec<i32> = Vec::<i32>::new();
    x.push(5);
    println!("{:?}", x);
}
```

I also fixed the implied bounds bug as discussed on Zulip and in https://github.com/rust-lang-nursery/chalk/pull/206

cc @tmandry
r? @nikomatsakis
2019-03-24 14:26:11 +00:00
kennytm
70cf325502
Rollup merge of #59355 - varkor:const-param-struct-ice, r=petrochenkov
Fix ICE with const generic param in struct

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

r? @petrochenkov
2019-03-24 19:00:18 +08:00
kennytm
1d286f7918
Rollup merge of #59296 - petrochenkov:stdup, r=estebank
Do not encode gensymed imports in metadata

(Unless they are underscore `_` imports which are re-gensymed on crate loading, see https://github.com/rust-lang/rust/pull/56392.)

We cannot encode gensymed imports properly in metadata and if we encode them improperly, we can get erroneous name conflicts downstream.
Gensymed imports are produced by the compiler, so we control their set, and can be sure that none of them needs being encoded for use from other crates.

A workaround that fixes https://github.com/rust-lang/rust/issues/59243.
2019-03-24 19:00:04 +08:00
bors
fb5ed488ff Auto merge of #59199 - estebank:untrack-errors, r=eddyb
Remove `track_errors` from `check_match`, `typeck_item_bodies` and `register_plugins`

In the spirit of continuing through errors in type checking (#39275), remove `track_errors` from a couple of locations in the codebase.
2019-03-24 05:38:10 +00:00
Esteban Küber
59f0f2edc1 Fix span after rebase 2019-03-23 14:10:39 -07:00
Esteban Küber
0a4ecf3438 Mark duplicate import removal suggestion tool only 2019-03-23 13:05:30 -07:00
Esteban Küber
ce90db1ff1 Deduplicate const eval error spans for better output 2019-03-23 13:05:30 -07:00
Esteban Küber
44730271f7 Hide obvious suggestion from cli output 2019-03-23 13:05:30 -07:00
Esteban Küber
3211f38828 Tweak unnecessary import suggestion 2019-03-23 13:05:30 -07:00
Esteban Küber
9bfb0ef818 Tweak unsupported negative trait bounds message 2019-03-23 13:05:30 -07:00
Esteban Küber
e1be8b0318 Swap primary/secondary spans for E0458 2019-03-23 13:05:30 -07:00
Esteban Küber
8e043950c8 Swap const evaluation lint spans to point at problem in primary span 2019-03-23 13:05:30 -07:00
Esteban Küber
1b0ab0b8a9 Tweak spans for E0599 2019-03-23 13:05:29 -07:00
Vadim Petrochenkov
4b382946e4 syntax: Remove warning for unnecessary path disambiguators 2019-03-23 17:20:11 +03:00
bors
d51a437e28 Auto merge of #59058 - petrochenkov:assocrecov3, r=estebank
syntax: Better recovery for `$ty::AssocItem` and `ty!()::AssocItem`

This PR improves on https://github.com/rust-lang/rust/pull/46788 covering a few missing cases.

Fixes https://github.com/rust-lang/rust/issues/52307
Fixes https://github.com/rust-lang/rust/issues/53776
r? @estebank
2019-03-23 05:51:16 +00:00
Esteban Küber
e929d19edc review comments 2019-03-22 21:54:19 -07:00
Esteban Küber
ac3290e8d9 Add suggestion to use &*var when &str: From<String> is expected 2019-03-22 20:38:14 -07:00
Esteban Küber
936dec8df3 Continue running after typeck_item_bodies has failed 2019-03-22 20:15:32 -07:00
Esteban Küber
d72ef21ddd Reword type ascription note to reduce verbosity 2019-03-22 20:14:20 -07:00
Esteban Küber
44a086ef39 Review comment 2019-03-22 19:50:18 -07:00
Esteban Küber
81b876b6a3 Hide "type ascription is experimental error" unless it's the only one
In order to minimize the verbosity of common syntax errors that are parsed
as type ascription, hide the feature gate error unless there are no other
errors being emitted by the parser.
2019-03-22 19:50:18 -07:00
Esteban Küber
72a3089092 Only suggest let assignment for type ascription if we find an equals sign 2019-03-22 19:50:18 -07:00
Esteban Küber
b1a6c32660 Tweak labels 2019-03-22 19:50:18 -07:00
Esteban Küber
8ba1a97e37 Expand suggestions for type ascription parse errors 2019-03-22 19:50:18 -07:00
bors
f21dee2c61 Auto merge of #58929 - estebank:elide-object, r=zackmdavis
Elide object safety errors on non-existent trait function

Fix #58734.

r? @zackmdavis
2019-03-23 02:40:15 +00:00
Dan Robertson
8ea435caf8
ffi: rename VaList::copy to VaList::with_copy
Rename `VaList::copy` to `VaList::with_copy`.
2019-03-22 22:28:07 +00:00
Mazdak Farrokhzad
4be19e36d9
Rollup merge of #59347 - petrochenkov:nomake, r=davidtwco
Move one test from run-make-fulldeps to ui

The test was written when `--extern` without path didn't exist.
2019-03-22 19:31:40 +01:00
Mazdak Farrokhzad
de08d0ec2d
Rollup merge of #59323 - euclio:enum-instead-of-variant, r=varkor
use suggestions for "enum instead of variant" error
2019-03-22 19:31:36 +01:00
Mazdak Farrokhzad
9d33d6fa4b
Rollup merge of #59322 - estebank:diag-tweak, r=davidtwco
Tweak incorrect escaped char diagnostic
2019-03-22 19:31:34 +01:00
Mazdak Farrokhzad
11429b2d13
Rollup merge of #59321 - varkor:unify-E0109-E0110-E0111, r=davidtwco
Unify E0109, E0110 and E0111

Error messages should no longer be restricted to specific generic kinds.
2019-03-22 19:31:33 +01:00
Mazdak Farrokhzad
0407c642f5
Rollup merge of #59297 - euclio:field-method-suggestions, r=estebank
convert field/method confusion help to suggestions
2019-03-22 19:31:28 +01:00
Mazdak Farrokhzad
5a0e4510a8
Rollup merge of #59266 - estebank:struct-parse-recovery, r=petrochenkov
Do not complain about non-existing fields after parse recovery

When failing to parse struct-like enum variants, the ADT gets recorded
as having no fields. Record that we have actually recovered during
parsing of this variant to avoid complaing about non-existing fields
when actually using it.

Fix #57361.
2019-03-22 19:31:24 +01:00
Mazdak Farrokhzad
225b6baae7
Rollup merge of #59190 - greg-kargin:master, r=sanxiyn
consistent naming for Rhs type parameter in libcore/ops

Rename RHS type parameter occurrences RHS->Rhs to make it consistent throughout files and follow naming conventions.
2019-03-22 19:31:21 +01:00
bors
2210e9a6a9 Auto merge of #59035 - estebank:closure-instacall, r=davidtwco
When encountering `||{}()`, suggest the likely intended `(||{})()`

Fix #55851.
2019-03-22 11:18:11 +00:00
bors
a85ec7c2c0 Auto merge of #59031 - estebank:recover-from-comaless, r=petrochenkov
Recover from missing comma between enum variants and from bad `pub` kw

Fix #56579. Fix #56473.
2019-03-22 04:52:10 +00:00
varkor
f94f85bebd Fix ICE with const generic param in struct 2019-03-22 01:49:42 +00:00
bors
86466a397a Auto merge of #58981 - estebank:elseless-if, r=davidtwco
Point at coercion reason for `if` expressions without else clause if caused by return type

```
error[E0317]: if may be missing an else clause
  --> $DIR/if-without-else-as-fn-expr.rs:2:5
   |
LL |   fn foo(bar: usize) -> usize {
   |                         ----- found `usize` because of this return type
LL | /     if bar % 5 == 0 {
LL | |         return 3;
LL | |     }
   | |_____^ expected (), found usize
   |
   = note: expected type `()`
              found type `usize`
   = note: `if` expressions without `else` must evaluate to `()`
```

Fix #25228.
2019-03-21 23:42:41 +00:00
Vadim Petrochenkov
6389478d70 Move one test from run-make-fulldeps to ui 2019-03-21 23:36:50 +03:00
Vadim Petrochenkov
fa013896f7 hygiene: Fix identifier comparison in impl overlap check 2019-03-21 22:20:10 +03:00
Andy Russell
16a8abe1bb
use suggestions for "enum instead of variant" error 2019-03-21 11:04:15 -04:00
scalexm
d6a2b7c470 Fix a bug in implied bounds 2019-03-20 20:09:26 +01:00
scalexm
60ea7cbe4e Gather region constraints not coming from unification 2019-03-20 20:03:20 +01:00
Esteban Küber
a8120d660a Tweak incorrect escaped char diagnostic 2019-03-20 11:45:25 -07:00
varkor
aff175b328 Update tests 2019-03-20 18:32:52 +00:00
Andy Russell
a291d4e94c
convert field/method confusion help to suggestions 2019-03-19 15:56:29 -04:00