Commit graph

5689 commits

Author SHA1 Message Date
Esteban Küber
16d424f147 Some tweaks to "type parameters from outer function" diagnostic
Follow up to #47574.
2018-03-14 12:35:25 -07:00
Eric Huss
2f1b34cc15 Add backticks to main not found errors. 2018-03-14 12:23:29 -07:00
Eric Huss
b08e6d305f Add suggestion where to add main function. 2018-03-14 12:23:29 -07:00
Eric Huss
6aa4dcb9cf Add empty main() to tests where it is missing. 2018-03-14 12:23:28 -07:00
Eric Huss
b4b7ccbd1c Add crate name to "main function not found" error message.
Fixes #44798 and rust-lang/cargo#4948.
2018-03-14 11:40:13 -07:00
kennytm
4074bafcf1
Rollup merge of #48988 - bobtwinkles:add_48070_test, r=nikomatsakis
Add a test for #48070

Resolves #48070.
The bug itself was fixed by #48770, but that PR didn't add a test for it.

r? @nikomatsakis
2018-03-15 00:15:52 +08:00
scalexm
04b228c3e2 Address niko's nits 2018-03-14 14:14:33 +01:00
scalexm
1271f0bd25 Add MVP for chalkification 2018-03-14 13:39:58 +01:00
snf
06057d9143 try_reserve: updating message for feature-gate-try_reserve.stderr 2018-03-14 03:48:42 -07:00
snf
92bfcd2b19 implementing fallible allocation API (try_reserve) for Vec, String and HashMap 2018-03-14 03:48:42 -07:00
Vadim Petrochenkov
12ac032c72 Implement import renaming with _ (RFC 2166) 2018-03-14 12:32:53 +03:00
Andrew Cann
a8a0c69191 fix ui test error again 2018-03-14 13:31:02 +08:00
Andrew Cann
b1526ca384 Fixes after rebase 2018-03-14 12:45:14 +08:00
Andrew Cann
5a6b781266 really actually fix ui test error for real 2018-03-14 12:44:52 +08:00
Andrew Cann
b4f1081af1 really fix ui test errors for real 2018-03-14 12:44:52 +08:00
Andrew Cann
04cad56915 really fix ui test errors 2018-03-14 12:44:51 +08:00
Andrew Cann
edb9d2b20d Fix ui test errors 2018-03-14 12:44:51 +08:00
Andrew Cann
59688e119e Make coerce_never lint an error
Remove the coerce_never lint and make the behaviour an error.
2018-03-14 12:44:51 +08:00
Andrew Cann
a9fc3901b0 stabilise feature(never_type)
Replace feature(never_type) with feature(exhaustive_patterns).
feature(exhaustive_patterns) only covers the pattern-exhaustives checks
that used to be covered by feature(never_type)
2018-03-14 12:44:51 +08:00
Andrew Cann
9b15ddb29e remove defaulting to unit
Types will no longer default to `()`, instead always defaulting to `!`.
This disables the associated warning and removes the flag from TyTuple
2018-03-14 12:44:51 +08:00
Guillaume Gomez
2e104a77cf update tests 2018-03-14 00:53:24 +01:00
bobtwinkles
52bb99dcc7 Move 48070 test to ui 2018-03-13 14:52:11 -04:00
Niko Matsakis
1e4e632ad8 add regression tests for various MIR bugs that get fixed
Fixes #31567
Fixes #47470
Fixes #48132
Fixes #48179
2018-03-13 11:22:07 -04:00
kennytm
14574db793
Rollup merge of #48928 - zackmdavis:span_suggestion_field_day, r=estebank
in which some labels and notes are upgraded to structured suggestions

(Meanwhile, a couple of parse-fail tests are moved to UI tests so that
the reader can see the new output, and an existing UI test is given a
more evocative name.)

r? @estebank
2018-03-13 00:54:32 +08:00
kennytm
3d2db9bba8
Rollup merge of #48880 - petrochenkov:badstderr, r=kennytm
tidy: Add a check for stray `.stderr` and `.stdout` files in UI test directories
2018-03-13 00:54:30 +08:00
gaurikholkar
311a8bef6e address code review comments 2018-03-12 20:14:37 +05:30
bors
883e74645d Auto merge of #48770 - bobtwinkles:two_phase_borrows_rewrite, r=pnkfelix
Two phase borrows rewrite

