]> git.lizzy.rs Git - rust.git/log
rust.git
5 years agoRollup merge of #57011 - QuietMisdreavus:static-root-path, r=GuillaumeGomez
kennytm [Sat, 22 Dec 2018 16:07:55 +0000 (00:07 +0800)]
Rollup merge of #57011 - QuietMisdreavus:static-root-path, r=GuillaumeGomez

rustdoc: add new CLI flag to load static files from a different location

This PR adds a new CLI flag to rustdoc, `--static-root-path`, which controls how rustdoc links pages to the CSS/JS/font static files bundled with the output. By default, these files are linked with a series of `../` which is calculated per-page to link it to the documentation root - i.e. a relative link to the directory given by `-o`. This is causing problems for docs.rs, because even though docs.rs has saved one copy of these files and is dispatching them dynamically, browsers have no way of knowing that these are the same files and can cache them. This can allow it to link these files as, for example, `/rustdoc.css` instead of `../../rustdoc.css`, creating a single location that the files are loaded from.

I made sure to only change links for the *static* files, those that don't change between crates. Files like the search index, aliases, the source files listing, etc, are still linked with relative links.

r? @GuillaumeGomez

cc @onur

5 years agoRollup merge of #57002 - scottmcm:stabilize-resize_with, r=rkruppe
kennytm [Sat, 22 Dec 2018 16:07:54 +0000 (00:07 +0800)]
Rollup merge of #57002 - scottmcm:stabilize-resize_with, r=rkruppe

Stabilize Vec(Deque)::resize_with

Closes #41758

5 years agoRollup merge of #56992 - euclio:unknown-lint-suggestion, r=oli-obk
kennytm [Sat, 22 Dec 2018 16:07:52 +0000 (00:07 +0800)]
Rollup merge of #56992 - euclio:unknown-lint-suggestion, r=oli-obk

suggest similar lint names for unknown lints

Fixes #54737.

5 years agoRollup merge of #56989 - phansch:fix_compiletest_trim_deprecations, r=Mark-Simulacrum
kennytm [Sat, 22 Dec 2018 16:07:50 +0000 (00:07 +0800)]
Rollup merge of #56989 - phansch:fix_compiletest_trim_deprecations, r=Mark-Simulacrum

Fix compiletest `trim` deprecation warnings

None

5 years agoRollup merge of #56984 - ljedrz:dropck_outlives_tweaks, r=oli-obk
kennytm [Sat, 22 Dec 2018 16:07:49 +0000 (00:07 +0800)]
Rollup merge of #56984 - ljedrz:dropck_outlives_tweaks, r=oli-obk

A few tweaks to dropck_outlives

- remove an unnecessary call to `cloned()`
- simplify common patterns

5 years agoRollup merge of #56981 - RalfJung:miri-infallible-alloc, r=oli-obk
kennytm [Sat, 22 Dec 2018 16:07:48 +0000 (00:07 +0800)]
Rollup merge of #56981 - RalfJung:miri-infallible-alloc, r=oli-obk

miri: allocation is infallible

5 years agoRollup merge of #56979 - VardhanThigle:Vardhan/rust-sgx-unwind-support, r=alexcrichton
kennytm [Sat, 22 Dec 2018 16:07:47 +0000 (00:07 +0800)]
Rollup merge of #56979 - VardhanThigle:Vardhan/rust-sgx-unwind-support, r=alexcrichton

Adding unwinding support for x86_64_fortanix_unknown_sgx target.

Unwinding support is provided by our port of LLVM's libunwind which is available from https://github.com/fortanix/libunwind/tree/release_50.

libunwind requires support for rwlock and printing to stderr, which is only provided by `std` for this target. This poses two problems: 1) how to expose the `std` functionality to C and 2) dependency inversion.

### Exposing `std`

For exposing the functionality we chose to expose the following symbols:

* __rust_rwlock_rdlock
* __rust_rwlock_wrlock
* __rust_rwlock_unlock
* __rust_print_err
* __rust_abort

Also, the following are needed from `alloc`:

* __rust_alloc
* __rust_dealloc

#### Rust RWLock in C

In `libunwind`, RWLock is initialized as a templated static variable:

```c
pthread_rwlock_t DwarfFDECache<A>::_lock = PTHREAD_RWLOCK_INITIALIZER;
```

I don't know of a good way to use the Rust sys::rwlock::RWLock type and initializer there. We could have a static global variable in Rust, but that doesn't work with the templating. The variable needs to be initialized statically, since this target doesn't support the .init section. Currently, I just used a byte array and standard C array initialization. The mapping between this C type and the Rust type needs to be manually maintained. There is a compile-time check and a unit test to make sure the Rust versions of these C definitions match the actual Rust type. If any reviewer knows of a better solution, please do tell.

