Commit Graph

103986 Commits

Author SHA1 Message Date
bors
fc6b5d6efe Auto merge of #67216 - ecstatic-morse:const-loop, r=oli-obk
Enable `loop` and `while` in constants behind a feature flag

This PR is an initial implementation of #52000. It adds a `const_loop` feature gate, which allows `while` and `loop` expressions through both HIR and MIR const-checkers if enabled. `for` expressions remain forbidden by the HIR const-checker, since they desugar to a call to `IntoIterator::into_iter`, which will be rejected anyways.

`while` loops also require [`#![feature(const_if_match)]`](https://github.com/rust-lang/rust/pull/66507), since they have a conditional built into them. The diagnostics from the HIR const checker will suggest this to the user.

r? @oli-obk
cc @rust-lang/wg-const-eval
2019-12-15 01:28:28 +00:00
Alex Kapranoff
d0008baebd
Doc typo 2019-12-14 17:12:40 -08:00
Esteban Küber
e08944fdaf Do not ICE on unnamed future 2019-12-14 14:50:32 -08:00
bors
6f829840f7 Auto merge of #67224 - nikomatsakis:revert-stabilization-of-never-type, r=centril
Revert stabilization of never type

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

I decided to keep the separate `never-type-fallback` feature gate, but tried to otherwise revert https://github.com/rust-lang/rust/pull/65355. Seemed pretty clean.

( cc @Centril, author of #65355, you may want to check this over briefly )
2019-12-14 22:02:59 +00:00
Niko Matsakis
775076ff4d update reference 2019-12-14 15:41:36 -05:00
Niko Matsakis
96d18ac479 update clippy to the rustc-pr-67224 branch
Actually to commit <69f99e74ac2266dff4b5adc7c59b35236f0abef1>.
2019-12-14 15:22:24 -05:00
Aaron Loucks
7ea6c46a6d Restore original implementation of Vec::retain
This PR reverts #48065, which aimed to optimize `Vec::retain` by
making use of `Vec::drain_filter`. Unfortunately at that time,
`drain_filter` was unsound.

The soundness hole in `Vec::drain_filter` was fixed in #61224 by
guaranteeing that cleanup logic runs via a nested `Drop`, even in
the event of a panic. Implementing this nested drop affects codegen
(apparently?) and results in slower code.

Fixes #65970
2019-12-14 12:38:45 -05:00
Niko Matsakis
b217587f04 [WIP] fix tests after rebase 2019-12-14 09:01:23 -05:00
Niko Matsakis
405eefe467 add #![feature(never_type)] to tests as needed 2019-12-14 09:01:18 -05:00
Niko Matsakis
dc49b2cdfd Add regression test for #66757 2019-12-14 09:01:13 -05:00
Niko Matsakis
d286113024 Revert "Stabilize the never_type, written !."
This reverts commit 15c30ddd69.
2019-12-14 09:01:09 -05:00
Niko Matsakis
1719337d02 Revert "Remove #![feature(never_type)] from tests."
This reverts commit 8f6197f39f.
2019-12-14 09:01:04 -05:00
Niko Matsakis
ca8154861e Revert "Redefine core::convert::Infallible as !."
This reverts commit 089229a193.
2019-12-14 09:00:49 -05:00
bors
c8ea4ace92 Auto merge of #67136 - oli-obk:const_stability, r=Centril
Require stable/unstable annotations for the constness of all stable fns with a const modifier

r? @RalfJung @Centril

Every `#[stable]` const fn now needs either a `#[rustc_const_unstable]` attribute or a `#[rustc_const_stable]` attribute. You can't silently stabilize the constness of a function anymore.
2019-12-14 10:21:32 +00:00
bors
12307b3b08 Auto merge of #67084 - Pagten:feature/print-msg-from-elf-entrypoint, r=Amanieu
SGX: Change ELF entrypoint

This fixes [rust-sgx issue #148](https://github.com/fortanix/rust-sgx/issues/148).

A new entry point is created for the ELF file generated by `rustc`, separate from the enclave entry point. When the ELF file is executed as a Linux binary, the error message below is written to stderr.

> Error: This file is an SGX enclave which cannot be executed as a standard Linux binary.
> See the installation guide at https://edp.fortanix.com/docs/installation/guide/ on how to use 'cargo run' or follow the steps at https://edp.fortanix.com/docs/tasks/deployment/ for manual deployment.

When the ELF file is converted to an SGXS using `elf2sgxs`, the old entry point is still set as the enclave entry point. In a future pull request in the rust-sgx repository, `elf2sgxs` will be modified to remove the code in the ELF entry point, since this code is not needed in the enclave.
2019-12-14 04:08:50 +00:00
bors
8843b28e64 Auto merge of #65951 - estebank:type-inference-error, r=nikomatsakis
Point at method call when type annotations are needed

- Point at method call instead of whole expression when type annotations are needed.
- Suggest use of turbofish on function and methods.

Fix #49391, fix #46333, fix #48089. CC #58517, #63502, #63082.

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

r? @nikomatsakis
2019-12-13 22:56:27 +00:00
bors
ff15e96708 Auto merge of #67284 - Centril:rollup-ghiukob, r=Centril
Rollup of 7 pull requests

Successful merges:

 - #67026 (Improve diagnostics and code for exhaustiveness of empty matches)
 - #67235 (VecDeque: drop remaining items on destructor panic)
 - #67254 (dont ICE in case of invalid drop fn)
 - #67256 (Reduce allocs for validation errors)
 - #67274 (be explicit that mem::uninitialized is the same as MaybeUninit::uninit().assume_init())
 - #67278 (`coerce_inner`: use initial `expected_ty`)
 - #67280 (docs: std::convert::From: Fix typo)

Failed merges:

r? @ghost
2019-12-13 19:39:20 +00:00
Mazdak Farrokhzad
d0cc289ec0
Rollup merge of #67280 - shalzz:patch-1, r=jonas-schievink
docs: std::convert::From: Fix typo

Fix a minor typo
2019-12-13 20:35:37 +01:00
Mazdak Farrokhzad
0f30462efa
Rollup merge of #67278 - Centril:67273, r=oli-obk
`coerce_inner`: use initial `expected_ty`

Fixes #67273.
Follow-up to #59439.

r? @oli-obk
2019-12-13 20:35:36 +01:00
Mazdak Farrokhzad
83536a5c82
Rollup merge of #67274 - RalfJung:uninit, r=Centril
be explicit that mem::uninitialized is the same as MaybeUninit::uninit().assume_init()

Cc @Centril @nikomatsakis
2019-12-13 20:35:34 +01:00
Mazdak Farrokhzad
88e702a6ec
Rollup merge of #67256 - RalfJung:reduce-allocs, r=oli-obk
Reduce allocs for validation errors

This probably doesn't really matter, but I just felt like I had to do this...

r? @oli-obk
2019-12-13 20:35:33 +01:00
Mazdak Farrokhzad
a0be3a683d
Rollup merge of #67254 - RalfJung:vtable-ice, r=oli-obk
dont ICE in case of invalid drop fn

Fixes https://github.com/rust-lang/miri/issues/1112

r? @oli-obk
2019-12-13 20:35:31 +01:00
Mazdak Farrokhzad
48164f8a17
Rollup merge of #67235 - jonas-schievink:vecdeque-leak, r=KodrAus
VecDeque: drop remaining items on destructor panic

Closes https://github.com/rust-lang/rust/issues/67232
2019-12-13 20:35:30 +01:00
Mazdak Farrokhzad
df9e491fb2
Rollup merge of #67026 - Nadrieril:improve-usefulness-empty, r=varkor,Centril,estebank
Improve diagnostics and code for exhaustiveness of empty matches

There was a completely separate check and diagnostics for the case of an empty match. This led to slightly different error messages and duplicated code.
This improves code reuse and generally clarifies what happens for empty matches. This also clarifies the action of the `exhaustive_patterns` feature, and ensures that this feature doesn't change diagnostics in places it doesn't need to.
2019-12-13 20:35:28 +01:00
Patrick Wang
b65c6ec10f
Fix incorrect example code of OpenOptions::open 2019-12-14 03:12:50 +08:00
Dylan MacKenzie
faa52d1cda Correctly mark things as min_const_fn 2019-12-13 10:48:55 -08:00
ecstatic-morse
0f0bfc9c22 Document Features::enabled
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-12-13 10:48:55 -08:00
Dylan MacKenzie
029725f139 Use correct nightly version for feature 2019-12-13 10:39:15 -08:00
Dylan MacKenzie
598bed6f51 Ensure test actually uses dataflow, not simulation 2019-12-13 10:39:15 -08:00
Dylan MacKenzie
34ce0ba919 Use better name for local containing required feature gates 2019-12-13 10:39:15 -08:00
Dylan MacKenzie
80581be2c0 Replace Index impl with enabled method 2019-12-13 10:39:15 -08:00
Dylan MacKenzie
2b5ae1cb06 Apply suggestions from review 2019-12-13 10:39:14 -08:00
ecstatic-morse
b3aecd0d55 Fix grammar in test description
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-12-13 10:39:14 -08:00
Dylan MacKenzie
a2a077460b Look for "unstable feature" error code in test
Conditionals and loops now have unstable features, and `feature_err` has
its own error code. I think that `feature_err` should take an error code
as a parameter, but don't have the energy to make this change throughout
the codebase. Also, the error code system may be torn out entirely.
2019-12-13 10:39:14 -08:00
Dylan MacKenzie
a8e997c819 Improve comment 2019-12-13 10:39:14 -08:00
Dylan MacKenzie
2add77dffb Improve message when active feature indexing panics 2019-12-13 10:39:14 -08:00
Dylan MacKenzie
3325671036 Bless modified tests 2019-12-13 10:39:14 -08:00
Dylan MacKenzie
caa7c99172 Bless unrelated tests with new help message 2019-12-13 10:39:14 -08:00
Dylan MacKenzie
1122404be5 Add qualif smoke tests for const loops 2019-12-13 10:39:14 -08:00
Dylan MacKenzie
99e132db97 Extend control flow basics tests with loops 2019-12-13 10:39:14 -08:00
Dylan MacKenzie
ee233c07c6 Restructue HIR const-checker to handle features with multiple gates 2019-12-13 10:38:29 -08:00
Dylan MacKenzie
8f59902aad Put MIR checks for loops behind the feature flag 2019-12-13 10:38:29 -08:00
Dylan MacKenzie
57959b2bdc Add feature gate for const_loop 2019-12-13 10:38:29 -08:00
Dylan MacKenzie
8f3021bd2c Get active features dynamically by their Symbol 2019-12-13 10:38:29 -08:00
Shaleen Jain
9abde64a4e
docs: std::convert::From: Fix typo
Fix a minor typo
2019-12-13 23:20:02 +05:30
bors
703c82e531 Auto merge of #62359 - euclio:remove-serialize, r=Dylan-DPC
replace serialize with serde in rustdoc

This is a slightly less aggressive version of #61028.

r? @GuillaumeGomez
2019-12-13 16:14:47 +00:00
Mazdak Farrokhzad
f97c37f8ae coerce_inner: use initial expected_ty 2019-12-13 15:52:51 +01:00
Oliver Scherer
0b47ba7019 The constness of 128 bit atomics will be stabilized together with the atomics 2019-12-13 13:28:55 +01:00
Ralf Jung
216b9ae878 be explicit that mem::uninitialized is the same as MaybeUninit::uninit().assume_init() 2019-12-13 13:13:37 +01:00
Oliver Scherer
f12affef12 Address review comments 2019-12-13 11:27:02 +01:00