Commit graph

10284 commits

Author SHA1 Message Date
Niko Matsakis
2b07d0d853 inhibit enum layout optimizations under #[repr(C)] or #[repr(u8)]
Fixes #40029
2017-03-01 15:44:27 -05:00
bors
691eba1358 Auto merge of #34198 - eddyb:you're-a-bad-transmute-and-you-should-feel-bad, r=nikomatsakis
Make transmuting from fn item types to pointer-sized types a hard error.

Closes #19925 by removing the future compatibility lint and the associated workarounds.
This is a `[breaking-change]` if you `transmute` from a function item without casting first.
For more information on how to fix your code, see https://github.com/rust-lang/rust/issues/19925.
2017-03-01 10:03:44 +00:00
Corey Farwell
0b5bf67449 Rollup merge of #40128 - cengizIO:master, r=nikomatsakis
Move two large error_reporting fn's to a separate file

Hello!

I tried to make `librustc/infer/error_reporting,rs` more readable by modularizing it and moving its two largest functions to a separate file.

If you have any suggestions, please send it right away! 🚀

Thanks goes to @nikomatsakis for supporting.
2017-02-28 22:55:31 -05:00
Jeffrey Seyfried
61a9a14d29 Add warning cycle. 2017-02-28 22:15:12 +00: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
Corey Farwell
227285fd86 Rollup merge of #39977 - frewsxcv:error-reporting-cleanup, r=eddyb
librustc error_reporting.rs cleanup.

