Commit graph

24915 commits

Author SHA1 Message Date
Jeremy Fitzhardinge
7a22c34be7 Emit artifact notifications for save-analysis output
Issue: https://github.com/rust-lang/rust/issues/61047
2019-06-10 09:43:58 -07:00
Mazdak Farrokhzad
e181139162
Rollup merge of #61570 - varkor:infer-const-arg, r=eddyb
Fix issues with const argument inference

Fixes https://github.com/rust-lang/rust/issues/60724.
Fixes https://github.com/rust-lang/rust/issues/61346.

r? @eddyb
2019-06-10 13:14:29 +02:00
bors
5d4aef6055 Auto merge of #61608 - Aaron1011:feature/weird-expr-yield, r=Centril
Add nested 'yield' expression to weird expressions test
2019-06-10 05:17:12 +00:00
bors
61a60ce7d3 Auto merge of #61229 - Centril:stabilize-repr_align_enum, r=nagisa
Stabilize #![feature(repr_align_enum)] in Rust 1.37.0

On an `enum` item, you may now write:

```rust
#[repr(align(X))]
enum Foo {
    // ...
}
```

This has equivalent effects to first defining:

```rust
#[repr(align(X))]
struct AlignX<T>(T);
```

and then using `AlignX<Foo>` in `Foo`'s stead.

r? @nagisa
2019-06-09 23:50:04 +00:00
Mazdak Farrokhzad
73c6563ce0 Fix typo in comment. 2019-06-09 04:16:34 +02:00
Mazdak Farrokhzad
a4b9a03362 Fix inaccurate comments in '?' Kleene operator tests. 2019-06-09 04:16:34 +02:00
Mazdak Farrokhzad
1e793c71b5 Update tests since ? macro op is supported on 2015. 2019-06-09 04:16:34 +02:00
Mazdak Farrokhzad
6b71fba9c1
Rollup merge of #61669 - petrochenkov:tokderef2, r=oli-obk
syntax: Remove `Deref` impl from `Token`

Follow up to https://github.com/rust-lang/rust/pull/61541

r? @oli-obk
2019-06-09 00:20:38 +02:00
Mazdak Farrokhzad
18ca48d746
Rollup merge of #61666 - JohnTitor:add-test-for-ice, r=Centril
Add test for trait ICE

Closes #55266
2019-06-09 00:20:36 +02:00
Mazdak Farrokhzad
21b5c1d51e
Rollup merge of #61660 - petrochenkov:nocusta, r=Centril
Minimize use of `#![feature(custom_attribute)]`

Some preparations before resurrecting https://github.com/rust-lang/rust/pull/57921.
2019-06-09 00:20:35 +02:00
Mazdak Farrokhzad
2410b4de7c
Rollup merge of #61658 - RalfJung:const-tests, r=oli-obk
remove useless ident() functions in const tests

and replace the useful ones by black_box (with a comment)

r? @oli-obk
2019-06-09 00:20:34 +02:00
Vadim Petrochenkov
ee189ae028 Address review comments 2019-06-09 00:08:53 +03:00
Vadim Petrochenkov
8e8ab49bca Move some run-pass attribute tests to ui 2019-06-08 23:55:25 +03:00
Vadim Petrochenkov
6a66491883 Remove some more #![feature(custom_attribute)]s 2019-06-08 23:55:25 +03:00
Vadim Petrochenkov
ea4ad555d7 Introduce #[rustc_dummy] attribute and use it in tests
Unlike other built-in attributes, this attribute accepts any input
2019-06-08 23:55:25 +03:00
Vadim Petrochenkov
74a6d1c821 Turn #[allocator] into a built-in attribute and rename it to #[rustc_allocator] 2019-06-08 23:55:25 +03:00
Vadim Petrochenkov
8049e6199b Remove unused #![feature(custom_attribute)]s 2019-06-08 23:55:24 +03:00
Ralf Jung
3f99ad175a extra paranoid mode 2019-06-08 20:35:59 +02:00
Yuki Okushi
d69d0d7aa7 Add test for ICE 2019-06-09 03:04:56 +09:00
Vadim Petrochenkov
ffe23475cb syntax: Keep full Tokens for macro_rules separators 2019-06-08 20:36:20 +03:00
Ralf Jung
a733b876f7 black-box the fn ptr, not the result 2019-06-08 18:13:16 +02:00
Ralf Jung
4567f22578 remove useless ident() functions in const tests and replace the useful ones by black_box (with a comment) 2019-06-08 12:30:52 +02:00
bors
fb7cca33f8 Auto merge of #61620 - SimonSapin:as_cell, r=RalfJung
Stabilize Cell::from_mut and as_slice_of_cells

