Commit graph

307 commits

Author SHA1 Message Date
Taylor Cramer
bc4810d907 Fix impl Trait Lifetime Handling
After this change, impl Trait existentials are
desugared to a new `abstract type` definition
paired with a set of lifetimes to apply.

In-scope generics are included as parents of the
`abstract type` generics. Parent regions are
replaced with static, and parent regions
referenced in the `impl Trait` type are duplicated
at the end of the `abstract type`'s generics.
2017-11-17 10:01:54 -08:00
Christopher Vittal
779fc372c7 Move E0562 to librustc from librustc_typeck
With the check for impl trait moving from type checking to HIR lowering
the error needs to move too.
2017-11-15 15:46:01 -05:00
kennytm
0b02377614 Rollup merge of #45585 - frewsxcv:frewsxcv-diagnostic, r=kennytm
Remove 'future Rust version' code block in diagnostic text.

Fixes https://github.com/rust-lang/rust/issues/43780.
2017-10-28 15:56:25 +08:00
Corey Farwell
b1681271e5 Remove 'future Rust version' code block in diagnostic text.
Fixes https://github.com/rust-lang/rust/issues/43780.
2017-10-27 22:49:56 -04:00
steveklabnik
4c6942d262 Remove 'just' in diagnostics
This is better writing
2017-10-26 09:27:20 -04:00
gaurikholkar
4bbb58d429 remove error code description 2017-09-26 11:55:53 -04:00
bors
4b8bf391fd Auto merge of #44735 - tirr-c:issue-42143, r=arielb1
Friendlier error message for closure argument type mismatch

Rebased #42270.
Fixes #42143.

---

`test.rs`:

```rust
fn main() {
    foo(|_: i32, _: usize| ());
}

fn foo<F>(_: F) where F: Fn(&str, usize) {}
```

Before:

```
error[E0281]: type mismatch: `[closure@test.rs:2:9: 2:30]` implements the trait `std::ops::Fn<(i32, usize)>`, but the trait `for<'r> std::ops::Fn<(&'r str, usize)>` is required
 --> test.rs:2:5
  |
2 |     foo(|_: i32, _: usize| ());
  |     ^^^ --------------------- implements `std::ops::Fn<(i32, usize)>`
  |     |
  |     expected &str, found i32
  |     requires `for<'r> std::ops::Fn<(&'r str, usize)>`
  |
  = note: required by `foo`
```

After (early):

```
error[E0631]: type mismatch in closure arguments
 --> test.rs:2:5
  |
2 |     foo(|_: i32, _: usize| ());
  |     ^^^ --------------------- takes arguments of type `i32` and `usize`
  |     |
  |     expected arguments of type `&str` and `usize`
  |
  = note: required by `foo`
```

After (current):

```
error[E0631]: type mismatch in closure arguments
 --> test.rs:2:5
  |
2 |     foo(|_: i32, _: usize| ());
  |     ^^^ --------------------- found signature of `fn(i32, usize) -> _`
  |     |
  |     expected signature of `for<'r> fn(&'r str, usize) -> _`
  |
  = note: required by `foo`
```

~~Compiler output has been changed, and a few tests are failing. Help me writing/fixing tests!~~

r? @nikomatsakis
2017-09-26 05:02:03 +00:00
Ariel Ben-Yehuda
c72a979979 move unsafety checking to MIR
No functional changes intended.
2017-09-24 12:46:00 +03:00
Wonwoo Choi
1bfbfb20a1 Print fn signature when there is closure argument type mismatch
Fixes #42143.
E0281 is totally replaced by E0631. UI tests are updated accordingly.
2017-09-23 10:15:30 +09:00
Taylor Cramer
64314e3ae2 Implement underscore lifetimes 2017-09-20 23:45:05 -07:00
Niko Matsakis
88e4bf6827 fix "correct" case in diagnostic error message 2017-09-10 06:08:29 -04:00
gaurikholkar
cfc7cf3961 adding E0623 for LateBound regions 2017-09-09 11:12:27 +05:30
Ariel Ben-Yehuda
6866aea5af implement improved on_unimplemented directives 2017-09-03 13:10:54 +03:00
Ariel Ben-Yehuda
243aa12d6e refactor and centralize on_unimplemented parsing 2017-09-03 13:10:53 +03:00
Alex Crichton
c872f47276 Merge remote-tracking branch 'origin/master' into gen 2017-08-25 07:15:12 -07:00
Vadim Petrochenkov
000f87ab1e Desugar parenthesized generic arguments in HIR 2017-08-19 02:14:53 +03:00
Alex Crichton
4b5f330c70 Merge remote-tracking branch 'origin/master' into gen 2017-08-17 13:23:20 -07:00
Anthony Defranceschi
d6cdefc4e0 added whitespace 2017-08-17 01:39:23 +02:00
Anthony Defranceschi
fe06b70b2a E0106: field lifetimes
I've added an example for custom type lifetimes located in another `struct` fields.
2017-08-16 22:49:18 +02:00
Alex Crichton
22ebcaca16 Choose another error code 2017-08-14 19:38:32 -07:00
Alex Crichton
06ce77cb39 Merge remote-tracking branch 'origin/master' into gen 2017-07-28 13:07:15 -07:00
John Kåre Alsaker
0f8897cc35 Fix error code 2017-07-28 15:47:55 +02:00
John Kåre Alsaker
5da9a8aa19 Rename some variables in lowering.rs and add an error number for the error 2017-07-28 15:47:14 +02:00
gaurikholkar
4fb1808ab6 Adding E0623, to detect missing lifetimes when both regions are anonymous 2017-07-28 08:51:58 +05:30
bors
52a3309695 Auto merge of #43443 - bitshifter:issue-43317, r=nikomatsakis
Improve checking of conflicting packed and align representation hints on structs and unions.

