Commit Graph

71300 Commits

Author SHA1 Message Date
Amanieu d'Antras 5f2c111165 Allow #[inline] on closures
Fixes #49632
2018-04-27 12:34:01 +02:00
bors 9822b5709c Auto merge of #49891 - cuviper:compiletest-crash, r=alexcrichton
compiletest: detect non-ICE compiler panics

Fixes #49888, but will be blocked by revealing #49889.
2018-04-27 07:43:46 +00:00
bors 8a09bc6a77 Auto merge of #48995 - aravind-pg:canonical-query, r=nikomatsakis
Create a canonical trait query for `evaluate_obligation`

This builds on the canonical query machinery introduced in #48411 to introduce a new canonical trait query for `evaluate_obligation` in the trait selector. Also ports most callers of the original `evaluate_obligation` to the new system (except in coherence, which requires support for intercrate mode). Closes #48537.

r? @nikomatsakis
2018-04-27 03:53:39 +00:00
bors e05b78daa6 Auto merge of #49420 - nox:enum-scalarpair, r=eddyb
Use ScalarPair for tagged enums
2018-04-27 01:30:10 +00:00
Aravind Gollakota e423dcc713 Update a compile-fail test 2018-04-26 20:28:30 -05:00
Aravind Gollakota d5b2e90744 Retry canonical trait query in standard mode if overflow occurs
This is slightly hacky and hopefully only a somewhat temporary solution.
2018-04-26 20:28:30 -05:00
Aravind Gollakota 5cb0372160 Remove the stored obligation in OverflowError to simplify things
We will shortly refactor things so that it is no longer needed
2018-04-26 20:28:30 -05:00
Aravind Gollakota e5535fc7dd Introduce trait query mode and use it to set overflow error handling policy in traits::select 2018-04-26 20:28:30 -05:00
Aravind Gollakota 3dd26b8a3e Simplify trait selector's evaluation API slightly 2018-04-26 20:28:30 -05:00
Aravind Gollakota bc16b8e92a Port existing callers of evaluate_obligation to the new canonical trait query
Except the one in coherence, which needs support for intercrate mode.
2018-04-26 20:28:30 -05:00
Aravind Gollakota 3ab3a9f509 Create a canonical trait query for evaluate_obligation 2018-04-26 20:28:29 -05:00
Aravind Gollakota 79f71f976a Refactor overflow handling in traits::select to propagate overflow instead of aborting eagerly
We store the obligation that caused the overflow as part of the OverflowError, and report it at the public API endpoints (rather than in the implementation internals).
2018-04-26 20:26:20 -05:00
bors 7d8f0e22f5 Auto merge of #50253 - nikomatsakis:regressions-2018-04-26, r=eddyb
drop elaboration should reveal all

This used to happen implicitly through the normalization function; but we now keep the param-env as is, which seems less surprising.

cc #49685

r? @eddyb
2018-04-26 23:11:39 +00:00
bors 7f3444e1ba Auto merge of #49513 - nox:univariant-fieldless-enum-as-zst, r=eddyb
Treat repr(Rust) univariant fieldless enums as ZSTs

This makes all those enums be represented the same way:

```rust
enum A1 { B1 }
enum A2 { B2 = 0 }
enum A3 { B3, C3(!) }
```

Related to #15747.

