Commit graph

4160 commits

Author SHA1 Message Date
Niko Matsakis
3c42f18c37 delete stray file 2017-12-07 05:28:03 -05:00
Niko Matsakis
6ee31e2af7 escape-upvar-ref: patch comment per arielb1 2017-12-07 05:28:03 -05:00
Niko Matsakis
8b657d378e escape-upvar-nested: patch "dangling reference" to renamed test 2017-12-07 05:28:02 -05:00
Niko Matsakis
782b9f5c0a escape-argument: improve comment per arielb1's suggestion 2017-12-07 05:28:02 -05:00
Niko Matsakis
dac59ac93a escape-argument-callee: improve comment per arielb1's suggestions 2017-12-07 05:28:02 -05:00
Niko Matsakis
47b8ef51d4 don't print self symbol's internal index unless gensymed
It's just not useful. It also makes it hard to have tests that probe
internal state, since the interning number is very sensitive.

Dumping the number in the case of gensym is not ideal but will do for
now.
2017-12-07 05:28:01 -05:00
Niko Matsakis
05441abd2b add closure requirement tests, improve debugging output
The overall format is now easier to read. Also, There is now graphviz
output, as well as a `#[rustc_regions]` annotation that dumps internal
state.
2017-12-07 05:28:00 -05:00
est31
6dba3e68e6 Migrate even more feature gate tests to ui
We also rename some of the files to conform to the
feature-gate-<feat_name>.rs pattern that is most common.
2017-12-07 10:14:41 +01:00
est31
38438c618c Migrate a few feature gate tests to ui
Renames only in this commit, and obviously
.stderr file additions.
2017-12-07 10:14:39 +01:00
bors
5a2465e2b4 Auto merge of #45953 - estebank:tab-4, r=nikomatsakis
Display `\t` in diagnostics code as four spaces

Follow up to #44386 using the unicode variable width machinery from #45711 to replace tabs in the source code when displaying a diagnostic error with four spaces (instead of only one), while properly accounting for this when calculating underlines.

Partly addresses #44618.
2017-12-06 21:05:53 +00:00
bors
98a96b0b66 Auto merge of #46403 - oli-obk:generic_missing_impl, r=nikomatsakis
Report a targeted note for generic parameters that are missing a trait bound
2017-12-05 02:57:57 +00:00
Paul Daniel Faria
a9cb25b23a inform constraint generation using maybe-init
In particular, if we see a variable is DROP-LIVE, but it is not
MAYBE-INIT, then we can ignore the drop. This leavess attempt to use
more complex refinements of the idea (e.g., for subpaths or subfields)
to future work.
2017-12-04 08:51:11 -05:00
Corey Farwell
82ee209492 Rollup merge of #45957 - dereckson:unix-agnosticity, r=shepmaster
Use more convenient and UNIX-agnostic shebang

When using bash-specific features, scripts using env to call bash
are more convenient, as bash be installed in different places
according the OS.
2017-12-03 17:43:43 -05:00
bors
f9b0897c5d Auto merge of #46381 - estebank:expected-span, r=nikomatsakis
Point to next token when it is in the expected line

r? @nikomatsakis
2017-12-02 20:06:42 +00:00
bors
7a649872a9 Auto merge of #46347 - raventid:did-you-mean-increase-accuracy, r=estebank
Add case insensitive comparison, besides Levenstein for DYM

Closes #46332

Draft version. The idea is that Levenstein does not work for some cases when we have multiple equal weights for strings. I didn't understand the case with `if found != name => Some(found)` so it means that new code does not work correctly yet.

At least now I think that we might return all maximal weights from levenstein and think about next cases in priority order:

1) There is exact match -> None
2) There is exact match, but case insensitive -> Some(match)
3) There is some match from levenstein -> Some(matches.take_any)
4) There is no match -> None

@estebank WDYT?
2017-12-02 12:42:54 +00:00
bors
b15a8eafcd Auto merge of #46256 - estebank:suggest-deref, r=arielb1
Use suggestions instead of notes ref mismatches

On type mismatch errors, use a suggestion when encountering minimal
differences in type differences due to refs, instead of a note.
2017-12-02 02:56:16 +00:00
Sébastien Santoro
a4b4a73328 Use more convenient and UNIX-agnostic shebang
When using bash-specific features, scripts using env to call bash
are more convenient, as bash be installed in different places
according the OS.

Same applies for other languages' interpreters.
2017-12-02 01:03:59 +00:00
bors
ddaebe938b Auto merge of #45904 - sunjay:gat-parser, r=nikomatsakis
Generic Associated Types Parsing & Name Resolution

Hi!
This PR adds parsing for generic associated types! 🎉 🎉 🎉

Tracking Issue: #44265

