Commit graph

6769 commits

Author SHA1 Message Date
Guillaume Gomez
fc0fb0328b Rollup merge of #42669 - gaurikholkar:master, r=nikomatsakis
Adding diagnostic code 0611 for lifetime errors with one named, one anonymous lifetime parameter

This is a fix for #42517
Note that this only handles the above case for **function declarations** and **traits**.
`impl items` and `closures` will be handled in a later PR.
Example
```
fn foo<'a>(x: &i32, y: &'a i32) -> &'a i32 {
    if x > y { x } else { y }
}
```
now displays the following error message. ui tests have been added for the same.
```
error[E0611]: explicit lifetime required in the type of `x`
11 | fn foo<'a>(x: &i32, y: &'a i32) -> &'a i32 {
   |                     ^ consider changing the type of `x` to `&'a i32`
12 |     if x > y { x } else { y }
   |                  - lifetime `'a` required
```
#42516
r? @nikomatsakis
2017-06-30 22:44:43 +02:00
gaurikholkar
37a88f478d rename compile-fail test 2017-06-30 02:33:33 -07:00
Niko Matsakis
a43377773f move ERROR line 2017-06-30 05:11:28 -04:00
bors
5eef7c7966 Auto merge of #42902 - petrochenkov:keydcrate, r=jseyfried
Make `$crate` a keyword

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

r? @jseyfried or @nrc
2017-06-29 23:48:17 +00:00
Niko Matsakis
cb26a25d4b tweak comments in E0495.rs 2017-06-29 18:02:31 -04:00
gaurikholkar
4abcf28d2b adding compile-fail test 2017-06-29 14:13:53 -07:00
bors
686ec28cea Auto merge of #42527 - qnighy:unsized-tuple-coercions, r=arielb1
Unsized tuple coercions

Part of #18469. Fixes #32702.

#37685 and #34451 might also be related.

This PR does the following:

- Introduce explicit `Sized` constraints on tuple initializers, similar to that of record-struct initializers. Not much relevant to the main contribution but I noticed this when making tests for unsized tuple coercions.
- Implement `(.., T): Unsize<(.., U)>` where `T: Unsize<U>`.
- Assume `(.., T)` is MaybeUnsizedUnivariant.
- Modify `src/librustc/ty/util.rs` and `src/librustc_trans/glue.rs` so that tuples and structs are uniformly traversed when translating.
2017-06-29 15:04:31 +00:00
Masaki Hara
03660b6476
Move unsized_tuple_coercion behind a feature gate. 2017-06-29 21:25:35 +09:00
Masaki Hara
23d1521684
Add unsized tuple coercions. 2017-06-29 21:23:33 +09:00
Masaki Hara
17fca8b460
Check explicitly that tuple initializer is Sized. 2017-06-29 21:23:33 +09:00
petrochenkov
b33fd6d759 Change some terminology around keywords and reserved identifiers 2017-06-29 15:19:53 +03:00
Vadim Petrochenkov
e03948ef3e Make $crate a keyword 2017-06-29 15:19:52 +03:00
bors
d0e0f53376 Auto merge of #42887 - GuillaumeGomez:remove-err-methods, r=nikomatsakis
Remove err methods

To be merged after #42519.

cc @Susurrus @QuietMisdreavus
2017-06-29 11:13:39 +00:00
Ariel Ben-Yehuda
4f121542e9 Rollup merge of #42953 - estebank:fix-20729, r=petrochenkov
Move type parameter shadowing test to `ui`

Fix #20729.
2017-06-29 08:40:10 +00:00
Ariel Ben-Yehuda
effd1e040e Rollup merge of #42886 - durka:pplmm-mwe, r=petrochenkov
syntax: allow negative integer literal expression to be interpolated as pattern

Fixes #42820.

r? @jseyfried
2017-06-29 08:40:05 +00:00
Ariel Ben-Yehuda
bea4e60327 Rollup merge of #42219 - pwoolcoc:add-allow-fail-to-libtest, r=GuillaumeGomez
add `allow_fail` test attribute

This change allows the user to add an `#[allow_fail]` attribute to
tests that will cause the test to compile & run, but if the test fails
it will not cause the entire test run to fail. The test output will
show the failure, but in yellow instead of red, and also indicate that
it was an allowed failure.