Cc @rust-lang/wg-codegen @rust-lang/lang
2018-04-26 18:26:03 +00:00
Niko Matsakis 86e9a7ac43 add regression test
Fixes #49685
2018-04-26 13:42:22 -04:00
Niko Matsakis 0361e5938c use reveal_all during drop elaboration
This used to happen by default as part of the normalization routine
that was being used.
2018-04-26 13:31:52 -04:00
Niko Matsakis 2a58875fa2 improved debug output 2018-04-26 13:31:24 -04:00
Irina Popa a131c518ad Fixed tidy errors. 2018-04-26 17:49:24 +03:00
Irina Popa 04fa0e7bb3 rustc_target: move in syntax::abi and flip dependency. 2018-04-26 17:49:16 +03:00
Anthony Ramine 1c09977c9a Mark SingleVariant as repr(u8) in c-style-enum
I should rather properly fix debuginfo but I have no clue how to do that.
2018-04-26 16:22:18 +02:00
Anthony Ramine 8f36804c00 Treat repr(Rust) univariant fieldless enums as a ZST (fixes #15747)
This makes all those enums be represented the same way:

```rust
enum A1 { B1 }
enum A2 { B2 = 0 }
enum A3 { B3, C3(!) }
```
2018-04-26 16:22:18 +02:00
Irina Popa 030244cd4a rustc_target: move in cabi_* from rustc_trans. 2018-04-26 16:50:31 +03:00
Irina Popa fb15d44700 rustc_trans: generalize cabi_* to any context type. 2018-04-26 16:50:31 +03:00
Irina Popa c45dda92fe rustc_target: move for_variant and field TyLayout methods to a trait. 2018-04-26 16:50:29 +03:00
Irina Popa 7a5147616b rustc_target: move LayoutOf's type parameter to an associated type. 2018-04-26 16:50:28 +03:00
Irina Popa 3bd7efadae rustc_target: move in type definitions from rustc_trans::abi. 2018-04-26 16:50:27 +03:00
Irina Popa bdcd08278a rustc_target: move in type definitions from ty::layout. 2018-04-26 16:50:20 +03:00
Irina Popa 38e964077b Rename rustc_back::target to rustc_target::spec. 2018-04-26 16:39:44 +03:00
Irina Popa 6f03b80020 rustc_back: move LinkerFlavor, PanicStrategy, and RelroLevel to target. 2018-04-26 16:39:27 +03:00
Anthony Ramine 7bfe3ae00a Add a test for casts of univariant C-like enums 2018-04-26 15:07:04 +02:00
Oliver Schneider 2807f4f773 Properly evaluate zst enum 2018-04-26 15:07:04 +02:00
Anthony Ramine 1839ec5ef8 Consistently use C_uint_big for discriminants 2018-04-26 15:07:04 +02:00
Anthony Ramine b7c8cc4b77 Properly look for uninhabitedness when handling discriminants 2018-04-26 15:07:04 +02:00
bors 88cd36714c Auto merge of #50245 - GuillaumeGomez:rollup, r=GuillaumeGomez
Rollup of 4 pull requests

Successful merges:

 - #50177 (mark std::str::replace(,n) as #[must_use])
 - #50207 (Hash EntryKind::AssociatedConst const data)
 - #50214 (Js improvements)
 - #50219 (Added missing `.` in docs.)

Failed merges:

 - #50229 (Add setting to go to item if there is only one result)
2018-04-26 11:07:14 +00:00
bors 3eca70a0c5 Auto merge of #50072 - oli-obk:discriminants, r=eddyb
Allow variant discriminant initializers to refer to other initializer…

…s of the same enum

r? @eddyb

fixes the 2.4 failure of https://github.com/rust-lang/rust/issues/49765

cc @durka @retep998
2018-04-26 08:51:39 +00:00
Guillaume Gomez 438f3ca01c Rollup merge of #50219 - ralfbiedert:master, r=frewsxcv
Added missing `.` in docs.
2018-04-26 10:11:16 +02:00
Guillaume Gomez 8f6b42711f Rollup merge of #50214 - GuillaumeGomez:JS-improvements, r=QuietMisdreavus
Js improvements

r? @QuietMisdreavus
2018-04-26 10:11:15 +02:00
Guillaume Gomez 0d758ecc61 Rollup merge of #50207 - wesleywiser:hash_const_data, r=eddyb
Hash EntryKind::AssociatedConst const data

Related to #49991
r? @michaelwoerister
cc @eddyb
2018-04-26 10:11:14 +02:00
Guillaume Gomez 3b49b27e0c Rollup merge of #50177 - matthiaskrgr:std_std_replacen__must_use, r=oli-obk
mark std::str::replace(,n) as #[must_use]

let x = "a b c c";
x.replacen("c", "d", 2");
might not do what people might think it does.
2018-04-26 10:11:11 +02:00
Anthony Ramine 3ca6ad922e Use ScalarPair for tagged enums 2018-04-26 09:30:28 +02:00
Oliver Schneider 195c9f47e9 Allow variant discriminant initializers to refer to other initializers of the same enum 2018-04-26 08:54:14 +02:00
bors 1515cded74 Auto merge of #49732 - Zoxc:sync-dep-graph, r=michaelwoerister
Make incremental compilation thread-safe

r? @michaelwoerister
2018-04-26 06:38:14 +00:00
bors c18778704c Auto merge of #50236 - nrc:update, r=alexcrichton
Update rustfmt and rls

r? @alexcrichton
2018-04-26 03:36:22 +00:00
Nick Cameron 612830dc77 handle license check 2018-04-26 15:10:11 +12:00
bors 84ce67ef95 Auto merge of #50131 - Manishearth:crate-in-local, r=petrochenkov
Allow crate:: in local paths

Currently if you want to use `crate` locally you have to do `::crate::`. This shouldn't be necessary

(will fix up tests later)

r? @petrochenkov
2018-04-25 23:25:47 +00:00
Nick Cameron 127f9a6416 Update rustfmt and rls 2018-04-26 10:11:28 +12:00
bors 6eb4f1d036 Auto merge of #50016 - tmandry:cleanup-binder, r=nikomatsakis
Make Binder's field private and clean up its usage

AKA "tour de rustc"

Closes #49814.
2018-04-25 20:58:53 +00:00
Manish Goregaokar 9f5e08e0a1 Fix crate:: in local paths 2018-04-25 12:01:59 -07:00
bors 25749ad66d Auto merge of #49321 - ishitatsuyuki:compile-pass, r=alexcrichton
Introduce compile-pass

r? @alexcrichton

The plan is to move things that cannot fail (no assert, unwrap, etc) out so we don't have to run them, and in the long term we can also stop running LLVM for them.

Out of 3215 tests...

```
Language            Files        Lines         Code     Comments       Blanks
Rust                 3215       119254        64688        35135        19431
```

16% of them has an empty main (which is already moved in this PR).

```
grep -rnPzl 'fn main\(\)\s*{\s*}' | xargs rg --files-without-match cfg | wc -l
547
```

And only 50% of the tests contains assertions:

```
rg -e assert -e unwrap -e expect -e panic -l | wc -l
1600
```

The remainder is likely able to get moved, but they need check by a human so I didn't touch them in PR.

cc @rust-lang/compiler

* [ ] Update documentation
2018-04-25 14:52:30 +00:00
Ralf Biedert 1bcb267651 Added missing . in docs. 2018-04-25 14:14:43 +02:00