Commit Graph

10284 Commits

Author SHA1 Message Date
Ralf Jung
19ebe2fb6d clarify why we can do the ptr cast 2019-11-13 09:07:52 +01:00
Ralf Jung
aba385abbd Trailing full stop
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-11-13 09:05:57 +01:00
bors
0f12bad718 Auto merge of #66156 - Mark-Simulacrum:stage0-step, r=pietroalbini
Stage0 step

r? @pietroalbini
2019-11-13 00:42:19 +00:00
Mark Rousskov
997feacddd Snap cfgs 2019-11-12 16:36:57 -05:00
bors
a333eed7fc Auto merge of #60026 - Aaron1011:feature/miri-unwind, r=RalfJung,oli-obk
Add hooks for Miri panic unwinding

This commits adds in some additional hooks to allow Miri to properly
handle panic unwinding. None of this should have any impact on CTFE mode

This supports https://github.com/rust-lang/miri/pull/693
2019-11-12 21:27:04 +00:00
Yuki Okushi
e7d2fa4ca4 Rollup merge of #66230 - Axelderan:remove-vestigial-comments, r=alexcrichton
remove vestigial comments referring to defunct numeric trait hierarchy

I've been poking around the numeric trait hierarchy and also some of the actual numeric type implementations.

This is a small change but a matter of effective communication.  I looked for other related references and saw none.
2019-11-12 16:36:03 +09:00
Lzu Tao
e8f3a9ffbe add Result::map_or 2019-11-12 03:22:04 +00:00
Lzu Tao
c06a8ea727 stabilize Result::map_or_else 2019-11-12 03:09:10 +00:00
Lzu Tao
2de6c35d46 make Result::map_or_else consistent with Option::map_or_else 2019-11-12 03:08:19 +00:00
Aaron Hill
5553476d49 Use proper intrinsic type 2019-11-11 15:14:35 -05:00
Aaron Hill
848e1d827e More work on miri_start_panic 2019-11-11 15:14:35 -05:00
Aaron Hill
fe88fc03c5 Fix up intrinsic implementation 2019-11-11 15:14:34 -05:00
Aaron Hill
caf3cc1fc8 Add explicit Miri support to libpanic_unwind 2019-11-11 15:14:34 -05:00
Yuki Okushi
9db3fddfe9 Rollup merge of #66217 - RalfJung:diagnostic-items, r=Centril
invalid_value lint: use diagnostic items

This adjusts the invalid_value lint to use diagnostic items.

@Centril @oli-obk For some reason, this fails to recognize `transmute` -- somehow the diagnostic item is not found. Any idea why?

r? @Centril

Cc https://github.com/rust-lang/rust/issues/66075
2019-11-10 09:27:19 +09:00
Christopher Durham
b9da350b09 Fix typo
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-11-09 18:28:41 -05:00
Christopher Durham
183e61b661 Fix Layout::pad_to_align type mismatch 2019-11-09 15:28:32 -05:00
Christopher Durham
fd3594b9ee Layout::pad_to_align is infallible 2019-11-09 15:19:09 -05:00
Ralf Jung
1b8b2ee6f9 add raw ptr variant of UnsafeCell::get 2019-11-09 12:34:29 +01:00
Ralf Jung
769d52774b partially port invalid_value lint to diagnostic items 2019-11-09 10:34:16 +01:00
bors
5a5027519a Auto merge of #66242 - Centril:rollup-h73ztr1, r=Centril
Rollup of 6 pull requests

Successful merges:

 - #65949 (Move promotion into its own pass)
 - #65994 (Point at where clauses where the associated item was restricted)
 - #66050 (Fix C aggregate-passing ABI on powerpc)
 - #66134 (Point at formatting descriptor string when it is invalid)
 - #66172 (Stabilize @file command line arguments)
 - #66226 (add link to unstable book for asm! macro)

Failed merges:

r? @ghost
2019-11-09 09:33:13 +00:00
bors
98c173afe4 Auto merge of #65879 - ohadravid:stabilize-re-rebalance-coherence, r=nikomatsakis
Stabilize the `re_rebalance_coherence` feature