### Dependency inversion issue

`std` depends on `panic_unwind` which depends on `libunwind`, and `libunwind` depends on `std`. This is not normally supported by Rust's linking system. Therefore we use raw C exports from `std` *and* `libunwind.a` is linked last in the target `post_link_objects` instead of being built as part of the Rust `libunwind`. Currently, all C exports are defined in `src/libstd/sys/sgx/rwlock.rs` to overcome LTO issues. Only the `__rust_rwlock_*` definitions *need* to live there for privacy reasons. Once again, if any reviewer knows of a better solution, please do tell.

r? @alexcrichton

5 years agoRollup merge of #56973 - RalfJung:miri-trace, r=oli-obk
kennytm [Sat, 22 Dec 2018 16:07:46 +0000 (00:07 +0800)]
Rollup merge of #56973 - RalfJung:miri-trace, r=oli-obk

make basic CTFE tracing available on release builds

Debugging things going wrong in miri is currently pretty much impossible with a nightly Rust.

r? @oli-obk

5 years agoRollup merge of #56970 - Firstyear:mem_uninit_doc_ptr_drop, r=Manishearth
kennytm [Sat, 22 Dec 2018 16:07:44 +0000 (00:07 +0800)]
Rollup merge of #56970 - Firstyear:mem_uninit_doc_ptr_drop, r=Manishearth

Mem uninit doc ptr drop

Extend the mem::uninitialized documentation to account for partially initialized arrays and how to correctly handle these. These are used in some datastructures (trees for example) or in FFI.

r? @Manishearth

5 years agoRollup merge of #56967 - GuillaumeGomez:regen-search-index, r=QuietMisdreavus
kennytm [Sat, 22 Dec 2018 16:07:43 +0000 (00:07 +0800)]
Rollup merge of #56967 - GuillaumeGomez:regen-search-index, r=QuietMisdreavus

Replace current crate's searchIndex when regenerating

Fixes #56921.

r? @QuietMisdreavus

5 years agoRollup merge of #56941 - euclio:deny-libstd-resolution-failures, r=QuietMisdreavus
kennytm [Sat, 22 Dec 2018 16:07:41 +0000 (00:07 +0800)]
Rollup merge of #56941 - euclio:deny-libstd-resolution-failures, r=QuietMisdreavus

deny intra-doc link resolution failures in libstd

Fixes #56693.