Here is an example of the output: http://imgur.com/a/wt7ga
2017-06-29 08:40:01 +00:00
Guillaume Gomez
05ac25affa Add E0620 2017-06-29 09:48:17 +02:00
Guillaume Gomez
09f42fb9cc Add E0619 2017-06-29 09:48:17 +02:00
bors
0816b94f02 Auto merge of #42642 - venkatagiri:issue_42312, r=nikomatsakis
rustc_typeck: enforce argument type is sized

closes #42312

r? @nikomatsakis
2017-06-29 02:30:53 +00:00
Esteban Küber
5ed38946be Move type parameter shadowing test to ui 2017-06-28 15:11:05 -07:00
Venkata Giri Reddy
5ed21f5d47 rustc_typeck: use body-id of type-checking item in need_type_info 2017-06-28 20:19:52 +00:00
bors
69c65d2961 Auto merge of #42850 - estebank:unwanted-return-rotj, r=nikomatsakis
Detect missing `;` on methods with return type `()`

 - Point out the origin of a type requirement when it is the return type
   of a method
 - Point out possibly missing semicolon when the return type is `()` and
   the implicit return makes sense as a statement
 - Suggest changing the return type of methods with default return type
 - Don't suggest changing the return type on `fn main()`
 - Don't suggest changing the return type on impl fn
 - Suggest removal of semicolon (instead of being help)
2017-06-28 20:16:13 +00:00
Venkata Giri Reddy
74cb315a10 rustc_typeck: enforce argument type is sized 2017-06-28 17:54:18 +00:00
Alex Burka
0dfd9c30f2 syntax: allow negative integer literal expression to be interpolated as pattern 2017-06-27 18:39:38 +00:00
Eduard-Mihai Burtescu
69076f3a78 tests: work around fallout from normalizing signatures separately. 2017-06-27 16:39:58 +03:00
Eduard-Mihai Burtescu
a9d4069975 rustc_typeck: support functions in variance computation. 2017-06-27 16:39:58 +03:00
Eduard-Mihai Burtescu
33ecf72e8e rustc: move the PolyFnSig out of TyFnDef. 2017-06-27 16:39:52 +03:00
Paul Woolcock
8edc3cae3b Add compile-fail test for the new feature gate 2017-06-24 18:41:05 -04:00
Guillaume Gomez
deb1eb6134 wording improvement 2017-06-24 21:28:08 +02:00
Guillaume Gomez
7b8c6a2d30 Add E0607 2017-06-24 21:27:49 +02:00
Guillaume Gomez
30effc14e4 Add E0606 2017-06-24 21:27:45 +02:00
Guillaume Gomez
0e4b8ffccd Add E0605 2017-06-24 21:25:31 +02:00
Guillaume Gomez
d5977df1c1 Add E0604 2017-06-24 21:25:31 +02:00
bors
b0081b36b4 Auto merge of #42724 - Mark-Simulacrum:tests, r=alexcrichton
Add tests for a few issues.

Fixes #41998
Fixes #38381
Fixes #37515
Fixes #37510
Fixes #37366
Fixes #37323
Fixes #37051
Fixes #36839
Fixes #35570
Fixes #34373
Fixes #34222

Certainly not all of the E-needstest issues right now, but I started to get bored.
2017-06-24 07:10:10 +00:00
Esteban Küber
8e11189cbb Move tests to ui 2017-06-23 18:01:38 -07:00
Mark Simulacrum
2346169f99 Add tests for a few issues. 2017-06-23 07:51:01 -06:00
Mark Simulacrum
9037ef2c78 Rollup merge of #42833 - durka:non-constant-used-with-constant, r=Mark-Simulacrum
change span label for E0435

r? @Mark-Simulacrum
2017-06-23 06:02:15 -06:00
bors
737962056a Auto merge of #42304 - Mark-Simulacrum:issue-37157, r=nikomatsakis
Print the two types in the span label for transmute errors.

Fixes #37157. I'm not entirely happy with the changes here but overall it's better in my opinion; we certainly avoid the odd language in that issue, which changes to:

```
error[E0512]: transmute called with differently sized types: <C as TypeConstructor<'a>>::T (size can vary because of <C as TypeConstructor>::T) to <C as TypeConstructor<'b>>::T (size can vary because of <C as TypeConstructor>::T)
 --> test.rs:8:5
  |
8 |     ::std::mem::transmute(x)
  |     ^^^^^^^^^^^^^^^^^^^^^ transmuting between <C as TypeConstructor<'a>>::T and <C as TypeConstructor<'b>>::T

error: aborting due to previous error(s)
```
2017-06-23 00:32:40 +00:00
bors
bd62230fbd Auto merge of #42614 - GuillaumeGomez:new-error-codes, r=pnkfelix
New error codes