This PR stabilizes [RFC 2451](https://rust-lang.github.io/rfcs/2451-re-rebalancing-coherence.html), re-rebalance coherence.

Changes include removing the attribute from tests which tested both the old and new behavior, moving the feature to `accepted` and removing the old logic.

I'll also open a [PR](https://github.com/rust-lang-nursery/reference/pull/703) against the reference, updating it with the content of the RFC.

Closes #63599

r? @nikomatsakis
2019-11-09 05:57:14 +00:00
Alexander Nye
619f057dae remove vestigial comments referring to defunct numeric trait hierarchy
see also https://github.com/rust-lang/rust/pull/23104/files
2019-11-08 13:51:07 -08:00
Lzu Tao
3db1005c9d add link to unstable book for asm! macro 2019-11-08 15:58:25 +00:00
Yuki Okushi
a00c777b75 Rollup merge of #65580 - SimonSapin:maybeuninit-array, r=Amanieu
Add `MaybeUninit` methods `uninit_array`, `slice_get_ref`, `slice_get_mut`

Eventually these will hopefully become the idiomatic way to work with partially-initialized stack buffers.

All methods are unstable. Note that `uninit_array` takes a type-level `const usize` parameter, so it is blocked (at least in its current form) on const generics.

Example:

```rust
use std::mem::MaybeUninit;

let input = b"Foo";
let f = u8::to_ascii_uppercase;

let mut buffer: [MaybeUninit<u8>; 32] = MaybeUninit::uninit_array();
let vec;
let output = if let Some(buffer) = buffer.get_mut(..input.len()) {
    buffer.iter_mut().zip(input).for_each(|(a, b)| { a.write(f(b)); });
    unsafe { MaybeUninit::slice_get_ref(buffer) }
} else {
    vec = input.iter().map(f).collect::<Vec<u8>>();
    &vec
};

assert_eq!(output, b"FOO");
```
2019-11-08 13:42:14 +09:00
Peter Todd
8fad66b431 Implement Debug for MaybeUninit
Precedent: UnsafeCell implements Debug even though it can't actually
display the value.
2019-11-07 08:50:18 -05:00
Mazdak Farrokhzad
379b19c17f Rollup merge of #63793 - oli-obk:🧹, r=dtolnay
Have tidy ensure that we document all `unsafe` blocks in libcore

cc @rust-lang/libs

I documented a few and added ignore flags on the other files. We can incrementally document the files, but won't regress any files this way.
2019-11-07 14:27:20 +01:00
Simon Sapin
639c4f779c MaybeUninit::uninit_array docs: better example 2019-11-07 12:05:01 +01:00
Simon Sapin
05c14bcc31 Apply docs suggestions from review
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-11-07 12:05:01 +01:00
Simon Sapin
1906c6f714 Add MaybeUninit methods uninit_array, slice_get_ref, slice_get_mut 2019-11-07 12:05:00 +01:00
Mazdak Farrokhzad
c9eae9ea63 Rollup merge of #66017 - LukasKalbertodt:array-into-iter-lint, r=matthewjasper
Add future incompatibility lint for `array.into_iter()`

This is for #65819. This lint warns when calling `into_iter` on an array directly. That's because today the method call resolves to `<&[T] as IntoIterator>::into_iter` but that would change when adding `IntoIterator` impls for arrays. This problem is discussed in detail in #65819.

We still haven't decided how to proceed exactly, but it seems like adding a lint is a good idea regardless?

Also: this is the first time I implement a lint, so there are probably a lot of things I can improve. I used a different strategy than @scottmcm describes [here](https://github.com/rust-lang/rust/pull/65819#issuecomment-548667847) since I already started implementing this before they commented.

### TODO

- [x] Decide if we want this lint -> apparently [we want](https://github.com/rust-lang/rust/pull/65819#issuecomment-548964818)
- [x] Open a lint-tracking-issue and add the correct issue number in the code -> https://github.com/rust-lang/rust/issues/66145
2019-11-07 08:51:58 +01:00
Yuki Okushi
a2b4ad439c Rollup merge of #66117 - olegnn:fixed_linked_list_marker, r=RalfJung
Fixed PhantomData markers in Arc and Rc

Include owned internal structs in `PhantomData` markers in `Arc` (`PhantomData<T>` => `PhantomData<ArcInner<T>>`) and `Rc` (`PhantomData<T>` => `PhantomData<RcBox<T>>`).
2019-11-07 09:20:44 +09:00
Yuki Okushi
b94a2f9e38 Rollup merge of #66111 - RalfJung:from_raw_parts, r=Centril
improve from_raw_parts docs

Triggered by https://github.com/rust-lang/rfcs/pull/2806. Hopefully this helps clarify that joining slices across allocations is not possible in Rust currently.

r? @Centril
2019-11-07 09:20:41 +09:00
Yuki Okushi
12ffe5ffdd Rollup merge of #66044 - RalfJung:uninit-lint, r=oli-obk
Improve uninit/zeroed lint

* Also warn when creating a raw pointer with a NULL vtable.
* Also identify `MaybeUninit::uninit().assume_init()` and `MaybeUninit::zeroed().assume_init()` as dangerous.
2019-11-07 09:20:36 +09:00
Yuki Okushi
082a07695b Rollup merge of #65794 - Centril:unimpl-internal, r=varkor
gate rustc_on_unimplemented under rustc_attrs

Move `rustc_on_implemented` from the `on_implemented` gate to `rustc_attrs` as it is internal.

Closes #29628

r? @varkor
2019-11-07 09:20:33 +09:00
Lukas Kalbertodt
b492c97a31 Add future incompatibility lint for array.into_iter()
As we might want to add `IntoIterator` impls for arrays in the future,
and since that introduces a breaking change, this lint warns and
suggests using `iter()` instead (which is shorter and more explicit).
2019-11-06 14:43:28 +01:00
Oliver Scherer
e28287b32c The unsafety in iter.rs is already documented wonderfully 2019-11-06 11:04:42 +01:00
Oliver Scherer
97633f814d Silence a deprecation warning 2019-11-06 11:04:42 +01:00
Oliver Scherer
954fc71962 Halloween... time to get rid of 👻 2019-11-06 11:04:42 +01:00
Oliver Scherer
02f9167f94 Have tidy ensure that we document all unsafe blocks in libcore 2019-11-06 11:04:42 +01:00
Mazdak Farrokhzad
1c7595fd0f gate rustc_on_unimplemented under rustc_attrs 2019-11-06 07:34:51 +01:00
Mazdak Farrokhzad
24af0c94b3 Rollup merge of #65973 - eddyb:caller-location-panic, r=petrochenkov
caller_location: point to macro invocation sites, like file!/line!, and use in core::panic!.

The main change here is to `core::panic!`, trying to fix this remaining regression: https://github.com/rust-lang/rust/pull/65927#issuecomment-547625147

However, in order for `caller_location` to be usable from macros the same way `file!()`/`line!()` are, it needs to have the same behavior (of extracting the macro invocation site `Span` and using that).

Arguably we would've had to do this at some point anyway, if we want to use `#[track_caller]` to replace the `file!()`/`line!()` uses from macros, but I'm not sure the RFC mentions this at all.

r? @petrochenkov cc @anp @nnethercote
2019-11-06 07:03:03 +01:00
Oleg Nosov
6a5931921c Fixed libcore/cell.rs example 2019-11-06 01:03:31 +03:00
Ralf Jung
11a48a0423 Apply suggestions from code review
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-11-05 21:50:55 +01:00
Oleg Nosov
45f281d461 Reverted PhantomData in LinkedList, fixed PhantomData markers in Rc and Arc 2019-11-05 23:36:54 +03:00
Pietro Albini
54c57a2f21 Rollup merge of #65948 - danielhenrymantilla:doc/maybe_uninit_ref_mut, r=RalfJung
Improve MaybeUninit::get_{ref,mut} documentation

As mentioned in https://github.com/rust-lang/rust/issues/63568#issuecomment-544106668, `MaybeUninit`'s `get_{ref,mut}` documentation is lacking, so this PR attempts to fix that.

That being said, and as @RalfJung mentions in that thread,

> In particular, we should clarify that all the UB rules for these methods equally apply when calling the raw ptr methods and creating a reference manually.

these other docs also need to be improved, which I can do in this PR ~~(hence the `[WIP]`)~~.

Finally, since all these documentations are related to clearly establishing when dealing with uninitialized memory which patterns are known to be sound and which patterns are currently UB (that is, until, if ever, the rules around references to unintialized integers get relaxed, this documentation will treat them as UB, and advise against such patterns (_e.g._, it is not possible to use uninitialized buffers with the `Read` API)), I think that adding even more examples to the main documentation of `MaybeUninit` inherent definition wouldn't hurt either.

___

  - [Rendered](http://dreamy-ritchie-99d637.netlify.com/core/mem/union.maybeuninit#method.get_ref)
2019-11-05 14:36:55 +01:00
Ralf Jung
b1d0a68fd7 fix link to ptr docs 2019-11-05 13:22:43 +01:00
Ralf Jung
1a254e4f43 expand slice from_raw_part docs 2019-11-05 09:55:33 +01:00
Pietro Albini
d32a262ab8 Rollup merge of #66038 - jdxcode:char-len, r=alexcrichton
doc(str): show example of chars().count() under len()

the docs are great at explaining that .len() isn't like in other
languages but stops short of explaining how to get the character length.
2019-11-05 09:49:56 +01:00
Pietro Albini
c25975d327 Rollup merge of #66019 - olegnn:fixed_std_iter_chain_docs, r=Mark-Simulacrum
Improved std::iter::Chain documentation

Replaces `strings two iterators` by `links two iterators` in `std::iter::Chain` documentation.

I didn't find any meaning of `strings` which can be evaluated as `links` or `joins`.

I don't think that `std::iter:Chain` works as a stringer or plays billiards. (https://www.lexico.com/en/definition/string).
2019-11-05 09:49:55 +01:00
Pietro Albini
370d01aea7 Rollup merge of #65962 - kevincox:patch-1, r=sfackler
Fix logic in example.

The example claims SuperiorThanZero and presumably Zero is not Superior than itself so it should not be allowed.
2019-11-05 09:49:53 +01:00