FCP: https://github.com/rust-lang/rust/issues/43038#issuecomment-499900463
2019-06-08 10:15:31 +00:00
bors
7f90abe3aa Auto merge of #61635 - ecstatic-morse:const-signum, r=oli-obk
Make `i*::signum` a `const fn`.

Ticks a box in #53718.

This uses a well-known branchless implementation of `signum`: `(n > 0) as i32 - (n < 0) as i32`.

Here's a [playground](https://play.rust-lang.org/?version=nightly&mode=release&edition=2018&gist=747cf191c4974bf66c9d75e509ae6e6e) comparing the two techniques. On x86 in release mode, the branchless implementation is able to replace a `mov` and `cmov` with a `sar` and `add`, so this should be a bit faster as well.

~~This is marked as a draft since I think I'll need to add `#[rustc_const_unstable]` somewhere. Perhaps the reviewer can point me in the right direction.~~
2019-06-08 07:20:57 +00:00
Mazdak Farrokhzad
6d25bcdb75
Rollup merge of #61627 - davidtwco:ice-async-fn-lint, r=alexcrichton
Add regression test for #61452.

Fixes #61452.

Turns out this ICE had already been fixed, so this PR only adds a regression test.
2019-06-08 03:33:59 +02:00
Mazdak Farrokhzad
5062ad3c60
Rollup merge of #61615 - petrochenkov:errlit, r=matklad
syntax: Treat error literals in more principled way

Free them from their character literal origins.

I actually tried to remove `LitKind::Err` entirely (by converting it into `ExprKind::Err` immediately), and it caused no diagnostic regressions in the test suite.
However, I'd still want to use error literals as general purpose error tokens some day, so I kept them.

The downside of having `LitKind::Err` in addition to `ExprKind::Err` is that every time you want to do something with `ExprKind::Err` you need to make sure that `ExprKind::Lit(LitKind::Err)` is treated in the same way.
Fortunately, this usually happens automatically because both literals and errors are "leaf" expressions, however this PR does fix a couple of inconsistencies between them.

Addresses https://github.com/rust-lang/rust/pull/60679#discussion_r282640663 in a way
2019-06-08 03:33:55 +02:00
Dylan MacKenzie
f6611db1d5 Add const-ness tests for i32::signum 2019-06-07 17:54:50 -07:00
David Wood
5604d9a93f
tests: Add regression test for #61452. 2019-06-07 18:35:06 +01:00
Vadim Petrochenkov
2af47facc3 syntax: Treat error literals in more principled way 2019-06-07 18:01:50 +03:00
Mazdak Farrokhzad
9bbdc40334
Rollup merge of #61605 - GuillaumeGomez:const-generic-display, r=varkor
Fix slice const generic length display

Fixes #61487.

r? @varkor
2019-06-07 16:48:09 +02:00
Mazdak Farrokhzad
de6bc12868
Rollup merge of #61532 - wesleywiser:const_prop_more, r=oli-obk
[const-prop] Support Rvalue::{Ref,Len} and Deref

Also fixes an ICE I found in testing.

r? @oli-obk

~~The final commit is just for a perf run. I'll remove it after that is completed.~~
2019-06-07 16:48:03 +02:00
Mazdak Farrokhzad
9ab654c53e
Rollup merge of #61332 - kennethbgoodin:borrowck-remove-asterisk-suggestion, r=matthewjasper
Remove asterisk suggestion for move errors in borrowck