## Notes For Reviewers
* [x] I still need to add the stdout and stderr files to my ui tests. It takes me a *long* time to compile the compiler locally, so I'm going to add this as soon as possible in the next day or so.
* [ ] My current ui tests aren't very good or very thorough. I'm reusing the `parse_generics` and `parse_where_clause` methods from elsewhere in the parser, so my changes work without being particularly complex. I'm not sure if I should duplicate all of the generics test cases for generic associated types. It might actually be appropriate to duplicate everything here, since we don't want to rely on an implementation detail in case it changes in the future. If you think so too, I'll adapt all of the generics test cases into the generic associated types test cases.
* [ ] There is still more work required to make the run-pass tests pass here. In particular, we need to make the following errors disappear:
```
error[E0110]: lifetime parameters are not allowed on this type
  --> ./src/test/run-pass/rfc1598-generic-associated-types/streaming_iterator.rs:23:41
   |
23 |     bar: <T as StreamingIterator>::Item<'static>,
   |                                         ^^^^^^^ lifetime parameter not allowed on this type
```
```
error[E0261]: use of undeclared lifetime name `'a`
  --> ./src/test/run-pass/rfc1598-generic-associated-types/iterable.rs:15:47
   |
15 |     type Iter<'a>: Iterator<Item = Self::Item<'a>>;
   |                                               ^^ undeclared lifetime
```
There is a FIXME comment in streaming_iterator. If you uncomment that line, you get the following:
```
error: expected one of `!`, `+`, `,`, `::`, or `>`, found `=`
  --> ./src/test/run-pass/rfc1598-generic-associated-types/streaming_iterator.rs:29:45
   |
29 | fn foo<T: for<'a> StreamingIterator<Item<'a>=&'a [i32]>>(iter: T) { /* ... */ }
   |                                             ^ expected one of `!`, `+`, `,`, `::`, or `>` here
