Commit Graph

74522 Commits

Author SHA1 Message Date
Scott McMurray
1b1e887f4d Override try_[r]fold for RangeInclusive
Because the last item needs special handling, it seems that LLVM has trouble canonicalizing the loops in external iteration.  With the override, it becomes obvious that the start==end case exits the loop (as opposed to the one *after* that exiting the loop in external iteration).
2018-02-04 23:48:40 -08:00
bors
07ea260407 Auto merge of #47873 - Aaron1011:final-ref-coerce, r=nikomatsakis
Fix ref-to-ptr coercions not working with NLL in certain cases

Implicit coercions from references to pointers were lowered to slightly
different Mir than explicit casts (e.g. 'foo as *mut T'). This resulted
in certain uses of self-referential structs compiling correctly when an
explicit cast was used, but not when the implicit coercion was used.

To fix this, this commit adds an outer 'Use' expr when applying a
raw-ptr-borrow adjustment. This makes the lowered Mir for coercions
identical to that of explicit coercions, allowing the original code to
compile regardless of how the raw ptr cast occurs.

Fixes #47722
2018-02-05 04:32:06 +00:00
bors
dd29d3dd76 Auto merge of #47865 - Manishearth:cleanup-shim, r=nikomatsakis
Cleanup the shim code

 - We now write directly to `RETURN_PLACE` instead of creating intermediates
 - `tuple_like_shim` takes an iterator (used by #47867)
 - `tuple_like_shim` no longer relies on it being the first thing to create blocks, and uses relative block indexing in a cleaner way (necessary for #47867)
 - All the shim builders take `dest, src` arguments instead of hardcoding RETURN_PLACE

r? @eddyb
2018-02-05 01:45:46 +00:00
panicbit
b439632a75 Unimplement Send/Sync for ::env::{Args,ArgsOs,Vars,VarsOs} 2018-02-05 00:00:09 +01:00
bors
e7e982ac03 Auto merge of #47998 - kennytm:rollup, r=kennytm
Rollup of 10 pull requests

- Successful merges: #47862, #47877, #47896, #47912, #47947, #47958, #47978, #47996, #47999, #47892
- Failed merges:
2018-02-04 22:58:10 +00:00
Nick Cameron
3c72a848e9 save-analysis: avoid implicit unwrap
When looking up a field defintion, since the name might be incorrect in the field init shorthand case.

cc https://github.com/rust-lang-nursery/rls/issues/699
2018-02-05 11:00:56 +13:00
steveklabnik
983cc00b80 add exceptions for new deps 2018-02-04 15:47:36 -05:00
steveklabnik
5437188e10 update mdbook to 0.1.2
and improve printing of errors
2018-02-04 15:47:35 -05:00
steveklabnik
b320829da4 update reference 2018-02-04 15:44:48 -05:00
steveklabnik
dcb3e21b06 update trpl
Includes https://github.com/rust-lang/book/pull/1088 and
62210e326c
2018-02-04 15:44:48 -05:00
Matt Brubeck
f243f9239d Fix info about generic impls in AsMut docs
This text was copy-pasted from the `AsRef` docs to `AsMut`, but needed
some additional adjustments for correctness.
2018-02-04 11:57:36 -08:00
kennytm
e17ebdf344
Rollup merge of #47892 - Badel2:const_type_id_of, r=oli-obk
Turn `type_id` into a constant intrinsic

https://github.com/rust-lang/rust/issues/27745

The method `get_type_id` in `Any` is intended to support reflection. It's currently unstable in favor of using an associated constant instead. This PR makes the `type_id` intrinsic a constant intrinsic, the same as `size_of` and `align_of`, allowing `TypeId::of` to be a `const fn`, which will allow using an associated constant in `Any`.
2018-02-05 01:27:36 +08:00
kennytm
66d6c855bd
Rollup merge of #47999 - jaystrictor:master, r=Mark-Simulacrum
Remove 'the this' in doc comments.
2018-02-05 01:20:56 +08:00
kennytm
adb5849b79
Rollup merge of #47996 - Zoxc:run-make-last, r=Mark-Simulacrum
Run the `run-make` tests last, so more tests run on Windows when `make` is unavailable
2018-02-05 01:19:41 +08:00
kennytm
393cd89267
Rollup merge of #47978 - eddyb:iu, r=kennytm
ui tests: diff from old (expected) to new (actual) instead of backwards.

Previously `actual` was "old" and `expected` was "new" which resulted in `+` before `-`.
AFAIK all diff tools put `-` before `+`, which made the previous behavior *very confusing*.

r? @nikomatsakis
2018-02-04 23:29:01 +08:00
kennytm
e58cff2a4d
Rollup merge of #47958 - frewsxcv:frewsxcv-try-clone, r=aidanhs
Clarify shared file handler behavior of File::try_clone.

Fixes https://github.com/rust-lang/rust/issues/46578.
2018-02-04 23:28:59 +08:00
kennytm
1439c2ac35
Rollup merge of #47947 - goodmanjonathan:stabilize_match_beginning_vert, r=petrochenkov
Stabilize feature(match_beginning_vert)

With this feature stabilized, match expressions can optionally have a `|` at the beginning of each arm.

Reference PR: rust-lang-nursery/reference#231

Closes #44101
2018-02-04 23:28:58 +08:00
kennytm
8b8c6ee796
Rollup merge of #47912 - cuviper:glibc-stack-guard, r=alexcrichton
Use a range to identify SIGSEGV in stack guards

Previously, the `guard::init()` and `guard::current()` functions were
returning a `usize` address representing the top of the stack guard,
respectively for the main thread and for spawned threads.  The `SIGSEGV`
handler on `unix` targets checked if a fault was within one page below that
address, if so reporting it as a stack overflow.

Now `unix` targets report a `Range<usize>` representing the guard memory,
so it can cover arbitrary guard sizes.  Non-`unix` targets which always
return `None` for guards now do so with `Option<!>`, so they don't pay any
overhead.

For `linux-gnu` in particular, the previous guard upper-bound was
`stackaddr + guardsize`, as the protected memory was *inside* the stack.
This was a glibc bug, and starting from 2.27 they are moving the guard
*past* the end of the stack.  However, there's no simple way for us to know
where the guard page actually lies, so now we declare it as the whole range
of `stackaddr ± guardsize`, and any fault therein will be called a stack
overflow.  This fixes #47863.
2018-02-04 23:28:57 +08:00
kennytm
349115efda
Rollup merge of #47896 - zackmdavis:and_the_case_of_the_necessary_unnecessary_parens, r=nikomatsakis
decline to lint technically-unnecessary parens in function or method arguments inside of nested macros

In #46980 ("in which the unused-parens lint..." (14982db2d6)), the
unused-parens lint was made to check function and method arguments,
which it previously did not (seemingly due to oversight rather than
willful design). However, in #47775 and discussion thereon,
user–developers of Geal/nom and graphql-rust/juniper reported that the
lint was seemingly erroneously triggering on certain complex macros in
those projects. While this doesn't seem like a bug in the lint in the
particular strict sense that the expanded code would, in fact, contain
unncecessary parentheses, it also doesn't seem like the sort of thing
macro authors should have to think about: the spirit of the
unused-parens lint is to prevent needless clutter in code, not to give
macro authors extra heartache in the handling of token trees.

We propose the expediency of declining to lint unused parentheses in
function or method args inside of nested expansions: we believe that
this should eliminate the petty, troublesome lint warnings reported
in the issue, without forgoing the benefits of the lint in simpler
macros.

It seemed like too much duplicated code for the `Call` and `MethodCall`
match arms to duplicate the nested-macro check in addition to each
having their own `for` loop, so this occasioned a slight refactor so
that the function and method cases could share code—hopefully the
overall intent is at least no less clear to the gentle reader.

This is concerning #47775.
2018-02-04 23:28:56 +08:00
kennytm
f3dc75602f
Rollup merge of #47877 - spastorino:lifetime-bounds-in-copy, r=nikomatsakis
Do not ignore lifetime bounds in Copy impls

cc #29149

r? @nikomatsakis
2018-02-04 23:28:54 +08:00
kennytm
686986375b
Rollup merge of #47862 - GuillaumeGomez:const-evaluation-ice, r=eddyb
Fix const evaluation ICE in rustdoc

Fixes #47860.

r? @eddyb
2018-02-04 23:28:53 +08:00
Jay Strict
f168700ba6 Remove 'the this' in doc comments. 2018-02-04 16:24:18 +01:00
oberien
6caec2c049 Document TrustedLen guarantees more explicitly 2018-02-04 16:09:32 +01:00
oberien
75474ff132 TrustedLen for Repeat / RangeFrom test cases 2018-02-04 16:09:32 +01:00
oberien
a1809d5784 Implement TrustedLen for Take<Repeat> and Take<RangeFrom> 2018-02-04 16:09:32 +01:00
bors
0c6091fbd0 Auto merge of #47834 - Mark-Simulacrum:no-cgu-release, r=alexcrichton
Do not enable ThinLTO on stable, beta, or nightly builds.

Fixes #45444
2018-02-04 15:06:06 +00:00
John Kåre Alsaker
32d5fbe8b2 Run the run-make tests last, so more tests run on Windows when make is unavailable 2018-02-04 14:52:31 +01:00
Guillaume Gomez
8a587e67af Improve big sidebar elements display 2018-02-04 13:47:35 +01:00
Guillaume Gomez
c26abe75bc Fix not selectable search input 2018-02-04 13:38:39 +01:00
bors
3986539df6 Auto merge of #47991 - nrc:update, r=alexcrichton
Update RLS and Rustfmt

r? @alexcrichton
2018-02-04 12:26:09 +00:00
Seiichi Uchida
3d114c7f61 Remove delay_span_bug() in check_aliasability
This path was considered to be unreachable. However,
`&mut` could potentially live inside `static`.
For example, `static TAB: [&mut [u8]; 0] = [];`.
2018-02-04 19:15:34 +09:00
Gilad Naaman
61ff3ba536 libtest: Replace panics with error messages 2018-02-04 06:10:54 +02:00
bors
9af374abf9 Auto merge of #47915 - eddyb:layout-of, r=nikomatsakis
rustc: prefer ParamEnvAnd and LayoutCx over tuples for LayoutOf.

This PR provides `tcx.layout_of(param_env.and(ty))` as the idiomatic replacement for the existing `(tcx, param_env).layout_of(ty)` and removes fragile (coherence-wise) layout-related tuple impls.

r? @nikomatsakis
2018-02-04 03:33:44 +00:00
Nick Cameron
cec82c1bfe Update RLS and Rustfmt 2018-02-04 15:08:54 +13:00
Mark Simulacrum
e1f04c04df Disable ThinLTO for dist builds.
Dist builds should always be as fast as we can make them, and since
those run on CI we don't care quite as much for the build being somewhat
slower. As such, we don't automatically enable ThinLTO on builds for the
dist builders.
2018-02-03 18:38:17 -07:00
bors
3d292b793a Auto merge of #47845 - Zoxc:gen-fixes, r=nikomatsakis
Generator bugfixes

r? @nikomatsakis
2018-02-03 17:28:08 +00:00
Corey Farwell
d597da3267 Clarify shared file handler behavior of File::try_clone.
Fixes https://github.com/rust-lang/rust/issues/46578.
2018-02-03 11:50:48 -05:00
bors
aa0a5a86a1 Auto merge of #46254 - Dylan-DPC:ellided-lifetime, r=nikomatsakis
elided lifetime

Closes #45992

Hey
Having a problem with my config so decided to make a WIP PR nevertheless. Will add some more tests.
2018-02-03 14:38:52 +00:00
Guillaume Gomez
dde3611281 Fix rendering issues on mobile 2018-02-03 13:13:29 +01:00
bors
8d04b8fda7 Auto merge of #47962 - kennytm:rollup, r=kennytm
Rollup of 10 pull requests

- Successful merges: #46156, #47829, #47842, #47898, #47914, #47916, #47919, #47942, #47951, #47973
- Failed merges: #47753
2018-02-03 12:02:33 +00:00
Guillaume Gomez
6b35d81382 Fix const evaluation ICE in rustdoc 2018-02-03 12:30:37 +01:00
kennytm
3a0a423d61
Rollup merge of #47973 - perlun:patch-1, r=dtolnay
copy_nonoverlapping example: Fixed typo

The comment referred to a variable using an incorrect name. (it has probably been renamed since the comment was written, or the comment was copied elsewhere - I noted the example in libcore has the `tmp` name for the temporary variable.)
2018-02-03 16:08:27 +08:00
Peter Atashian
c42d76d3c8
Somehow this function got flipped around
Unflip it
2018-02-03 01:52:04 -05:00
Peter Atashian
f4c83693f9
Go back to files directories and symlinks being mutually exclusive
Be smarter about what a symlink is however
2018-02-03 01:45:58 -05:00
bors
6c15dffc43 Auto merge of #47791 - estebank:mismatched-trait-impl, r=nikomatsakis
Tweak presentation on lifetime trait mismatch

 - On trait/impl method discrepancy, add label pointing at trait signature.
 - Point only at method definition when referring to named lifetimes on lifetime mismatch.
 - When the sub and sup expectations are the same, tweak the output to avoid repeated spans.

Fix #30790, CC #18759.
2018-02-03 01:26:56 +00:00
Eduard-Mihai Burtescu
cc68afb384 ui tests: diff from old (expected) to new (actual) instead of backwards. 2018-02-03 02:51:16 +02:00
Per Lundberg
321e429b9f
copy_nonoverlapping example: Fixed typo
The comment referred to a variable using an incorrect name. (it has probably been renamed since the comment was written, or the comment was copied elsewhere - I noted the example in libcore has the `tmp` name for the temporary variable.)
2018-02-02 22:44:14 +02:00
Aaron Hill
a7646df923
Remove commented-out code 2018-02-02 14:59:27 -05:00
kennytm
8d1586df51
Rollup merge of #47951 - GuillaumeGomez:sidebar-hover, r=QuietMisdreavus Fix ugly hover in sidebar In the sidebar, the elements under Structs, Enums... have an ugly hover if they're not selected. This fixes it. r? @QuietMisdreavus 2018-02-02 22:48:51 +08:00
kennytm
9d995d2832
Rollup merge of #47942 - estebank:macro-spans, r=nikomatsakis Minimize weird spans involving macro context Sometimes the parser attempts to synthesize spans from within a macro context with the span for the captured argument, leading to non-sensical spans with very bad output. Given that an incorrect span is worse than a partially incomplete span, when detecting this situation return only one of the spans without merging them. Fix #32072, #47778. CC #23480. 2018-02-02 22:48:50 +08:00