Until we land a fix for the underlying issue (#56922), we can at least fix the failures in libstd so they don't propagate to downstream crates.

5 years agoRollup merge of #56936 - ubsan:euclidean_div_rem, r=dtolnay
kennytm [Sat, 22 Dec 2018 16:07:39 +0000 (00:07 +0800)]
Rollup merge of #56936 - ubsan:euclidean_div_rem, r=dtolnay

rename div_euc -> div_euclid, and mod_euc -> rem_euclid

logic is written up in #49048

Also, update the documentation slightly.

cc @alexcrichton @clarcharr @varkor

5 years agoRollup merge of #56933 - clarcharr:xpy_progress, r=Mark-Simulacrum
kennytm [Sat, 22 Dec 2018 16:07:38 +0000 (00:07 +0800)]
Rollup merge of #56933 - clarcharr:xpy_progress, r=Mark-Simulacrum

Add --progress to git submodule commands in x.py

This is a relatively new flag, but it means that git will indicate the progress of the update as it would with regular clones. This is especially helpful as some of the submodules are really big and it's difficult to tell if it's hanging or still updating.

5 years agoRollup merge of #56919 - oli-obk:null_ref_array_tuple, r=RalfJung
kennytm [Sat, 22 Dec 2018 16:07:37 +0000 (00:07 +0800)]
Rollup merge of #56919 - oli-obk:null_ref_array_tuple, r=RalfJung

Remove a wrong multiplier on relocation offset computation

r? @RalfJung

fixes #56800

5 years agoRollup merge of #56914 - glaubitz:ignore-tests, r=alexcrichton
kennytm [Sat, 22 Dec 2018 16:07:35 +0000 (00:07 +0800)]
Rollup merge of #56914 - glaubitz:ignore-tests, r=alexcrichton

Ignore ui/target-feature-gate on sparc, sparc64, powerpc, powerpc64 and powerpc64le

The test ui/target-feature-gate is not applicable on sparc, sparc64, powerpc, powerpc64 and powerpc64le and consequently fails there. So just ignore it on these targets.

5 years agoRollup merge of #56909 - dlrobertson:fix_56762, r=estebank
kennytm [Sat, 22 Dec 2018 16:07:34 +0000 (00:07 +0800)]
Rollup merge of #56909 - dlrobertson:fix_56762, r=estebank

static eval: Do not ICE on layout size overflow

Layout size overflow and typeck eval errors are reported. Trigger a bug
only when the eval error is strictly labeled as TooGeneric.

Fixes: #56762
5 years agoRollup merge of #56802 - clarcharr:nth_back, r=alexcrichton
kennytm [Sat, 22 Dec 2018 16:07:30 +0000 (00:07 +0800)]
Rollup merge of #56802 - clarcharr:nth_back, r=alexcrichton

Add DoubleEndedIterator::nth_back

As suggested by #54054. This doesn't fix that issue, as this doesn't add enough implementations to optimise that specific use case, but it adds the method and a few (relatively) trivial overrides to work as an initial implementation.

It's probably going to be a lot of work adding `nth_back` implementations everywhere, and I don't have the time to include it all in this commit. But, it's a start. :)

5 years agoAuto merge of #56862 - arielb1:fundamentally-clean, r=nikomatsakis
bors [Sat, 22 Dec 2018 11:06:16 +0000 (11:06 +0000)]
Auto merge of #56862 - arielb1:fundamentally-clean, r=nikomatsakis

stop treating trait objects from #[fundamental] traits as fundamental

This is a [breaking-change] to code that exploits this functionality (which should be limited to code using `#![feature(fundamental)]`.

Fixes #56503.

r? @nikomatsakis

5 years agoAuto merge of #56842 - scottmcm:vecdeque-rotate, r=alexcrichton
bors [Sat, 22 Dec 2018 07:16:11 +0000 (07:16 +0000)]
Auto merge of #56842 - scottmcm:vecdeque-rotate, r=alexcrichton

Add unstable VecDeque::rotate_{left|right}

Like the ones on slices, but more efficient because vecdeque is a circular buffer.

Issue that proposed this: https://github.com/rust-lang/rust/issues/56686

~~:bomb: Please someone look very carefully at the `unsafe` in this!  The `wrap_copy` seems to be exactly what this method needs, and the `len` passed to it is never more than half the length of the deque, but I haven't managed to prove to myself that it's correct :bomb:~~ I think I proved that this code meets the requirement of the unsafe code it's calling; please double-check, of course.

5 years agoAuto merge of #56824 - euclio:internal-apis, r=QuietMisdreavus
bors [Sat, 22 Dec 2018 04:21:30 +0000 (04:21 +0000)]
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)

5 years agoAuto merge of #56805 - mikeyhew:stabilize-pin-as-receiver, r=nikomatsakis
bors [Sat, 22 Dec 2018 01:42:25 +0000 (01:42 +0000)]
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.

5 years agoAuto merge of #57033 - nikic:inhabitedness-perf, r=varkor
bors [Fri, 21 Dec 2018 23:00:55 +0000 (23:00 +0000)]
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

5 years agoAuto merge of #56779 - adrian-budau:master, r=alexcrichton
bors [Fri, 21 Dec 2018 20:08:11 +0000 (20:08 +0000)]
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!

5 years agoProperly report ENOSYS by modifying errno
Adrian Budau [Fri, 21 Dec 2018 13:53:37 +0000 (15:53 +0200)]
Properly report ENOSYS by modifying errno

5 years agoAuto merge of #56813 - oli-obk:main_🧶, r=pnkfelix
bors [Fri, 21 Dec 2018 10:46:11 +0000 (10:46 +0000)]
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.

5 years agoRemove "visited" set from inhabitedness checking
Nikita Popov [Fri, 21 Dec 2018 10:44:05 +0000 (11:44 +0100)]
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.

5 years agoAuto merge of #55798 - GuillaumeGomez:version-display-associated-const, r=QuietMisdreavus
bors [Fri, 21 Dec 2018 01:58:16 +0000 (01:58 +0000)]
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

5 years agoAuto merge of #54125 - varkor:less-conservative-uninhabitedness-check, r=nikomatsakis
bors [Thu, 20 Dec 2018 22:04:21 +0000 (22:04 +0000)]
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

5 years agoAuto merge of #56845 - GuillaumeGomez:const-docs, r=oli-obk
bors [Thu, 20 Dec 2018 19:26:12 +0000 (19:26 +0000)]
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

5 years agoRemove nil-enum test
varkor [Thu, 20 Dec 2018 19:24:16 +0000 (19:24 +0000)]
Remove nil-enum test

5 years agodisplay rustc_private APIs as "Internal"
Andy Russell [Thu, 13 Dec 2018 03:51:04 +0000 (22:51 -0500)]
display rustc_private APIs as "Internal"

5 years agosplit extra_scripts to handle root_path shenanigans
QuietMisdreavus [Thu, 20 Dec 2018 16:57:03 +0000 (10:57 -0600)]
split extra_scripts to handle root_path shenanigans

5 years agonew --static-root-path flag for controlling static file locations
QuietMisdreavus [Thu, 20 Dec 2018 16:18:45 +0000 (10:18 -0600)]
new --static-root-path flag for controlling static file locations

5 years agoAuto merge of #56647 - petrochenkov:dcrate2, r=alexcrichton
bors [Thu, 20 Dec 2018 12:42:54 +0000 (12:42 +0000)]
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

5 years agoFix typo in comment
Adrian Budau [Thu, 20 Dec 2018 11:29:04 +0000 (13:29 +0200)]
Fix typo in comment

5 years agoFix pipe2 and accept4 on static linked executables on linux (like musl).
Adrian Budau [Wed, 19 Dec 2018 14:13:43 +0000 (16:13 +0200)]
Fix pipe2 and accept4 on static linked executables on linux (like musl).

5 years agoAuto merge of #56741 - RalfJung:retag-to-raw, r=oli-obk
bors [Thu, 20 Dec 2018 09:58:10 +0000 (09:58 +0000)]
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

5 years agoAdd test for associated const version display
Guillaume Gomez [Thu, 20 Dec 2018 09:39:25 +0000 (10:39 +0100)]
Add test for associated const version display

5 years agofix nits
Nicole Mazzuca [Thu, 20 Dec 2018 09:37:20 +0000 (01:37 -0800)]
fix nits

5 years agoUpdate src/libcore/num/mod.rs
David Tolnay [Thu, 20 Dec 2018 09:34:31 +0000 (01:34 -0800)]
Update src/libcore/num/mod.rs

Co-Authored-By: ubsan <npmazzuca@gmail.com>
5 years agoAuto merge of #56649 - davidtwco:issue-46589, r=pnkfelix
bors [Thu, 20 Dec 2018 07:22:15 +0000 (07:22 +0000)]
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

5 years agoRefactor and add comments to code in receiver_is_valid
Michael Hewson [Sun, 16 Dec 2018 21:47:37 +0000 (16:47 -0500)]
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.

5 years agoAdd DoubleEndedIterator::nth_back
Clar Fon [Fri, 14 Dec 2018 04:26:09 +0000 (23:26 -0500)]
Add DoubleEndedIterator::nth_back

5 years agoadd a doc comment on `receiver_is_valid`
Michael Hewson [Fri, 14 Dec 2018 06:27:49 +0000 (01:27 -0500)]
add a doc comment on `receiver_is_valid`

5 years agoStabilize `Rc`, `Arc` and `Pin` as method receivers
Michael Hewson [Tue, 20 Nov 2018 16:50:50 +0000 (11:50 -0500)]
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.

5 years agoStabilize Vec(Deque)::resize_with
Scott McMurray [Thu, 20 Dec 2018 06:00:25 +0000 (22:00 -0800)]
Stabilize Vec(Deque)::resize_with

Closes #41758

5 years agoAuto merge of #56219 - arielb1:never-coerce-box, r=nikomatsakis
bors [Thu, 20 Dec 2018 03:41:00 +0000 (03:41 +0000)]
Auto merge of #56219 - arielb1:never-coerce-box, r=nikomatsakis

trigger unsized coercions keyed on Sized bounds

This PR causes unsized coercions to not be disabled by `$0: Unsize<dyn
Object>` coercion obligations when we have an `$0: Sized` obligation somewhere.

This should be mostly backwards-compatible, because in these cases not doing the unsize coercion should have caused the `$0: Sized` obligation to fail.

Note that `X: Unsize<dyn Object>` obligations can't fail *as obligations* if `X: Sized` holds, so this still maintains some version of monotonicity (I think that an unsized coercion can't be converted to no coercion by unifying type variables).