This definitely needs a careful review. Both @pnkfelix and @nikomatsakis  were involved with the design of this so they're natural choices here. I'm r?'ing @pnkfelix since they wrote the original two-phase borrow implementation. Also ping @KiChjang who expressed interest in working on this. I'm going to leave a few comments below pointing out some of the more dangerous changes I made (i.e. what I would like reviewers to pay special attention too.)

r? @pnkfelix
2018-03-12 12:58:09 +00:00
Zack M. Davis
9b599856a4 in which some labels and notes are upgraded to structured suggestions
(Meanwhile, a couple of parse-fail tests are moved to UI tests so that
the reader can see the new output, and an existing UI test is given a
more evocative name.)
2018-03-11 00:12:06 -08:00
bors
0bae326f6d Auto merge of #48419 - bobtwinkles:fix_late_bound_reg_self, r=nikomatsakis
Use free regions when determining self type in `compare_impl_method`

The ExplicitSelf::determine function expects to be able to compare regions. However, when the compare_self_type error reporting code runs we haven't resolved bound regions yet. Thus we replace them with free regions first. Fixes #48276
2018-03-10 23:34:11 +00:00
gaurikholkar
7745b52524 fix tidy issues 2018-03-11 00:57:11 +05:30
gaurikholkar
50299c6491 add ui test for E0594 2018-03-11 00:25:23 +05:30
Ralf Jung
0e6d40a3fb type_alias_bounds lint: If the type alias uses an associated type without "as", suggest to use the "as" form instead.
This is necessary to get rid of the type bound, and hence silence the warning.
2018-03-10 13:32:11 +01:00
Ralf Jung
562b44d8c3 Rename ignored_generic_bounds -> type_alias_bounds
First of all, the lint is specific for type aliases.  Second, it turns out the
bounds are not entirely ignored but actually used when accessing associated
types.  So change the wording of the lint, and adapt its name to reality.

The lint has never been on stable or beta, so renaming is safe.
2018-03-10 12:07:26 +01:00
bors
87344aa59a Auto merge of #47574 - zilbuz:issue-14844, r=nikomatsakis
Show the used type variable when issuing a "can't use type parameters from outer function" error message

Fix #14844

r? @estebank
2018-03-10 10:52:07 +00:00
Ralf Jung
81130ed4b1 Split param-bounds-ignored into two, it was testing two independent things
Also, tweak the test for ignored type aliases such that replacing the type alias
by a newtype struct leads to a well-formed type definition, and errors when used
the way the type alias is used.
2018-03-10 11:25:12 +01:00
bobtwinkles
03f198fcee Fix tests after two-phase borrow rewrite 2018-03-09 13:54:26 -05:00
Vadim Petrochenkov
c1a73d2f4a tidy: Add a check for stray .stderr and .stdout files in UI test directories 2018-03-09 17:27:22 +03:00
bors
fedce67cd2 Auto merge of #48326 - RalfJung:generic-bounds, r=petrochenkov
Warn about ignored generic bounds in `for`

This adds a new lint to fix #42181. For consistency and to avoid code duplication, I also moved the existing "bounds in type aliases are ignored" here.

Questions to the reviewer:
* Is it okay to just remove a diagnostic error code like this? Should I instead keep the warning about type aliases where it is? The old code provided a detailed explanation of what's going on when asked, that information is now lost. On the other hand, `span_warn!` seems deprecated (after this patch, it has exactly one user left!).
* Did I miss any syntactic construct that can appear as `for` in the surface syntax? I covered function types (`for<'a> fn(...)`), generic traits (`for <'a> Fn(...)`, can appear both as bounds as as trait objects) and bounds (`for<'a> F: ...`).
* For the sake of backwards compatibility, this adds a warning, not an error. @nikomatsakis suggested an error in https://github.com/rust-lang/rust/issues/42181#issuecomment-306924389, but I feel that can only happen in a new epoch -- right?

Cc @eddyb
2018-03-09 10:45:29 +00:00
Manish Goregaokar
68e7282aa8
Rollup merge of #48801 - Manishearth:epoch-features, r=nikomatsakis
Add functionality for gating feature flags on epochs ; rejigger epoch lints