```

r? @nikomatsakis
2017-12-02 00:15:19 +00:00
Esteban Küber
36faafee8d Use suggestions instead of notes ref mismatches
On type mismatch errors, use a suggestion when encountering minimal
differences in type differences due to refs, instead of a note.
2017-12-01 10:44:29 -08:00
kennytm
95f465d535 Rollup merge of #45880 - arielb1:never-coerce, r=nikomatsakis
make coercions to `!` in unreachable code a hard error

This was added to cover up a lazy extra semicolon in #35849, but does
not actually make sense. This is removed as a part of the stabilization
of `never_type`.
2017-12-02 01:38:52 +08:00
Julian Kulesh
f18446e78d add magic comment for ui test, remove newline 2017-12-01 11:38:30 +03:00
Sunjay Varma
9d5592b436 Updated generic-associated-types-where stderr 2017-12-01 01:26:29 -05:00
Sunjay Varma
f0ecdfb1ab Added case for when impl generic associated type has a where clause 2017-12-01 01:26:29 -05:00
Sunjay Varma
fdf6c652ce Moved all of the tests over to ui and annotated why they are failing with appropriate fixme comments 2017-12-01 01:26:29 -05:00
Sunjay Varma
db4408a3ce Removed FIXME on a line that actually works for some reason... 2017-12-01 01:26:29 -05:00
Sunjay Varma
cc52e412f8 Adding error line so that test passes 2017-12-01 01:26:29 -05:00
Sunjay Varma
3bac9ff386 added must-compile-successfully 2017-12-01 01:26:29 -05:00
Sunjay Varma
38c2a73017 Testing and fixes 2017-12-01 01:26:29 -05:00
Niko Matsakis
e565b5bbdd demonstrate how we can write "successful parse" tests quite easily 2017-12-01 01:26:29 -05:00
Sunjay Varma
1b196fa324 Added stderr files for ui tests 2017-12-01 01:26:29 -05:00
Sunjay Varma
332a3cb169 More testing for generic associated types parsing 2017-12-01 01:26:29 -05:00
bors
d1364a65c0 Auto merge of #45997 - estebank:pub-ident, r=nikomatsakis
Account for missing keyword in fn/struct definition

Fix #38911.
2017-12-01 06:06:06 +00:00
Julian Kulesh
537f2a6e1e move comparator into +find_best_match_name+ function 2017-12-01 00:39:47 +03:00
Oliver Schneider
9e062c85bb
Report a targeted note for generic parameters 2017-11-30 16:33:27 +01:00
Ariel Ben-Yehuda
5a00b7cb74 make coercions to ! in unreachable code a hard error
This was added to cover up a lazy extra semicolon in #35849, but does
not actually make sense. This is removed as a part of the stabilization
of `never_type`.
2017-11-30 15:18:25 +02:00
Pietro Albini
91ba8b42fc
Implement RFC 2128 (use_nested_groups)
This commit adds support for nested groups inside `use` declarations,
such as `use foo::{bar, sub::{baz::Foo, *}};`.
2017-11-30 13:10:26 +01:00
Esteban Küber
fe89740957 Point to next token when it is in the expected line 2017-11-29 13:28:47 -08:00
kennytm
0e78c29bea Rollup merge of #46287 - SimonSapin:stable-constness, r=aturon
Stabilize const-calling existing const-fns in std

Fixes #46038
2017-11-29 18:37:47 +08:00
Julian Kulesh
6506f9c253 Add case insensitive comparison, besides Levenstein 2017-11-29 00:02:09 +03:00
bors
b087a991fc Auto merge of #46312 - kennytm:rollup, r=kennytm
Rollup of 10 pull requests

- Successful merges: #45506, #46174, #46231, #46240, #46249, #46258, #46262, #46275, #46282, #46285
- Failed merges:
2017-11-27 23:40:16 +00:00
kennytm
8dd10e62cc Rollup merge of #46282 - estebank:impl-trait-cicle-span, r=arielb1
Shorten output of E0391

Use the shorter `def_span` on the impl-Trait cyclic reference errors.
2017-11-28 03:16:49 +08:00
kennytm
f33edd2ed0 Rollup merge of #46258 - colinmarsh19:master, r=estebank
Remove semicolon note

In reference to issue #46186
r? @estebank

First time doing a pull request, if there are any suggestions on how to improve this please let me know.
@jjolly
2017-11-28 03:16:47 +08:00
kennytm
a60ffa06ae Rollup merge of #46249 - estebank:suggest-slice, r=arielb1
Suggest using slice when encountering `let x = ""[..];`

Fix #26319.
2017-11-28 03:16:46 +08:00
kennytm
26330b1757 Rollup merge of #46231 - ritiek:verbs, r=arielb1
MIR: Fix value moved diagnose messages

#45960. I believe this will take a different approach. Simply replacing all nouns to verbs (`desired_action`) messes up the message `use of moved value` (although fixes the message in original issue). Here is what happens:

<pre>
$ rustc -Zborrowck-mir src/test/ui/borrowck/borrowck-reinit.rs

error[E0382]: <b>used</b> of moved value: `x` (Mir)
  --> src/test/ui/borrowck/borrowck-reinit.rs:18:16
   |
17 |     drop(x);
   |          - value moved here
18 |     let _ = (1,x);
   |                ^ value used here after move

error: aborting due to 2 previous errors
</pre>
(Notice: *"**used** of moved value: `x`"* instead of *"**use**"*)

Which does not seem to be okay.

After experimenting a bit, it looks like [`report_use_of_moved_value()`](1dc0b573e7/src/librustc_mir/borrow_check.rs (L1319)) tries to handle both these messages by taking in only one form of`desired_action`.

These messages rise from: *"[{noun} of moved value](1dc0b573e7/src/librustc_mir/borrow_check.rs (L1338-L1342))"* and *"[value {verb} here after move](1dc0b573e7/src/librustc_mir/borrow_check.rs (L1343))"*.

This PR fixes *"value {verb} here after move"* type messages by passing a corresponding verb (`desired_action`) instead of the original noun.
2017-11-28 03:16:44 +08:00
bors
560a5da9f1 Auto merge of #46022 - matthewjasper:cannot-assign-twice-error, r=arielb1
Mir Borrowck: Parity with Ast for E0384 (Cannot assign twice to immutable)

- Closes #45199
- Don't allow assigning to dropped immutable variables
- Show the "first assignment" note on the first assignment that can actually come before the second assignment.
- Make "first assignment" notes point to function parameters if needed.
- Don't show a "first assignment" note if the first and second assignment have the same span (in a loop). This matches ast borrowck for now, but maybe this we should add "in previous loop iteration" as with some other borrowck errors. (Commit 2)
- Use revisions to check mir borrowck for the existing tests for this error. (Commit 3)

~~Still working on a less ad-hoc way to get 'first assignment' notes to show on the correct assignment. Also need to check mutating function arguments.~~ Now using a new dataflow pass.
2017-11-27 17:13:20 +00:00
bors
58e1234cdd Auto merge of #44884 - arielb1:pack-safe, r=nikomatsakis,eddyb
Make accesses to fields of packed structs unsafe

To handle packed structs with destructors (which you'll think are a rare
case, but the `#[repr(packed)] struct Packed<T>(T);` pattern is
ever-popular, which requires handling packed structs with destructors to
avoid monomorphization-time errors), drops of subfields of packed
structs should drop a local move of the field instead of the original
one.

That's it, I think I'll use a strategy suggested by @Zoxc, where this mir
```
drop(packed_struct.field)
```

is replaced by
```
tmp0 = packed_struct.field;
drop tmp0
```

cc #27060 - this should deal with that issue after codegen of drop glue
is updated.

The new errors need to be changed to future-compatibility warnings, but
I'll rather do a crater run first with them as errors to assess the
impact.

cc @eddyb

Things which still need to be done for this:
 - [ ] - handle `repr(packed)` structs in `derive` the same way I did in `Span`, and use derive there again
 - [ ] - implement the "fix packed drops" pass and call it in both the MIR shim and validated MIR pipelines
 - [ ] - do a crater run
 - [ ] - convert the errors to compatibility warnings
2017-11-27 14:23:02 +00:00
Esteban Küber
fa44927d2c reword to "consider borrowing here: {suggestion}" 2017-11-27 06:03:40 -08:00
Esteban Küber
487daabb52 Fix test 2017-11-27 06:01:16 -08:00
Esteban Küber
8a93deca9a Make main span in impl-trait ciclic reference point to def_span 2017-11-27 06:00:20 -08:00
Matthew Jasper
6853b34f0e Don't show first assignment in loops
Matches current ast-borrowck behavior.
2017-11-27 08:07:49 +00:00