Commit Graph

88171 Commits

Author SHA1 Message Date
Taylor Cramer
610bcaf6f3 Stabilize Pin 2018-12-21 20:42:50 -08:00
Taylor Cramer
20d694a95f Update Pin API to match the one proposed for stabilization
Remove pin::Unpin reexport and add Unpin to the prelude.
Change Pin associated functions to methods.
Rename get_mut_unchecked_ to get_unchecked_mut
Remove impl Unpin for Pin
Mark Pin repr(transparent)
2018-12-21 20:41:24 -08:00
bors
24667aa19d Auto merge of #56824 - euclio:internal-apis, r=QuietMisdreavus
rustdoc: display rustc_private APIs as "Internal"

This PR updates the display of `rustc_private` APIs to be "Internal" instead of "Experimental", and changes the colors appropriately. It also updates the copy of the `rustc_private` feature to sound more informative and less like a compiler suggestion.

The PR additionally contains a significant refactor of the `short_stability` function to remove duplication and fix a few rendering bugs due to extra or missing spaces.

Before:

![screen shot 2018-12-14 at 11 45 28 am](https://user-images.githubusercontent.com/1372438/50015926-c9768d80-ff95-11e8-9649-5df29df6909b.png)

After:

![screen shot 2018-12-14 at 11 45 11 am](https://user-images.githubusercontent.com/1372438/50015934-cf6c6e80-ff95-11e8-912b-74b893f55425.png)
2018-12-22 04:21:30 +00:00
bors
abaa9344d4 Auto merge of #56805 - mikeyhew:stabilize-pin-as-receiver, r=nikomatsakis
Stabilize `Rc`, `Arc` and `Pin` as method receivers

Replaces #55880
Closes  #55786
r? @nikomatsakis
cc @withoutboats @cramertj

This lets you write methods using `self: Rc<Self>`, `self: Arc<Self>`, `self: Pin<&mut Self>`, `self: Pin<Box<Self>`, and other combinations involving `Pin` and another stdlib receiver type, without needing the `arbitrary_self_types`. Other user-created receiver types can be used, but they still require the feature flag to use.

This is implemented by introducing a new trait, `Receiver`, which the method receiver's type must implement if the `arbitrary_self_types` feature is not enabled. To keep composed receiver types such as `&Arc<Self>` unstable, the receiver type is also required to implement `Deref<Target=Self>` when the feature flag is not enabled.

This lets you use `self: Rc<Self>` and `self: Arc<Self>` in stable Rust, which was not allowed previously. It was agreed that they would be stabilized in #55786. `self: Pin<&Self>` and other pinned receiver types do not require the `arbitrary_self_types` feature, but they cannot be used on stable because `Pin` still requires the `pin` feature.
2018-12-22 01:42:25 +00:00
bors
a9ff13562f Auto merge of #57033 - nikic:inhabitedness-perf, r=varkor
Remove "visited" set from inhabitedness checking (fix perf regression)

Now that references are no longer recursively checked, this should no longer be necessary, and it's a major performance bottleneck.

This should fix #57028.

r? @varkor
2018-12-21 23:00:55 +00:00
Nikita Popov
097d39d8ec Fix alignment for array indexing
We need to reduce the alignment with the used offset. If the offset
isn't known, we need to reduce with the element size to support
arbitrary offsets.
2018-12-21 23:51:55 +01:00
Mazdak Farrokhzad
0203a1cc31 exhaustive_integer_patterns slipped 1.32; stabilized in 1.33. 2018-12-21 21:27:04 +01:00
Mazdak Farrokhzad
34dc5c8980 macro_literal_matcher was stabilized in 1.32; not 1.32. 2018-12-21 21:25:32 +01:00
bors
e40548bc43 Auto merge of #56779 - adrian-budau:master, r=alexcrichton
On musl targets assume certain symbols exist (like pipe2 and accept4).

This fixes #56675.

I don't know if this is the best solution, or if I should also add some tests so I'm waiting for some feedback.

Thanks!
2018-12-21 20:08:11 +00:00
Ryan Marcus
51e4c1f320
Fixed typo in HashMap documentation
Previously "with a custom type as key", now "with a custom key type"
2018-12-21 14:50:25 -05:00
Taylor Cramer
e5e19d9608 Remove unstable-book repr-packed entry 2018-12-21 10:37:55 -08:00
Taylor Cramer
87c8cdd8ef Stabilize #[repr(packed(N))] 2018-12-21 10:18:38 -08:00
Adrian Budau
bf172c532a Properly report ENOSYS by modifying errno 2018-12-21 15:53:37 +02:00
Otavio Salvador
8c40aedb8f Fix feature gate to point to 1.32.0 for path_from_str
When the feature has been added back (#55148) the feature gate has not
been adjusted accordingly. We have it enabled for 1.32.0, currently in
Beta, so adjust it.

Refs: #44431.

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
2018-12-21 11:33:59 -02:00
Oliver Scherer
6ed596ebe2 Update tests to changes on master 2018-12-21 13:39:45 +01:00
John Kåre Alsaker
2426f7c39d Uninline some debugging code and use unlikely! macro 2018-12-21 12:16:05 +01:00
John Kåre Alsaker
4f30a24e42 Inline tweaks 2018-12-21 12:09:43 +01:00
bors
01c6ea2f37 Auto merge of #56813 - oli-obk:main_🧶, r=pnkfelix
Always run rustc in a thread

cc @ishitatsuyuki @eddyb

r? @pnkfelix

[Previously](https://github.com/rust-lang/rust/pull/48575) we moved to only producing threads when absolutely necessary. Even before we opted to only create threads in some cases, which [is unsound](https://github.com/rust-lang/rust/pull/48575#issuecomment-380635967) due to the way we use thread local storage.
2018-12-21 10:46:11 +00:00
Nikita Popov
a8babed8a3 Remove "visited" set from inhabitedness checking
Now that references are no longer recursively checked, this should
no longer be necessary, and it's a major performance bottleneck.
2018-12-21 11:44:05 +01:00
Ralf Jung
3414be0b3e fix deprecation warnings in liballoc benches 2018-12-21 11:33:29 +01:00
Oliver Scherer
b9d74fc3ce Also test projections 2018-12-21 11:27:29 +01:00
Oliver Scherer
f8e508cde4 Fix a recently introduces regression 2018-12-21 11:27:29 +01:00
John Kåre Alsaker
edd08e020c Optimize away a move 2018-12-21 11:01:24 +01:00
bors
6d34ec18c7 Auto merge of #55798 - GuillaumeGomez:version-display-associated-const, r=QuietMisdreavus
Add version display for associated consts

Fixes #54030.

<img width="1440" alt="screenshot 2018-11-08 at 23 57 29" src="https://user-images.githubusercontent.com/3050060/48232648-99decf00-e3b2-11e8-9f41-6bd12a161c7d.png">

r? @QuietMisdreavus
2018-12-21 01:58:16 +00:00
Esteban Küber
cdbccf50a7 Point at coercion source on type errors for fn returning impl Trait 2018-12-20 16:52:52 -08:00
Nikita Popov
db24d8e8e2 Enable emission of alignment attrs for pointer params
Instead disable creation of assumptions during inlining using an
LLVM opt flag.

The -Z arg-align-attributes option which previously controlled this
behavior is removed.
2018-12-21 00:31:18 +01:00
bors
3f7c718926 Auto merge of #54125 - varkor:less-conservative-uninhabitedness-check, r=nikomatsakis
Less conservative uninhabitedness check

Extends the uninhabitedness check to structs, non-empty enums, tuples and arrays.

Pulled out of #47291 and #50262.

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

r? @nikomatsakis
2018-12-20 22:04:21 +00:00
Esteban Küber
59f643fc5f Point to return span when writing return; on non-() fn 2018-12-20 14:00:30 -08:00
bors
09d6ab90e5 Auto merge of #56845 - GuillaumeGomez:const-docs, r=oli-obk
Don't render const keyword on stable

Fixes #55246.

Continuation of #55327.

r? @oli-obk
2018-12-20 19:26:12 +00:00
varkor
0a8b696793 Remove nil-enum test 2018-12-20 19:24:16 +00:00
Andy Russell
8d393bf797
display rustc_private APIs as "Internal" 2018-12-20 13:47:39 -05:00
Philipp Hansch
0493c99777
Move compiletest test run to mingw-check builder
This way, checktools.sh continues to be used only for tools that are
published later on.
2018-12-20 18:00:07 +01:00
QuietMisdreavus
8dc8d7ac51 split extra_scripts to handle root_path shenanigans 2018-12-20 10:57:03 -06:00
QuietMisdreavus
0b0a00cc05 new --static-root-path flag for controlling static file locations 2018-12-20 10:18:45 -06:00
Philipp Hansch
2d2435b47e
Run compiletest tests on CI
I was assuming that https://github.com/rust-lang/rust/pull/56792 would
have resulted in compiletest tests being executed in CI. However, I
couldn't find any mentions of the unit test names in any CI logs.

This adds the compiletest test execution to the checktools.sh script.
2018-12-20 16:03:49 +01:00
Oliver Scherer
405d8b0bb3
Copyrite 2018-12-20 14:31:40 +01:00
bors
9622f9dc47 Auto merge of #56647 - petrochenkov:dcrate2, r=alexcrichton
Rework treatment of `$crate` in procedural macros

Important clarification: `$crate` below means "processed `$crate`" or "output `$crate`". In the input of a decl macro `$crate` is just two separate tokens, but in the *output of a decl macro* `$crate` is a single keyword identifier (https://github.com/rust-lang/rust/issues/55640#issuecomment-435692791).

First of all, this PR removes the `eliminate_crate_var` hack.
`$crate::foo` is no longer replaced with `::foo` or `::crate_name::foo` in the input of derive proc macros, it's passed to the macro instead with its precise span and hygiene data, and can be treated as any other path segment keyword (like `crate` or `self`) after that. (Note: `eliminate_crate_var` was never used for non-derive proc macros.)

This creates an annoying problem - derive macros still may stringify their input before processing and expect `$crate` survive that stringification and refer to the same crate (the Rust 1.15-1.29 way of doing things).
Moreover, the input of proc macro attributes and derives (but not fn-like proc macros) also effectively survives stringification before being passed to the macro (also for legacy implementation reasons).

So we kind of resurrect the `eliminate_crate_var` hack in reduced form, but apply it only to AST pretty-printing.
If an AST fragment is pretty-printed, the resulting *text* will have `$crate` replaced with `crate` or `::crate_name`. This should be enough to keep all the legacy cases working.

Closes https://github.com/rust-lang/rust/issues/55640
Closes https://github.com/rust-lang/rust/issues/56622
r? @ghost
2018-12-20 12:42:54 +00:00
Adrian Budau
da47bd3ae0 Fix typo in comment 2018-12-20 13:29:04 +02:00
Adrian Budau
cc53f4e9f4 Fix pipe2 and accept4 on static linked executables on linux (like musl). 2018-12-20 13:22:31 +02:00
bors
4755e2f3b6 Auto merge of #56741 - RalfJung:retag-to-raw, r=oli-obk
treat ref-to-raw cast like a reborrow: do a special kind of retag

r? @oli-obk

Cc @nikomatsakis
2018-12-20 09:58:10 +00:00
Guillaume Gomez
ca04c63930 Add test for associated const version display 2018-12-20 10:39:25 +01:00
Nicole Mazzuca
455bc95317 fix nits 2018-12-20 01:37:20 -08:00
David Tolnay
66bb34c3ab
Update src/libcore/num/mod.rs
Co-Authored-By: ubsan <npmazzuca@gmail.com>
2018-12-20 01:34:31 -08:00
bors
817dda7df0 Auto merge of #56649 - davidtwco:issue-46589, r=pnkfelix
MIR borrowck doesn't accept the example of iterating and updating a mutable reference

Fixes #46589.

r? @pnkfelix or @nikomatsakis
2018-12-20 07:22:15 +00:00
Michael Hewson
286503ace2 Refactor and add comments to code in receiver_is_valid
also updated some error messages

removed the code manually checking for `receiver_ty: Deref<Target=self_ty>`, in favour of using autoderef but only doing one iteration. This will cause error messages to be more consistent. Before, a "mismatched method receiver" error would be emitted when `receiver_ty` was valid except for a lifetime parameter, but only when `feature(arbitrary_self_types)` was enabled, and without the feature flag the error would be "uncoercible receiver". Now it emits "mismatched method receiver" in both cases.
2018-12-20 01:20:17 -05:00
Clar Fon
fb18ddaaaa Add DoubleEndedIterator::nth_back 2018-12-20 01:18:04 -05:00
Michael Hewson
1d93c6149d add a doc comment on receiver_is_valid 2018-12-20 01:14:01 -05:00
Michael Hewson
153f5a7892 Stabilize Rc, Arc and Pin as method receivers
This lets you write methods using `self: Rc<Self>`, `self: Arc<Self>`, `self: Pin<&mut Self>`, `self: Pin<Box<Self>`, and other combinations involving `Pin` and another stdlib receiver type, without needing the `arbitrary_self_types`. Other user-created receiver types can be used, but they still require the feature flag to use.

This is implemented by introducing a new trait, `Receiver`, which the method receiver's type must implement if the `arbitrary_self_types` feature is not enabled. To keep composed receiver types such as `&Arc<Self>` unstable, the receiver type is also required to implement `Deref<Target=Self>` when the feature flag is not enabled.

This lets you use `self: Rc<Self>` and `self: Arc<Self>` in stable Rust, which was not allowed previously. It was agreed that they would be stabilized in #55786. `self: Pin<&Self>` and other pinned receiver types do not require the `arbitrary_self_types` feature, but they cannot be used on stable because `Pin` still requires the `pin` feature.
2018-12-20 01:14:01 -05:00
Scott McMurray
7b6cf6e87b Stabilize Vec(Deque)::resize_with
Closes #41758
2018-12-19 22:00:25 -08:00
Jethro Beekman
dcb5db80b2 Add std::os::fortanix_sgx module 2018-12-20 10:09:52 +05:30