Fixes #49593 (unblocking never_type).

r? @eddyb
cc @nikomatsakis

5 years agoAuto merge of #54252 - arielb1:deref-query, r=nikomatsakis
bors [Wed, 19 Dec 2018 22:51:39 +0000 (22:51 +0000)]
Auto merge of #54252 - arielb1:deref-query, r=nikomatsakis

process nested obligations in autoderef

Fixes #53843.

r? @nikomatsakis

5 years agosuggest similar lint names for unknown lints
Andy Russell [Wed, 19 Dec 2018 18:51:52 +0000 (13:51 -0500)]
suggest similar lint names for unknown lints

5 years agoWorkaround issues with crate loading during cross-compilation
Vadim Petrochenkov [Tue, 18 Dec 2018 00:21:28 +0000 (03:21 +0300)]
Workaround issues with crate loading during cross-compilation

5 years agoDo not interpret mismatches from pretty-printed `$crate` as token stream invalidation
Vadim Petrochenkov [Mon, 10 Dec 2018 23:26:31 +0000 (02:26 +0300)]
Do not interpret mismatches from pretty-printed `$crate` as token stream invalidation

5 years agoReintroduce special pretty-printing for `$crate` when it's necessary for proc macros
Vadim Petrochenkov [Sun, 9 Dec 2018 14:46:12 +0000 (17:46 +0300)]
Reintroduce special pretty-printing for `$crate` when it's necessary for proc macros