fixes #48794

r? @nikomatsakis
2018-03-08 17:25:57 -08:00
Manish Goregaokar
b228b053ec
Rollup merge of #48527 - zackmdavis:and_the_social_construction_of_tuples, r=estebank
in which parentheses are suggested for should-have-been-tuple-patterns

![destructure_suggest_parens](https://user-images.githubusercontent.com/1076988/36638335-48b082d4-19a7-11e8-9726-0d043544df2f.png)

Programmers used to working in some other languages (such as Python or
Go) might expect to be able to destructure values with comma-separated
identifiers but no parentheses on the left side of an assignment.

Previously, the first name in such code would get parsed as a
single-indentifier pattern—recognizing, for example, the
`let a` in `let a, b = (1, 2);`—whereupon we would have a fatal syntax
error on seeing an unexpected comma rather than the expected semicolon
(all the way nearer to the end of `parse_full_stmt`).

Instead, let's look for that comma when parsing the pattern, and if we
see it, make-believe that we're parsing the remaining elements in a
tuple pattern, so that we can suggest wrapping it all in parentheses. We
need to do this in a separate wrapper method called on a "top-level"
pattern, rather than within
`parse_pat` itself, because `parse_pat` gets called recursively to parse
the sub-patterns within a tuple pattern.

~~We could also do this for `match` arms, `if let`, and `while let`, but
we elect not to in this patch, as it seems less likely for users to make
the mistake in those contexts.~~

Resolves #48492.

r? @petrochenkov
2018-03-08 17:25:55 -08:00
Manish Goregaokar
a08cfc4cb6 Add rust_2018_idioms lint group 2018-03-08 17:10:06 -08:00
Basile Desloges
0e68bb9728 Update tests 2018-03-08 22:28:52 +01:00
Zack M. Davis
1f04597c3c in which parentheses are suggested for should-have-been-tuple-patterns
Programmers used to working in some other languages (such as Python or
Go) might expect to be able to destructure values with comma-separated
identifiers but no parentheses on the left side of an assignment.

Previously, the first name in such code would get parsed as a
single-indentifier pattern—recognizing, for example, the
`let a` in `let a, b = (1, 2);`—whereupon we would have a fatal syntax
error on seeing an unexpected comma rather than the expected semicolon
(all the way nearer to the end of `parse_full_stmt`).

Instead, let's look for that comma when parsing the pattern, and if we
see it, momentarily make-believe that we're parsing the remaining
elements in a tuple pattern, so that we can suggest wrapping it all in
parentheses. We need to do this in a separate wrapper method called on
the top-level pattern (or `|`-patterns) in a `let` statement, `for`
loop, `if`- or `while let` expression, or match arm rather than within
`parse_pat` itself, because `parse_pat` gets called recursively to parse
the sub-patterns within a tuple pattern.

Resolves #48492.
2018-03-08 11:30:34 -08:00
Manish Goregaokar
c8a73e438a
Rollup merge of #48752 - alexcrichton:fix-target-feature, r=michaelwoerister
rustc: Fix ICE with `#[target_feature]` on module

This commit fixes an ICE in rustc when `#[target_feature]` was applied to items
other than functions due to the way the feature was validated.
2018-03-08 11:25:59 -08:00
Manish Goregaokar
d7f44ac52c
Rollup merge of #48682 - spastorino:make_causal_lazy, r=nikomatsakis
[NLL] Make causal tracking lazy

Close #46590

cc @nikomatsakis
2018-03-08 11:25:56 -08:00
Oliver Schneider
b5ace9a906
Unify the const folding errors
before they differed depending on whether optimizations were on or not
2018-03-08 08:35:39 +01:00
Oliver Schneider
aedd4c61ea
Regenerate tests 2018-03-08 08:35:38 +01:00
Oliver Schneider
d98a2b90b2
Rebase fallout 2018-03-08 08:34:17 +01:00
Oliver Schneider
2f0e077300
Report tcx errors with the span of the currently evaluating statement 2018-03-08 08:34:17 +01:00
Oliver Schneider
f68dc0190a
Add a test for transmuting via unions in constants 2018-03-08 08:34:17 +01:00