Part of #42229.

cc @Susurrus @frewsxcv @QuietMisdreavus
2017-06-22 21:46:08 +00:00
Alex Burka
369d4f1883 remove duplicate E0435 test 2017-06-22 19:13:09 +00:00
Alex Burka
0883ce1b43 change span label for E0435 (fix #41871) 2017-06-22 19:10:56 +00:00
bors
ab5bec2553 Auto merge of #42634 - Zoxc:for-desugar2, r=nikomatsakis
Change the for-loop desugar so the `break` does not affect type inference. Fixes #42618

Rewrite the `for` loop desugaring to avoid contaminating the inference results. Under the older desugaring, `for x in vec![] { .. }` would erroneously type-check, even though the type of `vec![]` is unconstrained. (written by @nikomatsakis)
2017-06-22 15:24:58 +00:00
bors
80271e8edf Auto merge of #42682 - alexcrichton:jobserver, r=michaelwoerister
Integrate jobserver support to parallel codegen

This commit integrates the `jobserver` crate into the compiler. The crate was
previously integrated in to Cargo as part of rust-lang/cargo#4110. The purpose
here is to two-fold:

* Primarily the compiler can cooperate with Cargo on parallelism. When you run
  `cargo build -j4` then this'll make sure that the entire build process between
  Cargo/rustc won't use more than 4 cores, whereas today you'd get 4 rustc
  instances which may all try to spawn lots of threads.

* Secondarily rustc/Cargo can now integrate with a foreign GNU `make` jobserver.
  This means that if you call cargo/rustc from `make` or another
  jobserver-compatible implementation it'll use foreign parallelism settings
  instead of creating new ones locally.

As the number of parallel codegen instances in the compiler continues to grow
over time with the advent of incremental compilation it's expected that this'll
become more of a problem, so this is intended to nip concurrent concerns in the
bud by having all the tools to cooperate!

Note that while rustc has support for itself creating a jobserver it's far more
likely that rustc will always use the jobserver configured by Cargo. Cargo today
will now set a jobserver unconditionally for rustc to use.
2017-06-22 00:32:42 +00:00
Corey Farwell
d33e2c5181 Rollup merge of #42620 - wesleywiser:compile_error, r=brson
Add compile_error!

Related to #40872
2017-06-21 10:40:15 -04:00
Corey Farwell
292fcc880f Rollup merge of #42397 - sfackler:syncsender-sync, r=alexcrichton
Implement Sync for SyncSender

r? @alexcrichton
2017-06-21 10:40:14 -04:00
Alex Crichton
201f06988f Integrate jobserver support to parallel codegen
This commit integrates the `jobserver` crate into the compiler. The crate was
previously integrated in to Cargo as part of rust-lang/cargo#4110. The purpose
here is to two-fold:

* Primarily the compiler can cooperate with Cargo on parallelism. When you run
  `cargo build -j4` then this'll make sure that the entire build process between
  Cargo/rustc won't use more than 4 cores, whereas today you'd get 4 rustc
  instances which may all try to spawn lots of threads.

* Secondarily rustc/Cargo can now integrate with a foreign GNU `make` jobserver.
  This means that if you call cargo/rustc from `make` or another
  jobserver-compatible implementation it'll use foreign parallelism settings
  instead of creating new ones locally.

As the number of parallel codegen instances in the compiler continues to grow
over time with the advent of incremental compilation it's expected that this'll
become more of a problem, so this is intended to nip concurrent concerns in the
bud by having all the tools to cooperate!

Note that while rustc has support for itself creating a jobserver it's far more
likely that rustc will always use the jobserver configured by Cargo. Cargo today
will now set a jobserver unconditionally for rustc to use.
2017-06-21 07:16:43 -07:00
bors
bb143890a4 Auto merge of #42076 - alex-ozdemir:master, r=nrc
Clearer Error Message for Duplicate Definition

Clearer use of the error message and span labels to communicate duplication definitions/imports.

fixes #42061
2017-06-21 00:06:02 +00:00
Seo Sanghyeon
05540bf08b Show type name for unused_must_use lint 2017-06-20 04:36:56 +09:00
Wesley Wiser
0b29d26079 Add compile_error!
Related to #40872
2017-06-19 14:29:12 -04:00
Mark Simulacrum
effa869cab Update transmute size lints.
Also moves a few transmute tests to UI tests to better test their
output.
2017-06-18 10:36:07 -06:00