5 years agoproc_macro: Accept `$crate` as an identifier if it comes from the compiler
Vadim Petrochenkov [Sun, 9 Dec 2018 14:31:12 +0000 (17:31 +0300)]
proc_macro: Accept `$crate` as an identifier if it comes from the compiler

5 years agoproc_macro: Validate tokens coming from the compiler again
Vadim Petrochenkov [Sat, 8 Dec 2018 18:00:39 +0000 (21:00 +0300)]
proc_macro: Validate tokens coming from the compiler again

5 years agoRemove `eliminate_crate_var` and special pretty-printing for `$crate`
Vadim Petrochenkov [Sat, 8 Dec 2018 17:30:38 +0000 (20:30 +0300)]
Remove `eliminate_crate_var` and special pretty-printing for `$crate`

5 years agoAuto merge of #56613 - Zoxc:query-perf1, r=michaelwoerister
bors [Wed, 19 Dec 2018 20:13:40 +0000 (20:13 +0000)]
Auto merge of #56613 - Zoxc:query-perf1, r=michaelwoerister

Tweak query code for performance

Split from https://github.com/rust-lang/rust/pull/56509

r? @michaelwoerister

5 years agoFix compiletest `trim` deprecation warnings
Philipp Hansch [Wed, 19 Dec 2018 18:41:22 +0000 (19:41 +0100)]
Fix compiletest `trim` deprecation warnings

5 years agotest: Ignore ui/target-feature-gate on sparc and sparc64
John Paul Adrian Glaubitz [Wed, 19 Dec 2018 16:53:03 +0000 (17:53 +0100)]
test: Ignore ui/target-feature-gate on sparc and sparc64

5 years agotest: Ignore ui/target-feature-gate on powerpc and powerpc64(le)
John Paul Adrian Glaubitz [Wed, 19 Dec 2018 16:52:27 +0000 (17:52 +0100)]
test: Ignore ui/target-feature-gate on powerpc and powerpc64(le)

5 years agodropck: remove unnecessary call to cloned()
ljedrz [Wed, 19 Dec 2018 15:41:15 +0000 (16:41 +0100)]
dropck: remove unnecessary call to cloned()

5 years agodropck: simplify common patterns
ljedrz [Wed, 19 Dec 2018 15:39:01 +0000 (16:39 +0100)]
dropck: simplify common patterns

5 years agoAuto merge of #56601 - Zoxc:lifetime-killer, r=nikomatsakis
bors [Wed, 19 Dec 2018 15:22:55 +0000 (15:22 +0000)]
Auto merge of #56601 - Zoxc:lifetime-killer, r=nikomatsakis

Make the 'a lifetime on TyCtxt useless

cc @rust-lang/compiler

r? @nikomatsakis

5 years agomiri: allocation is infallible
Ralf Jung [Wed, 19 Dec 2018 13:11:01 +0000 (14:11 +0100)]
miri: allocation is infallible

5 years agoAdding unwinding support for x86_64_fortanix_unknown_sgx target.
Vardhan Thigle [Fri, 14 Dec 2018 13:08:15 +0000 (18:38 +0530)]
Adding unwinding support for x86_64_fortanix_unknown_sgx target.

5 years agoAuto merge of #56977 - pietroalbini:rollup, r=pietroalbini
bors [Wed, 19 Dec 2018 12:49:32 +0000 (12:49 +0000)]
Auto merge of #56977 - pietroalbini:rollup, r=pietroalbini

