Commit graph

9940 commits

Author SHA1 Message Date
Dodo
4785311893 fix double wording 2019-07-16 21:49:01 +02:00
Ralf Jung
d30b36efc5 state also in the intro that UnsafeCell has no effect on &mut 2019-07-16 14:47:51 +02:00
Simon Sapin
8040c54b08 Stabilize <*mut _>::cast and <*const _>::cast
FCP: https://github.com/rust-lang/rust/issues/60602#issuecomment-511146402
2019-07-16 08:51:53 +02:00
Mark Rousskov
ba3deeb01a
Rollup merge of #62689 - 0e4ef622:patch-1, r=Xanewok
Fix typo in RawWaker::new documentation

poiner -> pointer
2019-07-15 19:55:15 -04:00
Mark Rousskov
aa480100b3
Rollup merge of #62662 - DutchGhost:fix_space, r=sfackler
add spaces in front of trait requirements in libcore/cell.rs

Adds spaces before trait requirements in `libcore/cell.rs`.
2019-07-15 19:55:08 -04:00
Mark Rousskov
ee8194002e
Rollup merge of #62639 - immunant:invariant_valistimpl, r=eddyb
Make VaListImpl<'f> invariant over the 'f lifetime

After doing some research on variance and going back to look at `VaList` and `VaListImpl`, I realized that `VaList<'a, 'f>` is invariant over the `'f` lifetime (and covariant over `'a`), but `VaListImpl<'f>` isn't invariant but probably should be. This patch makes `VaListImpl<'f>` invariant over `'f`.

r? @eddyb
cc @dlrobertson
2019-07-15 19:55:06 -04:00
Mark Rousskov
caf10b5ffe
Rollup merge of #62634 - llogiq:uninit-array-docs, r=RalfJung
Less unsafe in the array example of MaybeUninit docs

I believe this is an acceptable way to initialize elements of `[MaybeUninit<T>; _]` arrays. Miri agrees. Conceptually, we are working at the array level, above the `MaybeUninit`, and as we are replacing it wholesale, this should pose no problem to soundness. And the code is easier to read.

r? @RalfJung
2019-07-15 19:55:04 -04:00
Mark Rousskov
64ceba73af
Rollup merge of #62533 - GuillaumeGomez:missing-urls-CannotReallocInPlace, r=QuietMisdreavus
Add missing links for CannotReallocInPlace type

r? @QuietMisdreavus
2019-07-15 19:55:03 -04:00
Mark Rousskov
d6f0c0c47d
Rollup merge of #62491 - GuillaumeGomez:fix-pin-urls-for-option, r=QuietMisdreavus
Fix Pin urls in Option documentation

Fixes the following situation:

![Screenshot from 2019-07-08 13-24-59](https://user-images.githubusercontent.com/3050060/60806822-55dfdc00-a184-11e9-9ee3-279e82fc92bd.png)

r? @QuietMisdreavus
2019-07-15 19:55:01 -04:00
Mark Rousskov
f940617b8e
Rollup merge of #62103 - RalfJung:debug-assert, r=alexcrichton
Add debug assertions to write_bytes and copy*

Looks like @nitnelave  went MIA in https://github.com/rust-lang/rust/pull/58783, so I am re-submitting their PR, tweaked just a bit. I took care to preserve commit authorship.

Cc https://github.com/rust-lang/rust/issues/53871
2019-07-15 19:54:58 -04:00
0e4ef622
04cb314ab9
Fix typo in RawWaker::new documentation
poiner -> pointer
2019-07-15 10:03:53 -05:00
Valentin Tolmer
009c4a7efe Add debug assertions to write_bytes and copy* 2019-07-15 16:56:43 +02:00
gnzlbg
677cf3de3a Add rtm and f16c features to libcore 2019-07-15 14:05:39 +02:00
gnzlbg
77c14a5c5f Update the stdarch submodule 2019-07-15 14:05:28 +02:00
Andrei Homescu
0c981e0a8a Make VaListImpl<'f> invariant over the 'f lifetime 2019-07-14 18:14:15 -07:00
Andre Bogus
cb3aa4ce2c Less unsafe in the array example of MaybeUninit docs 2019-07-14 13:32:14 +02:00
Ralf Jung
3f77f2cd5b better comments 2019-07-14 10:03:04 +02:00
Dodo
4e1d467700 add spaces in front of trait requirements 2019-07-13 17:15:16 +02:00
Ralf Jung
d73c23d114 explain how to search without owned data 2019-07-13 15:16:05 +02:00
Andy Russell
dee3d27d9d
allow clippy::unreadable_literal in unicode tables
Also modifies the generation script to emit 2018 edition paths.
2019-07-12 22:51:37 -04:00
Josh Stone
de1e489115 Regenerate character tables for Unicode 12.1 2019-07-12 16:29:40 -07:00
Josh Stone
76128c304d Update unicode scripts for the current coding style 2019-07-12 16:28:58 -07:00
Mazdak Farrokhzad
d69e9588f0
Rollup merge of #62599 - RalfJung:uninit, r=cramertj
move mem::uninitialized deprecation back by 1 release, to 1.39

As per discussion at https://github.com/rust-lang/rust/issues/53491#issuecomment-509271182. Three releases also agrees with the precedent from `trim_left/right`. Three releases means that even nightly users (including rustc itself) get a full cycle from when the announcement is made in the stable release to when nightly starts to warn.
2019-07-12 22:46:49 +02:00
Mazdak Farrokhzad
f169b15e1d
Rollup merge of #62431 - czipperz:add-messages-to-must-use-is_-methods, r=scottmcm
Add messages to `Option`'s and `Result`'s `must_use` annotation for `is_*`

r? @RalfJung
2019-07-12 22:46:41 +02:00
Josh Stone
74c8d984db Add tracking issue 62633 2019-07-12 13:07:53 -07:00
Ralf Jung
608249703c move mem::uninitialized deprecation back by 1 release, to 1.39 2019-07-11 22:24:01 +02:00
Josh Stone
955979ab28 Make cold unwraps take &dyn Debug 2019-07-11 12:40:38 -07:00
Josh Stone
5a7e730935 Add Option::expect_none(msg) and unwrap_none()
These are `Option` analogues to `Result::expect_err` and `unwrap_err`.
2019-07-11 12:05:14 -07:00
Steven Fackler
5a4845d0d4 Implement Unpin for all raw pointers
Like references and boxes, moving the pointer doesn't move the
pointed-to value, so this is safe.
2019-07-10 21:58:01 -07:00
Mazdak Farrokhzad
f9034ce8bc
Rollup merge of #62557 - taiki-e:typo, r=Centril
Fix typo in libcore/intrinsics.rs
2019-07-11 04:33:20 +02:00
Mazdak Farrokhzad
7697b2927f
Rollup merge of #62476 - petrochenkov:expref, r=matthewjasper
Continue refactoring macro expansion and resolution

This PR continues the work started in https://github.com/rust-lang/rust/pull/62042.
It contains a set of more or less related refactorings with the general goal of making things simpler and more orthogonal.
Along the way most of the issues uncovered in https://github.com/rust-lang/rust/pull/62086 are fixed.

The PR is better read in per-commit fashion with whitespace changes ignored.
I tried to leave some more detailed commit messages describing the motivation behind the individual changes.

Fixes https://github.com/rust-lang/rust/issues/44692
Fixes https://github.com/rust-lang/rust/issues/52363
Unblocks https://github.com/rust-lang/rust/pull/62086
r? @matthewjasper
2019-07-11 04:33:17 +02:00
Mazdak Farrokhzad
ea62f9b3ec
Rollup merge of #61665 - aschampion:slice-eq-ptr, r=sfackler
core: check for pointer equality when comparing Eq slices

Because `Eq` types must be reflexively equal, an equal-length slice to the same memory location must be equal.

This is related to #33892 (and #32699) answering this comment from that PR:

> Great! One more easy question: why does this optimization not apply in the non-BytewiseEquality implementation directly above?

Because slices of non-reflexively equal types (like `f64`) are not equal even if it's the same slice. But if the types are `Eq`, we can use this same-address optimization, which this PR implements. Obviously this changes behavior if types violate the reflexivity condition of `Eq`, because their impls of `PartialEq` will no longer be called per-item, but 🤷‍♂ .

It's not clear how often this optimization comes up in the real world outside of the same-`&str` case covered by #33892, so **I'm requesting a perf run** (on MacOS today, so can't run `rustc_perf` myself). I'm going ahead and making the PR on the basis of being surprised things didn't already work this way.

This is my first time hacking rust itself, so as a perf sanity check I ran `./x.py bench --stage 0 src/lib{std,alloc}`, but the differences were noisy.

To make the existing specialization for `BytewiseEquality` explicit, it's now a supertrait of `Eq + Copy`. `Eq` should be sufficient, but `Copy` was included for clarity.
2019-07-11 04:33:11 +02:00
Vadim Petrochenkov
dcd30a4b17 hygiene: Fix wording of desugaring descriptions
Use variant names rather than descriptions for identifying desugarings in `#[rustc_on_unimplemented]`.
Both are highly unstable, but variant name is at least a single identifier.
2019-07-11 00:12:57 +03:00
Vadim Petrochenkov
f1d4ebf015 Remove unnecessary expansions created by #[test_case/test/bench]
The expansions were created to allow unstable things inside `#[test_case/test/bench]`, but that's not a proper way to do that.
Put the required `allow_internal_unstable`s into the macros' properties instead.
2019-07-11 00:12:07 +03:00
Mazdak Farrokhzad
d0cec040de
Rollup merge of #62493 - Freyskeyd:valid_example_read-write_unaligned, r=rkruppe
#62357: doc(ptr): add example for {read,write}_unaligned

related to #62357

> With #62323 the only example (that had UB and was thus invalid) in std::ptr::read_unaligned and std::ptr::write_unaligned is removed.

> We should add a valid example of using the aforementioned functions.

Signed-off-by: Freyskeyd <simon.paitrault@gmail.com>
2019-07-10 16:08:24 +02:00
Mazdak Farrokhzad
ad21558b85
Rollup merge of #62481 - czipperz:iterator-last-nth-use-for_each, r=scottmcm
Use `fold` in `Iterator::last` default implementation

We already use it in all the other methods.  Consistency + potential perf is a pretty nice win!
2019-07-10 16:08:23 +02:00
Taiki Endo
70e8ba38b6 Fix typo in libcore/intrinsics.rs 2019-07-10 16:27:39 +09:00
Chris Gregory
76a8bc2473 Use fold in Iterator::last
Replace last impl with fold
2019-07-09 21:26:49 -07:00
Mazdak Farrokhzad
b14b20c638
Rollup merge of #62278 - cuviper:iter-partition, r=alexcrichton
Add Iterator::partition_in_place() and is_partitioned()

`partition_in_place()` swaps `&mut T` items in-place to satisfy the
predicate, so all `true` items precede all `false` items. This requires
a `DoubleEndedIterator` so we can search from front and back for items
that need swapping.

`is_partitioned()` checks whether the predicate is already satisfied.
2019-07-10 05:14:06 +02:00
Josh Stone
7171c83ab2 Tracking issue 62544 for iter_is_partitioned 2019-07-09 15:18:33 -07:00
Josh Stone
4c22e48f6e Tracking issue 62543 for iter_partition_in_place 2019-07-09 15:17:47 -07:00
Tim Vermeulen
56ebfb185b Implement DoubleEndedIterator for iter::{StepBy, Peekable, Take} 2019-07-09 23:38:57 +02:00
Josh Stone
265e3a6230 Unit test Iterator::partition_in_place and is_partitioned 2019-07-09 12:39:25 -07:00
Josh Stone
0492f972c7 Return the true count from partition_in_place 2019-07-09 12:39:25 -07:00
Josh Stone
cd0ebc43c7 Rename partition_mut to partition_in_place 2019-07-09 12:39:25 -07:00
Josh Stone
cdeec0a618 Capitalize example comment
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-07-09 12:39:25 -07:00
Josh Stone
60f1449b61 Add Iterator::partition_mut() and is_partitioned()
`partition_mut()` swaps `&mut T` items in-place to satisfy the
predicate, so all `true` items precede all `false` items. This requires
a `DoubleEndedIterator` so we can search from front and back for items
that need swapping.

`is_partitioned()` checks whether the predicate is already satisfied.
2019-07-09 12:39:25 -07:00
Aleksey Kladov
b052fbb54b
Apply suggestions from code review
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-07-09 19:10:22 +03:00
Freyskeyd
bc322af444
doc(ptr): add example for {read,write}_unaligned
Signed-off-by: Freyskeyd <simon.paitrault@gmail.com>
2019-07-09 16:55:00 +02:00
Guillaume Gomez
4c1332afd9 Add missing links for CannotReallocInPlace type 2019-07-09 16:21:59 +02:00