Fixes #43317 and improves #33626.
2017-07-27 19:48:13 +00:00
Cameron Hart
200c4d0410 Better detection of repr packed and align
Fixes issue #43317.
2017-07-23 17:27:13 +10:00
Josh Stone
5c6ccdc37c Correct the spelling of "homogeneous" 2017-07-21 18:08:40 -07:00
Niko Matsakis
24a5ceab52 tweak word ordering 2017-07-11 10:30:23 +02:00
Guillaume Gomez
ef26f1756c Clean up some code 2017-07-11 10:30:23 +02:00
Vadim Petrochenkov
affb8ee831 Remove more anonymous trait method parameters 2017-07-08 01:56:27 +03:00
Niko Matsakis
95409016f8 remove fn main() { } from extended errors 2017-06-29 06:37:18 -07:00
gaurikholkar
aebc4e0074 Changing the error code to E0621 2017-06-29 06:37:18 -07:00
gaurikholkar
176225c4dd Adding diagnostic code 0611 for lifetime errors with one named, one anonymous lifetime parameter 2017-06-29 06:37:18 -07:00
kennytm
4711982314
Removed as many "```ignore" as possible.
Replaced by adding extra imports, adding hidden code (`# ...`), modifying
examples to be runnable (sorry Homura), specifying non-Rust code, and
converting to should_panic, no_run, or compile_fail.

Remaining "```ignore"s received an explanation why they are being ignored.
2017-06-23 15:31:53 +08: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
Wonwoo Choi
3cb7825986 Update older URLs pointing to the first edition of the Book
`compiler-plugins.html` is moved into the Unstable Book.
Explanation is slightly modified to match the change.
2017-06-15 00:04:00 +09:00
Guillaume Gomez
7cc1ab4480 Add E0602 2017-06-02 20:09:35 +02:00
Guillaume Gomez
a333be7cfe Add new error code 2017-05-30 19:19:34 +02:00
Michael Woerister
8da2fe8ed7 Remove interior mutability from TraitDef by turning fields into queries. 2017-05-15 15:28:28 +02:00
Esteban Küber
b52c8c2fcf Reorder code, fix unittests 2017-04-24 16:44:07 -07:00
Esteban Küber
e8cf5f3662 Clean up closure type mismatch errors 2017-04-23 15:54:49 -07:00
Ariel Ben-Yehuda
d3476f4b76 cache ADT dtorck results
This avoids visiting the fields of all structs multiple times, improving
item-bodies checking time by 10% (!).
2017-04-23 23:09:21 +03:00
Cameron Hart
4358e35fda Implementation of repr struct alignment RFC 1358.
The main changes around rustc::ty::Layout::struct and rustc_trans:adt:
* Added primitive_align field which stores alignment before repr align
* Always emit field padding when generating the LLVM struct fields
* Added methods for adjusting field indexes from the layout index to the
  LLVM struct field index

The main user of this information is rustc_trans::adt::struct_llfields
which determines the LLVM fields to be used by LLVM, including padding
fields.
2017-04-21 07:32:32 +10:00
Cengiz Can
8b45a21bd1 comment out removed error codes 2017-04-18 21:43:22 +03:00
Cengiz Can
6383de15b1 fixes #40013 2017-04-18 21:43:22 +03:00
Eduard-Mihai Burtescu
8854164d0c rustc_const_eval: move ConstEvalErr to the rustc crate. 2017-04-16 01:31:06 +03:00
Oliver Middleton
99a069eec9 Fix broken Markdown and bad links in the error index
This makes sure RFC links point to the RFC text not the pull request.
2017-03-27 15:21:04 +01:00
Eduard Burtescu
7650afc1ce Make transmuting from fn item types to pointer-sized types a hard error. 2017-02-28 23:47:55 +02:00
Eduard-Mihai Burtescu
e7a48821c0 rustc_const_eval: always demand typeck_tables for evaluating constants. 2017-02-25 18:35:26 +02:00
Eduard-Mihai Burtescu
28f1cf4262 rustc_typeck: don't use Result for get_type_parameter_bounds and ensure_super_predicates. 2017-02-25 17:07:59 +02:00