Rollup of 15 pull requests

Successful merges:

 - #56363 (Defactored Bytes::read)
 - #56663 (Remove lifetime from Resolver)
 - #56689 (add a lint group for lints emitted by rustdoc)
 - #56772 (fix issue 54153 by not testing issue-18804 on Windows nor OS X.)
 - #56820 (format-related tweaks)
 - #56881 (Implement Eq, PartialEq and Hash for atomic::Ordering)
 - #56907 (Fix grammar in compiler error for array iterators)
 - #56908 (rustc: Don't ICE on usage of two new target features)
 - #56910 (Do not point at delim spans for complete correct blocks)
 - #56913 (Enable stack probes for UEFI images)
 - #56918 (Profiler: simplify total_duration, improve readability)
 - #56931 (Update release notes for Rust 1.31.1)
 - #56947 (Add targets thumbv7neon-linux-androideabi and thumbv7neon-unknown-linux-gnueabihf)
 - #56948 (Update LLVM submodule)
 - #56959 (Fix mobile menu rendering collision with tooltip.)

Failed merges:

 - #56914 (Ignore ui/target-feature-gate on sparc, sparc64, powerpc, powerpc64 and powerpc64le)

r? @ghost

5 years agoRollup merge of #56959 - JohnHeitmann:mobile-z-fix, r=GuillaumeGomez
Pietro Albini [Wed, 19 Dec 2018 10:47:23 +0000 (11:47 +0100)]
Rollup merge of #56959 - JohnHeitmann:mobile-z-fix, r=GuillaumeGomez

Fix mobile menu rendering collision with tooltip.

Bring the mobile-mode menu in front of the â“˜ icon.

Here's what the bug looks like:

![screen shot 2018-12-18 at 1 53 46 pm](https://user-images.githubusercontent.com/4282480/50185501-cbf62180-02cc-11e9-927e-3c6469901323.png)

5 years agoRollup merge of #56948 - jethrogb:jb/update-llvm, r=nikic
Pietro Albini [Wed, 19 Dec 2018 10:47:21 +0000 (11:47 +0100)]
Rollup merge of #56948 - jethrogb:jb/update-llvm, r=nikic

Update LLVM submodule

This includes https://github.com/rust-lang/llvm/pull/133

Fixes #56942

5 years agoRollup merge of #56947 - hsivonen:neon, r=alexcrichton
Pietro Albini [Wed, 19 Dec 2018 10:47:20 +0000 (11:47 +0100)]
Rollup merge of #56947 - hsivonen:neon, r=alexcrichton

Add targets thumbv7neon-linux-androideabi and thumbv7neon-unknown-linux-gnueabihf

These two targets enable both thumb-mode and NEON for ARMv7 CPUs.

This another attempt at #49902, which cannot be reopened. Between that PR and this one, some subrepos with C code whose build systems were failing went away.

5 years agoRollup merge of #56931 - pietroalbini:relnotes-1.31.1, r=pietroalbini
Pietro Albini [Wed, 19 Dec 2018 10:47:19 +0000 (11:47 +0100)]
Rollup merge of #56931 - pietroalbini:relnotes-1.31.1, r=pietroalbini

Update release notes for Rust 1.31.1

Backport from the stable branch.

r? @ghost

5 years agoRollup merge of #56918 - ljedrz:profiler_nits, r=wesleywiser
Pietro Albini [Wed, 19 Dec 2018 10:47:17 +0000 (11:47 +0100)]
Rollup merge of #56918 - ljedrz:profiler_nits, r=wesleywiser

Profiler: simplify total_duration, improve readability

r? @wesleywiser

5 years agoRollup merge of #56913 - tirr-c:uefi-stack-probes, r=alexcrichton
Pietro Albini [Wed, 19 Dec 2018 10:47:16 +0000 (11:47 +0100)]
Rollup merge of #56913 - tirr-c:uefi-stack-probes, r=alexcrichton

Enable stack probes for UEFI images

When building UEFI images, we don't link to any CRT libraries so we need to provide a stack probe. Without `__rust_probestack`, the linker looks for `__chkstk` and fails to link if there is a function with large local variables.

r? @alexcrichton

5 years agoRollup merge of #56910 - estebank:unclosed-eof, r=oli-obk
Pietro Albini [Wed, 19 Dec 2018 10:47:14 +0000 (11:47 +0100)]
Rollup merge of #56910 - estebank:unclosed-eof, r=oli-obk

Do not point at delim spans for complete correct blocks

Fix #56834.

5 years agoRollup merge of #56908 - alexcrichton:new-features, r=oli-obk
Pietro Albini [Wed, 19 Dec 2018 10:47:13 +0000 (11:47 +0100)]
Rollup merge of #56908 - alexcrichton:new-features, r=oli-obk

rustc: Don't ICE on usage of two new target features

I seem to always forget to update this portion of the compiler...

5 years agoRollup merge of #56907 - rumajo:master, r=kennytm,Centril
Pietro Albini [Wed, 19 Dec 2018 10:47:12 +0000 (11:47 +0100)]
Rollup merge of #56907 - rumajo:master, r=kennytm,Centril

Fix grammar in compiler error for array iterators

This fixes a small grammatical mistake in the message the compiler gives when attempting to iterate directly over an array `arr` without calling `arr.iter()` or borrowing `&arr`.

5 years agoRollup merge of #56881 - Amanieu:ordering_eq, r=alexcrichton
Pietro Albini [Wed, 19 Dec 2018 10:47:11 +0000 (11:47 +0100)]
Rollup merge of #56881 - Amanieu:ordering_eq, r=alexcrichton

Implement Eq, PartialEq and Hash for atomic::Ordering

r? @alexcrichton

5 years agoRollup merge of #56820 - ljedrz:format_tweaks, r=alexcrichton
Pietro Albini [Wed, 19 Dec 2018 10:47:09 +0000 (11:47 +0100)]
Rollup merge of #56820 - ljedrz:format_tweaks, r=alexcrichton

format-related tweaks

- remove an unreachable condition
- inline one-liners related to `parse_expr` (called in succession)
- refactor `report_invalid_references`
- refactor `verify_arg_type`
- minor stylistic improvements

5 years agoRollup merge of #56772 - pnkfelix:issue-54153-linkage-sometimes-requires-optimization...
Pietro Albini [Wed, 19 Dec 2018 10:47:08 +0000 (11:47 +0100)]
Rollup merge of #56772 - pnkfelix:issue-54153-linkage-sometimes-requires-optimizations, r=nikic

fix issue 54153 by not testing issue-18804 on Windows nor OS X.

Fix #54153

5 years agoRollup merge of #56689 - QuietMisdreavus:rustdoc-lint-group, r=pnkfelix
Pietro Albini [Wed, 19 Dec 2018 10:47:07 +0000 (11:47 +0100)]
Rollup merge of #56689 - QuietMisdreavus:rustdoc-lint-group, r=pnkfelix

add a lint group for lints emitted by rustdoc

As rustdoc adds more lints that it specifically manages, it would be nice to be able to lump them all together. This gives us a new group just for that.

I deliberately didn't include `missing_docs` because this is kind of a stepping stone for moving our lints into tool lints (i.e. `#![warn(rustdoc::private_doc_tests)]`), since all of these are specifically emitted by rustdoc. If we want to move `missing_docs` out of the compiler, that's also an option, but it would create a surprising change of behavior.

I also took the chance to rewrite the lint descriptions of these lints to better match the style of the other lints. `>_>`

5 years agoRollup merge of #56663 - Zoxc:resolver-lifetime, r=pnkfelix
Pietro Albini [Wed, 19 Dec 2018 10:47:05 +0000 (11:47 +0100)]
Rollup merge of #56663 - Zoxc:resolver-lifetime, r=pnkfelix

Remove lifetime from Resolver

5 years agoRollup merge of #56363 - Lucretiel:patch-3, r=shepmaster
Pietro Albini [Wed, 19 Dec 2018 10:47:04 +0000 (11:47 +0100)]
Rollup merge of #56363 - Lucretiel:patch-3, r=shepmaster

Defactored Bytes::read

Removed unneeded refactoring of read_one_byte, which removed the unneeded dynamic dispatch (`dyn Read`) used by that function.

This function is only used in one place in the entire Rust codebase; there doesn't seem to be a reason for it to exist (and there especially doesn't seem to be a reason for it to use dynamic dispatch)

5 years agoAuto merge of #56550 - chpio:rc-eq, r=alexcrichton
bors [Wed, 19 Dec 2018 10:16:05 +0000 (10:16 +0000)]
Auto merge of #56550 - chpio:rc-eq, r=alexcrichton

Short-circuit Rc/Arc equality checking on equal pointers where T: Eq

based on #42965

Is the use of the private trait ok this way? Is there anything else needed for this to get pulled?

5 years agomake basic CTFE tracing available on release builds
Ralf Jung [Wed, 19 Dec 2018 09:10:39 +0000 (10:10 +0100)]
make basic CTFE tracing available on release builds