As per the decision in #54985 completely removes the suggestion to add an asterisk when checking move errors. I believe I've preserved the correct behavior with the "consider borrowing here" branch of the original match arm, but I'm not positive on that.

This is my first PR to rustc so any feedback is greatly appreciated. Thanks.
2019-06-07 16:48:02 +02:00
Simon Sapin
2ce9440368 Stabilize Cell::from_mut and as_slice_of_cells
FCP: https://github.com/rust-lang/rust/issues/43038#issuecomment-499900463
2019-06-07 16:25:41 +02:00
Guillaume Gomez
8f3753703c Fix slice const generic length display 2019-06-07 15:54:16 +02:00
bors
c1c60d292e Auto merge of #61209 - matthewjasper:const-tuple-constructors, r=oli-obk
Make tuple constructors real const fns

Mir construction special cases `Ctor(...)` to be lowered as `Ctor { 0: ... }`, which means this doesn't come up much in practice, but it seems inconsistent not to allow this.

r? @oli-obk
2019-06-07 09:41:06 +00:00
varkor
7bb0a16ad7 Add test for deriving Debug for const generics 2019-06-07 10:18:19 +01:00
varkor
647b4a4deb Add test for const generics struct constructor 2019-06-07 10:18:19 +01:00
Aaron Hill
f1a90331aa
Add nested 'yield' expression to weird expressions test 2019-06-06 23:01:54 -04:00
Wesley Wiser
459e37b304 Bless test output 2019-06-06 17:52:17 -04:00
Matthew Jasper
bcf8365675 Make sure constructors functions are type checked correctly 2019-06-06 17:20:06 +01:00
Matthew Jasper
0d75ab2293 Make constructors actually be const functions 2019-06-06 17:20:06 +01:00
Matthew Jasper
6c9a018b60 Don't run MIR passes on constructor shims 2019-06-06 16:10:37 +01:00
Wesley Wiser
dee05ab2cc [const-prop] Handle Rvalue::Len 2019-06-06 08:31:54 -04:00
Wesley Wiser
1e50e01bb7 [const-prop] Handle ProjectionElem::Deref 2019-06-06 08:31:54 -04:00
Wesley Wiser
529b94ea6a [const-prop] Fix ICE when casting function pointers
This fixes an ICE when building libcore with `-Z mir-opt-level=3`.
2019-06-06 08:31:28 -04:00
Vadim Petrochenkov
ff40e37b98 Some code cleanup and tidy/test fixes 2019-06-06 14:04:02 +03:00
bors
daf1ed0e98 Auto merge of #61373 - tmandry:emit-storagedead-along-unwind, r=eddyb
Emit StorageDead along unwind paths for generators

Completion of the work done in #60840. That PR made a change to implicitly consider a local `StorageDead` after Drop, but that was incorrect for DropAndReplace (see also #61060 which tried to fix this in a different way).

This finally enables the optimization implemented in #60187.

r? @eddyb
cc @Zoxc @cramertj @RalfJung
2019-06-06 06:36:12 +00:00
bors
740668dbd9 Auto merge of #57428 - alexreg:associated_type_bounds, r=nikomatsakis,Centril
Implementation of RFC 2289 (associated_type_bounds)

This PR implements the [`asociated_type_bounds` feature](https://github.com/rust-lang/rfcs/blob/master/text/2289-associated-type-bounds.md).

Associated type bounds are implemented in:
   - function/method arguments and return types
   - structs, enums, unions
   - associated items in traits
   - type aliases
   - type parameter defaults
   - trait objects
   - let bindings

CC @nikomatsakis @centril
2019-06-06 03:56:22 +00:00
Alexander Regueiro
ee890331f6 Reblessed tests with NLL compare mode on. 2019-06-06 03:29:02 +01:00
Tyler Mandry
7718b14301 Test StorageDead statements explicitly 2019-06-05 15:10:19 -07:00