Read some code in librustc, mainly in error_reporting.rs, and cleaned up some things along the way. I recommend looking at each commit individually or looking at the [whitespace insensitive diff](https://github.com/rust-lang/rust/pull/39977/files?w=1).
2017-02-28 08:33:00 -05:00
Cengiz Can
e136bf6a4c Format note.rs with rustfmt 2017-02-27 22:30:47 +03:00
Cengiz Can
2f8ef50f7d Lower moved fn's visibility to supermodule 2017-02-27 22:23:00 +03:00
Cengiz Can
d21b0e35e7 Move two large error_reporting fn's to a separate file 2017-02-27 22:09:13 +03:00
Eduard-Mihai Burtescu
d9f0a949fd rustc_const_eval: demand that the MIR qualify_consts ran on each evaluated body. 2017-02-25 18:35:26 +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
c832e6f327 rustc_typeck: rework coherence to be almost completely on-demand. 2017-02-25 18:35:26 +02:00
Eduard-Mihai Burtescu
9890e0466d rustc: allow handling cycle errors gracefully in on-demand. 2017-02-25 18:35:25 +02:00
Eduard-Mihai Burtescu
ba11640179 rustc_typeck: hook up collect and item/body check to on-demand. 2017-02-25 18:35:25 +02:00
Eduard-Mihai Burtescu
9c3c306800 rustc_typeck: move the leaves (generics, trait_def, adt_def) to on-demand. 2017-02-25 18:35:25 +02:00
Eduard-Mihai Burtescu
3146ee8672 rustc: simplify tcx.closure_type(...) as it can copy the cached values. 2017-02-25 18:35:25 +02:00
Eduard-Mihai Burtescu
91374f8fe4 rustc: combine BareFnTy and ClosureTy into FnSig. 2017-02-25 17:47:15 +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
Eduard Burtescu
4649f7387e rustc_typeck: lift CrateCtxt to TyCtxt. 2017-02-25 17:07:59 +02:00
Eduard Burtescu
b5c4244c6c rustc: introduce a query system for type information in ty::maps. 2017-02-25 17:07:59 +02:00
Eduard-Mihai Burtescu
cc8a3a93b7 rustc: consolidate dep-tracked hashmaps in tcx.maps. 2017-02-25 17:07:59 +02:00
Eduard-Mihai Burtescu
e96a171453 rustc: move the actual values of enum discriminants into a map. 2017-02-25 17:07:59 +02:00
Eduard-Mihai Burtescu
e8d01ea4c7 rustc: store type parameter defaults outside of ty::Generics. 2017-02-25 17:07:59 +02:00
Eduard-Mihai Burtescu
582d5d9793 Rollup merge of #40037 - froydnj:overflow-checks, r=alexcrichton
add `-C overflow-checks` option

In addition to defining and handling the new option, we also add a method on librustc::Session for determining the necessity of overflow checks.  This method provides a single point to sort out the three (!) different ways for turning on overflow checks: -C debug-assertions, -C overflow-checks, and -Z force-overflow-checks.

I was seeing a [run-pass/issue-28950.rs](b1363a73ed/src/test/run-pass/issue-28950.rs) failure on my machine with these patches, but I was also seeing the failure without the changes to the core compiler.  We'll see what travis says.

Fixes #33134.  r? @alexcrichton
2017-02-25 14:13:38 +02:00
Eduard-Mihai Burtescu
c3075f3d96 Rollup merge of #40025 - est31:master, r=eddyb
Implement non-capturing closure to fn coercion

Implements non capturing closure coercion ([RFC 1558](https://github.com/rust-lang/rfcs/blob/master/text/1558-closure-to-fn-coercion.md)).

cc tracking issue #39817
2017-02-25 14:13:33 +02:00
Eduard-Mihai Burtescu
ebde617c7d Rollup merge of #40022 - wagenet:lib-defaults, r=alexcrichton
Better handling of lib defaults

r? @alexcrichton
2017-02-25 14:13:31 +02:00
Eduard-Mihai Burtescu
0a950bdb3d Rollup merge of #39993 - japaric:incr-san, r=alexcrichton
incr-comp: track the -Z sanitizer flag

closes #39611

r? @michaelwoerister
2017-02-25 14:13:27 +02:00
Eduard-Mihai Burtescu
a6a5c32e0e Rollup merge of #39953 - keeperofdakeys:macro-error, r=jseyfried
Provide suggestions for unknown macros imported with `use`

cc https://github.com/rust-lang/rust/issues/30197

r? @jseyfried
2017-02-25 14:13:23 +02:00
Eduard-Mihai Burtescu
aa7eb65123 Rollup merge of #39905 - estebank:useless-error, r=arielb1
Properly display note/expected details

Given a file

```rust
fn takes_cb(f: fn(i8)) {}

fn main() {
    fn callback(x: i32) {}
    takes_cb(callback)
}
```

output

```rust
error[E0308]: mismatched types
 --> file2.rs:5:22
  |
5 |             takes_cb(callback)
  |                      ^^^^^^^^ expected i8, found i32
  |
  = note: expected type `fn(i8)`
             found type `fn(i32) {main::callback}`
```

Fix #39343.
2017-02-25 14:13:19 +02:00
Eduard-Mihai Burtescu
ad9079bae4 Rollup merge of #39864 - cramertj:normalize-breaks, r=nikomatsakis
Normalize labeled and unlabeled breaks

Part of #39849.
2017-02-25 14:13:16 +02:00
Guillaume Gomez
01758c19b7 Rollup merge of #39940 - sgrif:sg-indentation, r=alexcrichton
Fix indentation of error message

So I just encountered this error for the first time. It's unclear what
it means, why I encountered it, or how to fix it. But worst of all, it
has a random newline and weird indentation! This commit fixes that last
bit.

<img width="680" alt="screen shot 2017-02-18 at 4 35 36 pm" src="https://cloud.githubusercontent.com/assets/1529387/23097087/0ef5ac4a-f5f9-11e6-9132-18ce759f7092.png">
2017-02-24 13:22:55 +01:00
est31
1b9b322883 Implement non-capturing closure to fn coercion 2017-02-23 22:32:22 +01:00
Peter Wagenet
ae32b6eafd Better handling of lib defaults 2017-02-23 09:36:33 -08:00
Josh Driver
4ecdc68153 Move MacroKind into Def::Macro 2017-02-23 20:12:33 +10:30
Nathan Froyd
ffc6ddd51b add -C overflow-checks option
In addition to defining and handling the new option, we also add a
method on librustc::Session for determining the necessity of overflow
checks.  This method provides a single point to sort out the three (!)
different ways for turning on overflow checks: -C debug-assertions, -C
overflow-checks, and -Z force-overflow-checks.

Fixes #33134.
2017-02-22 10:08:57 -05:00
Jorge Aparicio
0b06db57d1 incr-comp: track the -Z sanitizer flag
closes #39611
2017-02-20 22:34:42 -05:00
Corey Farwell
8918ceb67a Rollup merge of #39913 - nikomatsakis:inference-error, r=pnkfelix
Report full details of inference errors

When the old suggestion machinery was removed by @brson in https://github.com/rust-lang/rust/pull/37057, it was not completely removed. There was a bit of code that had the job of going through errors and finding those for which suggestions were applicable, and it remained, causing us not to emit the full details of such errors.  This PR removes that.

I've also added various lifetime tests to the UI test suite (so you can also see the before/after there). I have some concrete thoughts on how to improve these cases and am planning on writing those up in some mentoring issues (@CengizIO has expressed interest in working on those changes, so I plan to work with him on it, at least to start).

cc @jonathandturner
2017-02-20 12:42:53 -05:00
Corey Farwell
a754ea6d0a Move TraitRef impl next to struct definition. 2017-02-20 11:40:05 -05:00
Corey Farwell
23d9211f1e Flatten for loop using iterator combinators. 2017-02-20 11:40:04 -05:00
Corey Farwell
10639d7958 Add early return, remove else, unindent. 2017-02-20 11:40:04 -05:00
Corey Farwell
2436d7374c Extract out error message generation. 2017-02-20 11:40:03 -05:00
Corey Farwell
a97aed739b Remove unnecessary logic when finding simpilar impl candidates. 2017-02-20 11:40:02 -05:00
Corey Farwell
83fe48d598 Remove else, unindent. 2017-02-20 11:40:02 -05:00
Corey Farwell
de2f7e15ba Rewrite match to use combinators. 2017-02-20 11:40:01 -05:00
Corey Farwell
7e0c3de4c4 Remove else, unindent. 2017-02-20 11:40:01 -05:00
bors
0e77277950 Auto merge of #39939 - petrochenkov:regres, r=eddyb
Fix two ICEs in path resolution

Fixes https://github.com/rust-lang/rust/issues/39535
Fixes https://github.com/rust-lang/rust/issues/39559
Fixes https://github.com/rust-lang/rust/issues/39924

r? @eddyb
2017-02-19 17:52:54 +00:00
bors
aff6161a9e Auto merge of #39912 - nikomatsakis:incr-comp-trait-select-no-vec, r=eddyb
rework `TraitSelect` to avoid a vec and just use two def-ids

r? @eddyb
2017-02-19 06:30:38 +00:00
Sean Griffin
ec648a1ab3 Fix indentation of error message
So I just encountered this error for the first time. It's unclear what
it means, why I encountered it, or how to fix it. But worst of all, it
has a random newline and weird indentation! This commit fixes that last
bit.
2017-02-18 16:39:55 -05:00
Vadim Petrochenkov
bf95c29c98 Privatize fields of PathResolution
Ensure Def::Err has depth == 0
2017-02-19 00:34:08 +03:00
Taylor Cramer
a611bbcceb Rename hir::Label to hir::Destination 2017-02-18 12:43:29 -08:00