5 years agoFix tidy error
William Brown [Wed, 19 Dec 2018 09:09:54 +0000 (19:09 +1000)]
Fix tidy error

5 years agoSet constness correctly
Guillaume Gomez [Tue, 18 Dec 2018 21:24:20 +0000 (22:24 +0100)]
Set constness correctly

5 years agoAdd more VecDeque::rotate_{left|right} tests
Scott McMurray [Wed, 19 Dec 2018 08:38:15 +0000 (00:38 -0800)]
Add more VecDeque::rotate_{left|right} tests

5 years agoAuto merge of #56397 - petrhosek:file-search, r=cramertj
bors [Wed, 19 Dec 2018 06:46:15 +0000 (06:46 +0000)]
Auto merge of #56397 - petrhosek:file-search, r=cramertj

Search other library paths when loking for link objects

Support the case when link objects are not located in Rust sysroot
but in other locations which could be specify through library paths.

5 years agoUpdates based on comment
William Brown [Wed, 19 Dec 2018 02:40:57 +0000 (12:40 +1000)]
Updates based on comment

5 years agoExtend documentation for mem uninit to discuss partial allocation of the values
William Brown [Wed, 19 Dec 2018 01:32:56 +0000 (11:32 +1000)]
Extend documentation for mem uninit to discuss partial allocation of the values

5 years agoSearch other library paths when loking for link objects
Petr Hosek [Sat, 1 Dec 2018 03:19:47 +0000 (19:19 -0800)]
Search other library paths when loking for link objects

Support the case when link objects are not located in Rust sysroot
but in other locations which could be specify through library paths.

5 years agoadd comment about subtyping
Ariel Ben-Yehuda [Wed, 19 Dec 2018 00:05:34 +0000 (02:05 +0200)]
add comment about subtyping

5 years agoReplace current crate's searchIndex when regenerating
Guillaume Gomez [Tue, 18 Dec 2018 23:51:37 +0000 (00:51 +0100)]
Replace current crate's searchIndex when regenerating

5 years agoFix mobile menu rendering collision with tooltip.
John Heitmann [Tue, 18 Dec 2018 21:55:30 +0000 (13:55 -0800)]
Fix mobile menu rendering collision with tooltip.

Bring the mobile-mode menu in front of the â“˜ icon.

5 years agoAuto merge of #56863 - arielb1:supertrait-self-4, r=nikomatsakis
bors [Tue, 18 Dec 2018 19:58:14 +0000 (19:58 +0000)]
Auto merge of #56863 - arielb1:supertrait-self-4, r=nikomatsakis

fix trait objects with a Self-containing projection values

Fixes #56288.

This follows ALT2 in the issue.

beta-nominating since this is a regression.

r? @nikomatsakis

5 years agoDon't render const keyword on stable
Guillaume Gomez [Wed, 24 Oct 2018 21:34:54 +0000 (23:34 +0200)]
Don't render const keyword on stable

5 years agoAuto merge of #56160 - oli-obk:const_fn_let, r=nikomatsakis
bors [Tue, 18 Dec 2018 14:21:07 +0000 (14:21 +0000)]
Auto merge of #56160 - oli-obk:const_fn_let, r=nikomatsakis

Fix various aspects around `let` bindings inside const functions

* forbid `let` bindings in const contexts that use short circuiting operators
* harden analysis code against derefs of mutable references

Initially this PR was about stabilizing `let` bindings, but too many flaws were exposed that need some more testing on nightly

5 years agoUpdate LLVM submodule
Jethro Beekman [Tue, 18 Dec 2018 09:56:10 +0000 (15:26 +0530)]
Update LLVM submodule

5 years agoExplain the math
Oliver Scherer [Tue, 18 Dec 2018 09:08:37 +0000 (10:08 +0100)]
Explain the math

5 years agotreat ref-to-raw cast like a reborrow: do a special kind of retag
Ralf Jung [Tue, 11 Dec 2018 18:54:38 +0000 (19:54 +0100)]
treat ref-to-raw cast like a reborrow: do a special kind of retag

5 years agoExplain that lack of short circuiting support in constants is temporary
Oliver Scherer [Tue, 18 Dec 2018 08:42:46 +0000 (09:42 +0100)]
Explain that lack of short circuiting support in constants is temporary

5 years agoProperly worded diagnostic message
Oliver Scherer [Tue, 18 Dec 2018 08:16:56 +0000 (09:16 +0100)]
Properly worded diagnostic message