]> git.lizzy.rs Git - rust.git/log
rust.git
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 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 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

5 years agoAuto merge of #56481 - arielb1:dynamic-order, r=nikomatsakis
bors [Tue, 18 Dec 2018 06:50:11 +0000 (06:50 +0000)]
Auto merge of #56481 - arielb1:dynamic-order, r=nikomatsakis

add coherence future-compat warnings for marker-only trait objects

The future-compat warnings break code that assumes that `dyn Send + Sync !=
dyn Sync + Send`, and are the first step in making them equal. cc #33140.

Note: this lint should be made to default-warn before we merge. It is deny only for the crater run.

r? @nikomatsakis / @scalexm . cc @Centril & @alexreg.

5 years agoimprove tests as suggested by review comments
Ariel Ben-Yehuda [Mon, 17 Dec 2018 22:33:21 +0000 (00:33 +0200)]
improve tests as suggested by review comments

5 years agoAuto merge of #56303 - petrochenkov:stabuseas, r=cramertj
bors [Mon, 17 Dec 2018 22:18:26 +0000 (22:18 +0000)]
Auto merge of #56303 - petrochenkov:stabuseas, r=cramertj

Stabilize `underscore_imports`

Closes https://github.com/rust-lang/rust/issues/48216

5 years agoStabilize `underscore_imports`
Vadim Petrochenkov [Tue, 27 Nov 2018 23:58:18 +0000 (02:58 +0300)]
Stabilize `underscore_imports`

5 years agoAuto merge of #56904 - sinkuu:cycle_fold, r=bluss
bors [Mon, 17 Dec 2018 16:01:46 +0000 (16:01 +0000)]
Auto merge of #56904 - sinkuu:cycle_fold, r=bluss

Remove Cycle::try_fold override

Fixes #56883

5 years agoAuto merge of #56810 - sinkuu:build_match, r=oli-obk
bors [Mon, 17 Dec 2018 13:26:40 +0000 (13:26 +0000)]
Auto merge of #56810 - sinkuu:build_match, r=oli-obk

Improve MIR match generation for ranges

Improves MIR match generation to rule out ranges/values distinct from the range that has been tested. e.g., for this code:

```rust
match x {
    0..=5 if b => 0,
    6..=10 => 1,
    _ => 2,
}
```

MIR (before):

```rust
bb0: { ...; _4 = Le(const 0i32, _1); switchInt(move _4) -> [false: bb6, otherwise: bb5]; }
bb1: { _3 = const 0i32; goto -> bb8; }
bb2: { _6 = _2; switchInt(move _6) -> [false: bb6, otherwise: bb1]; } // If `!b`, jumps to test if `6 <= x <= 10`.
bb3: { _3 = const 1i32; goto -> bb8; }
bb4: { _3 = const 2i32; goto -> bb8; }
bb5: { _5 = Le(_1, const 5i32); switchInt(move _5) -> [false: bb6, otherwise: bb2]; }
bb6: { _7 = Le(const 6i32, _1); switchInt(move _7) -> [false: bb4, otherwise: bb7]; }
bb7: { _8 = Le(_1, const 10i32); switchInt(move _8) -> [false: bb4, otherwise: bb3]; }
```

MIR (after):
```rust
bb0: { ...; _4 = Le(const 0i32, _1); switchInt(move _4) -> [false: bb5, otherwise: bb6]; }
bb1: { _3 = const 0i32; goto -> bb8; }
bb2: { _6 = _2; switchInt(move _6) -> [false: bb4, otherwise: bb1]; } // If `!b`, jumps to `_ =>` arm.
bb3: { _3 = const 1i32; goto -> bb8; }
bb4: { _3 = const 2i32; goto -> bb8; }
bb5: { _7 = Le(const 6i32, _1); switchInt(move _7) -> [false: bb4, otherwise: bb7]; }
bb6: { _5 = Le(_1, const 5i32); switchInt(move _5) -> [false: bb5, otherwise: bb2]; }
bb7: { _8 = Le(_1, const 10i32); switchInt(move _8) -> [false: bb4, otherwise: bb3]; }
```

cc #29623

5 years agoAuto merge of #56853 - matthiaskrgr:clippy, r=oli-obk
bors [Mon, 17 Dec 2018 11:11:55 +0000 (11:11 +0000)]
Auto merge of #56853 - matthiaskrgr:clippy, r=oli-obk

submodules: update clippy from b7a431ea to a416c5e0

Changes:

````
rustup rust-lang/rust#52994
Fix test
Line length fix
Remove references to sized for end users
Remove DUMMY_SP
Add suggestion for replacement
Update lint definitions
Lint for Vec<Box<T: Sized>> - Closes #3530
Fix doc_markdown mixed case false positive
question_mark: Suggest Some(opt?) for if-else
redundant_field_names: Do not trigger on path with type params
question_mark: Lint only early returns
question_mark: Fix applicability
Remove obsolete comment
new_without_default, partialeq_ne_impl: Use span_lint_node
Update .stderr after rebase
cargo fmt and remove stabilized feature
Make suggestion Applicability::MachineApplicable
Address review feedback
Extract method
Check array lengths to prevent OOB access
Add suggestion for explicit_write lint
Fix write_with_newline escaping false positive
````

make toolstate green again

5 years agoAuto merge of #56833 - nagisa:ios-fix, r=alexcrichton
bors [Mon, 17 Dec 2018 08:54:15 +0000 (08:54 +0000)]
Auto merge of #56833 - nagisa:ios-fix, r=alexcrichton

Provide -isysroot with sdkroot for ios builds

Necessary for the new XCode?

Absolutely positively definitely untested… although I did

```
cargo rustc -- -Clink-arg=-isysroot -Clink-arg=$sdk_root
```

and stuff did compile for once.

5 years agotidy
Shotaro Yamada [Mon, 17 Dec 2018 08:10:49 +0000 (17:10 +0900)]
tidy

5 years agoAdd MIR test
Shotaro Yamada [Mon, 17 Dec 2018 07:53:22 +0000 (16:53 +0900)]
Add MIR test

5 years agoAuto merge of #56764 - sinkuu:simpcfg_bb0, r=matthewjasper
bors [Mon, 17 Dec 2018 06:34:04 +0000 (06:34 +0000)]
Auto merge of #56764 - sinkuu:simpcfg_bb0, r=matthewjasper

mir-opt: Make SimplifyCfg collapse goto chains starting from bb0

`SimplifyCfg` pass was not able to collapse goto chains starting from bb0, leaving MIR like this:

```
bb0: {
    goto -> bb1;
}
```

5 years agoRemove `<Cycle as Iterator>::try_fold` override
Shotaro Yamada [Mon, 17 Dec 2018 00:35:28 +0000 (09:35 +0900)]
Remove `<Cycle as Iterator>::try_fold` override

It was a incorrect optimization.

5 years agoAuto merge of #56642 - nikic:llvm-6, r=alexcrichton
bors [Mon, 17 Dec 2018 04:18:14 +0000 (04:18 +0000)]
Auto merge of #56642 - nikic:llvm-6, r=alexcrichton

Bump minimum required LLVM version to 6.0

Based on the discussion in #55842, while the overall position of Rust wrt LLVM continues to be contentious, there does seem to be a consensus that there is no need for continued support of LLVM 5. This PR bumps our version requirement to LLVM 6.0 and makes Travis run against that.

I hope that this is going to unblock #52694. If I understand correctly, while this issue still exists in LLVM 6, Ubuntu has backported the relevant patch.

r? @alexcrichton

5 years agoAuto merge of #56737 - nnethercote:TokenStream-improvements, r=petrochenkov
bors [Mon, 17 Dec 2018 01:48:23 +0000 (01:48 +0000)]
Auto merge of #56737 - nnethercote:TokenStream-improvements, r=petrochenkov

`TokenStream` improvements

Some `TokenStream` improvements: shrinking `TokenStream` and some other types, and some other code clean-ups.

5 years agoAuto merge of #56875 - Centril:rollup, r=Centril
bors [Sun, 16 Dec 2018 20:58:09 +0000 (20:58 +0000)]
Auto merge of #56875 - Centril:rollup, r=Centril

Rollup of 20 pull requests

Successful merges:

 - #53506 (Documentation for impl From for AtomicBool and other Atomic types)
 - #56343 (Remove not used mod)
 - #56439 (Clearer error message for dead assign)
 - #56640 (Add FreeBSD unsigned char platforms to std::os::raw)
 - #56648 (Fix BTreeMap UB)
 - #56672 (Document time of back operations of a Linked List)
 - #56706 (Make `const unsafe fn` bodies `unsafe`)
 - #56742 (infer: remove Box from a returned Iterator)
 - #56761 (Suggest using `.display()` when trying to print a `Path`)
 - #56781 (Update LLVM submodule)
 - #56789 (rustc: Add an unstable `simd_select_bitmask` intrinsic)
 - #56790 (Make RValue::Discriminant a normal Shallow read)
 - #56793 (rustdoc: look for comments when scraping attributes/crates from doctests)
 - #56826 (rustc: Add the `cmpxchg16b` target feature on x86/x86_64)
 - #56832 (std: Use `rustc_demangle` from crates.io)
 - #56844 (Improve CSS rule)
 - #56850 (Fixed issue with using `Self` ctor in typedefs)
 - #56855 (Remove u8 cttz hack)
 - #56857 (Fix a small mistake regarding NaNs in a deprecation message)
 - #56858 (Fix doc of `std::fs::canonicalize`)

Failed merges:

 - #56741 (treat ref-to-raw cast like a reborrow: do a special kind of retag)

r? @ghost

5 years agoAuto merge of #56876 - GuillaumeGomez:fix-JS-errors, r=QuietMisdreavus
bors [Sun, 16 Dec 2018 18:40:10 +0000 (18:40 +0000)]
Auto merge of #56876 - GuillaumeGomez:fix-JS-errors, r=QuietMisdreavus

Fix js errors

Fix JS error (you can see it on the iterator doc page) and the invalid theme switch.

r? @QuietMisdreavus

5 years agoFix invalid JS file generation
Guillaume Gomez [Sun, 16 Dec 2018 13:44:44 +0000 (14:44 +0100)]
Fix invalid JS file generation

5 years agoRollup merge of #56858 - tbu-:pr_doc_canonicalize, r=shepmaster
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:40 +0000 (14:08 +0100)]
Rollup merge of #56858 - tbu-:pr_doc_canonicalize, r=shepmaster

Fix doc of `std::fs::canonicalize`

Point out that the final component of the path name might be a filename
(and not a directory name). Previously, the doc said that all components
of the path must be directory names, when it actually only ment all but
the final one.

Fixes #54056.

5 years agoRollup merge of #56857 - tbu-:pr_doc_abssub, r=zackmdavis
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:39 +0000 (14:08 +0100)]
Rollup merge of #56857 - tbu-:pr_doc_abssub, r=zackmdavis

Fix a small mistake regarding NaNs in a deprecation message

`max` on floats returns the other argument if one of them is NaN, which
would be `0.0` in this case. This is unlike the C functions `fdim` and
`fdimf` which return NaN if either of their arguments is NaN.

https://doc.rust-lang.org/1.31.0/std/primitive.f32.html#method.max
https://en.cppreference.com/w/c/numeric/math/fdim

5 years agoRollup merge of #56855 - nikic:remove-cttz-hack, r=nagisa
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:37 +0000 (14:08 +0100)]
Rollup merge of #56855 - nikic:remove-cttz-hack, r=nagisa

Remove u8 cttz hack

This issue has since been fixed in LLVM: https://github.com/llvm-mirror/llvm/commit/1886c8e29a9992d73c5e6ba0d52eb98ee036ab5d

Furthermore this code doesn't actually work, because the 8 literal does not match the $BITS provided from the macro invocation, so effectively this was just dead code. Ref #43024.

What LLVM does is still not ideal for CPUs that only have bsf but not tzcnt, will create a patch for that later.

r? @nagisa

5 years agoRollup merge of #56850 - alexreg:fix-self-in-typedefs, r=petrochenkov
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:36 +0000 (14:08 +0100)]
Rollup merge of #56850 - alexreg:fix-self-in-typedefs, r=petrochenkov

Fixed issue with using `Self` ctor in typedefs

Added two regression tests.

This is definitely suitable for a beta backport.

CC @Centril

5 years agoRollup merge of #56844 - GuillaumeGomez:improve-css-rule, r=QuietMisdreavus
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:34 +0000 (14:08 +0100)]
Rollup merge of #56844 - GuillaumeGomez:improve-css-rule, r=QuietMisdreavus

Improve CSS rule

Needed for #56819.

r? @QuietMisdreavus

5 years agoRollup merge of #56832 - alexcrichton:external-demangle, r=Mark-Simulacrum
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:33 +0000 (14:08 +0100)]
Rollup merge of #56832 - alexcrichton:external-demangle, r=Mark-Simulacrum

std: Use `rustc_demangle` from crates.io

No more need to duplicate the demangling routine between crates.io and
the standard library, we can use the exact same one!

5 years agoRollup merge of #56826 - alexcrichton:atomic-u128, r=gnzlbg
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:32 +0000 (14:08 +0100)]
Rollup merge of #56826 - alexcrichton:atomic-u128, r=gnzlbg

rustc: Add the `cmpxchg16b` target feature on x86/x86_64

This appears to be called `cx16` in LLVM and a few other locations, but
the Intel Intrinsic Guide doesn't have a name for this and the CPU
manual from Intel only mentions `cmpxchg16b`, so that's the name chosen
here.

5 years agoRollup merge of #56793 - QuietMisdreavus:better-doctests, r=GuillaumeGomez
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:30 +0000 (14:08 +0100)]
Rollup merge of #56793 - QuietMisdreavus:better-doctests, r=GuillaumeGomez

rustdoc: look for comments when scraping attributes/crates from doctests

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

When scraping out crate-level attributes and `extern crate` statements, we wouldn't look for comments, so any presence of comments would shunt it and everything after it into "everything else". This could cause parsing issues when looking for `fn main` and `extern crate my_crate` later on, which would in turn cause rustdoc to incorrectly wrap a test with `fn main` when it already had one declared.

I took the opportunity to clean up the logic a little bit, but it would still benefit from a libsyntax-based loop like the `fn main` detection.

5 years agoRollup merge of #56790 - rust-lang:borrowck-niche-discriminants, r=nikomatsakis
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:29 +0000 (14:08 +0100)]
Rollup merge of #56790 - rust-lang:borrowck-niche-discriminants, r=nikomatsakis

Make RValue::Discriminant a normal Shallow read

Enum layout optimizations mean that the discriminant of an enum may not be stored in a tag disjoint from the rest of the fields of the enum. Stop borrow checking as though they are.

Run with MIRI to see why this is needed: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=09a3236685a06b6096e2e2e3968b852c.

This issue exists with the lexical borrow checker as well (see #45045) so migrate mode should prevent this from being immediately breaking.

r? @nikomatsakis

Fixes #56797

5 years agoRollup merge of #56789 - alexcrichton:simd_select_bitmask, r=rkruppe
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:28 +0000 (14:08 +0100)]
Rollup merge of #56789 - alexcrichton:simd_select_bitmask, r=rkruppe

rustc: Add an unstable `simd_select_bitmask` intrinsic

This is going to be required for binding a number of AVX-512 intrinsics
in the `stdsimd` repository, and this intrinsic is the same as
`simd_select` except that it takes a bitmask as the first argument
instead of a SIMD vector. This bitmask is then transmuted into a `<NN x
i8>` argument, depending on how many bits it is.

cc rust-lang-nursery/stdsimd#310

5 years agoRollup merge of #56781 - nikic:llvm-update, r=alexcrichton
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:27 +0000 (14:08 +0100)]
Rollup merge of #56781 - nikic:llvm-update, r=alexcrichton

Update LLVM submodule

Fixes #52026.
Fixes #56618.

r? @alexcrichton

5 years agoRollup merge of #56761 - estebank:path-display, r=zackmdavis
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:25 +0000 (14:08 +0100)]
Rollup merge of #56761 - estebank:path-display, r=zackmdavis

Suggest using `.display()` when trying to print a `Path`

Fix #38997.

5 years agoRollup merge of #56742 - ljedrz:remove_query_response_box, r=oli-obk
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:24 +0000 (14:08 +0100)]
Rollup merge of #56742 - ljedrz:remove_query_response_box, r=oli-obk

infer: remove Box from a returned Iterator

5 years agoRollup merge of #56706 - oli-obk:const_unsafe_fn, r=Centril
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:22 +0000 (14:08 +0100)]
Rollup merge of #56706 - oli-obk:const_unsafe_fn, r=Centril

Make `const unsafe fn` bodies `unsafe`

r? @Centril

Updated for tracking issue discussion https://github.com/rust-lang/rust/issues/55607#issuecomment-445882296

5 years agoRollup merge of #56672 - ccouzens:master, r=nikic
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:21 +0000 (14:08 +0100)]
Rollup merge of #56672 - ccouzens:master, r=nikic

Document time of back operations of a Linked List

Popping and pushing from the end of a linked list is constant time. This
documentation is already there for popping and pushing from the front.

@bors: r+ 38fe8d2 rollup

5 years agoRollup merge of #56648 - RalfJung:btree, r=sfackler
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:19 +0000 (14:08 +0100)]
Rollup merge of #56648 - RalfJung:btree, r=sfackler

Fix BTreeMap UB

BTreeMap currently causes UB by created a shared reference to a too-small allocation.  This PR fixes that by introducing a `NodeHeader` type and using that until we really need access to the key/value arrays.  Avoiding run-time checks in `into_key_slice` was somewhat tricky, see the comments embedded in the code.

I also adjusted `as_leaf_mut` to return a raw pointer, because creating a mutable reference asserts that there are no aliases to the pointee, but that's not always correct: We use `as_leaf_mut` twice to create two mutable slices for keys and values; the second call overlaps with the first slice and hence is not a unique pointer.

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

Cc @nikomatsakis @Gankro

5 years agoRollup merge of #56640 - myfreeweb:patch-1, r=alexcrichton
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:17 +0000 (14:08 +0100)]
Rollup merge of #56640 - myfreeweb:patch-1, r=alexcrichton

Add FreeBSD unsigned char platforms to std::os::raw

Reference: https://www.freebsd.org/cgi/man.cgi?query=arch&apropos=0&sektion=7

5 years agoRollup merge of #56439 - JohnGinger:master, r=nikomatsakis
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:16 +0000 (14:08 +0100)]
Rollup merge of #56439 - JohnGinger:master, r=nikomatsakis

Clearer error message for dead assign

I'm not that this is the right place for this (if it needs an RFC or not).

I had the problem where I misunderstood the compiler lint message https://github.com/rust-lang/rust/issues/56436 and other people seem to have had the same problem https://www.reddit.com/r/rust/comments/8cy9p4/value_assigned_to_is_never_read/.

I think this new wording might be slightly clearer (and help out beginners like me). I'm very new though, so there might be some nuance I'm missing that would make this more confusing or a bad idea for other reasons.

I thought I would create a PR to make it easy to change the code if the consensus was that it would make sense to make a change.

If this is the wrong place for this sort of thing I'll happily delete/move it.

5 years agoRollup merge of #56343 - yui-knk:remove_mir_stats_mod, r=nikomatsakis
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:15 +0000 (14:08 +0100)]
Rollup merge of #56343 - yui-knk:remove_mir_stats_mod, r=nikomatsakis

Remove not used mod

`mir_stats` mod has not been used since c1ff10464dc6b685f871d2365e3d8a39de324ba9.

5 years agoRollup merge of #53506 - phungleson:fix-from-docs-atomic, r=KodrAus
Mazdak Farrokhzad [Sun, 16 Dec 2018 13:08:13 +0000 (14:08 +0100)]
Rollup merge of #53506 - phungleson:fix-from-docs-atomic, r=KodrAus

Documentation for impl From for AtomicBool and other Atomic types

As part of issue #51430 (cc @skade).

The impl is very simple, so not sure if we need to go into any details.

5 years agoFix js errors
Guillaume Gomez [Sun, 16 Dec 2018 12:45:46 +0000 (13:45 +0100)]
Fix js errors

5 years agoAuto merge of #56600 - ljedrz:fix_edition, r=Mark-Simulacrum
bors [Sat, 15 Dec 2018 23:50:47 +0000 (23:50 +0000)]
Auto merge of #56600 - ljedrz:fix_edition, r=Mark-Simulacrum

bootstrap: fix edition

A byproduct of work on https://github.com/rust-lang/rust/pull/56595; done with `cargo fix --edition`.

5 years agofix trait objects with a Self-having projection va
Ariel Ben-Yehuda [Sat, 15 Dec 2018 22:00:46 +0000 (00:00 +0200)]
fix trait objects with a Self-having projection va

This follows ALT2 in the issue.

Fixes #56288.

5 years agoAuto merge of #56203 - aheart:master, r=varkor
bors [Sat, 15 Dec 2018 21:34:22 +0000 (21:34 +0000)]
Auto merge of #56203 - aheart:master, r=varkor

Add lint for items deprecated in future

Resolves #55892

5 years agoCorrected expected test err messages.
Alexander Regueiro [Sat, 15 Dec 2018 17:31:46 +0000 (17:31 +0000)]
Corrected expected test err messages.

5 years agoFixed minor issues raised in review.
Alexander Regueiro [Thu, 13 Dec 2018 15:35:45 +0000 (15:35 +0000)]
Fixed minor issues raised in review.

5 years agoAdded test for issue #56835.
Alexander Regueiro [Sat, 15 Dec 2018 04:33:54 +0000 (04:33 +0000)]
Added test for issue #56835.

5 years agoFixed issue #56199.
Alexander Regueiro [Tue, 11 Dec 2018 00:05:35 +0000 (00:05 +0000)]
Fixed issue #56199.

5 years agoAuto merge of #56847 - pietroalbini:fix-broken-toolstate, r=pietroalbini
bors [Sat, 15 Dec 2018 19:11:33 +0000 (19:11 +0000)]
Auto merge of #56847 - pietroalbini:fix-broken-toolstate, r=pietroalbini

Revert merge of #56758 - Manishearth:emoji-status-toolstate

#56758 is breaking master.

r? @ghost
cc @Manishearth @kennytm

5 years agoFix doc of `std::fs::canonicalize`
Tobias Bucher [Sat, 15 Dec 2018 17:51:08 +0000 (18:51 +0100)]
Fix doc of `std::fs::canonicalize`

Point out that the final component of the path name might be a filename
(and not a directory name). Previously, the doc said that all components
of the path must be directory names, when it actually only ment all but
the final one.

Fixes #54056.

5 years agoFix a small mistake regarding NaNs in a deprecation message
Tobias Bucher [Sat, 15 Dec 2018 17:41:21 +0000 (18:41 +0100)]
Fix a small mistake regarding NaNs in a deprecation message

`max` on floats returns the other argument if one of them is NaN, which
would be `0.0` in this case. This is unlike the C functions `fdim` and
`fdimf` which return NaN if either of their arguments is NaN.

https://doc.rust-lang.org/1.31.0/std/primitive.f32.html#method.max
https://en.cppreference.com/w/c/numeric/math/fdim

5 years agoAuto merge of #56846 - pietroalbini:rollup, r=pietroalbini
bors [Sat, 15 Dec 2018 16:56:10 +0000 (16:56 +0000)]
Auto merge of #56846 - pietroalbini:rollup, r=pietroalbini

Rollup of 7 pull requests

Successful merges:

 - #56677 (#[must_use] on traits in stdlib)
 - #56679 (overhaul external doc attribute diagnostics)
 - #56682 (Update the stdsimd submodule)
 - #56691 (fix install broken link)
 - #56710 (Always set the RDRAND and RDSEED features on SGX)
 - #56713 (Test capacity of ZST vector)
 - #56841 (Add some unit tests to compiletest)

Failed merges:

r? @ghost

5 years agoRemove u8 cttz hack
Nikita Popov [Sat, 15 Dec 2018 16:26:18 +0000 (17:26 +0100)]
Remove u8 cttz hack

This issue has since been fixed in LLVM:
https://github.com/llvm-mirror/llvm/commit/1886c8e29a9992d73c5e6ba0d52eb98ee036ab5d

Furthermore this doesn't actually work, because the "8" literal does
not match the $BITS provided from the macro invocation, so effectively
this code was not being used anyway...

5 years agosubmodules: update clippy from b7a431ea to a416c5e0
Matthias KrĂ¼ger [Sat, 15 Dec 2018 16:19:47 +0000 (17:19 +0100)]
submodules: update clippy from b7a431ea to a416c5e0

Changes:

````
rustup rust-lang/rust#52994
Fix test
Line length fix
Remove references to sized for end users
Remove DUMMY_SP
Add suggestion for replacement
Update lint definitions
Lint for Vec<Box<T: Sized>> - Closes #3530
Fix doc_markdown mixed case false positive
question_mark: Suggest Some(opt?) for if-else
redundant_field_names: Do not trigger on path with type params
question_mark: Lint only early returns
question_mark: Fix applicability
Remove obsolete comment
new_without_default, partialeq_ne_impl: Use span_lint_node
Update .stderr after rebase
cargo fmt and remove stabilized feature
Make suggestion Applicability::MachineApplicable
Address review feedback
Extract method
Check array lengths to prevent OOB access
Add suggestion for explicit_write lint
Fix write_with_newline escaping false positive
````

5 years agoAdd common struct for range
Shotaro Yamada [Sat, 15 Dec 2018 14:04:23 +0000 (23:04 +0900)]
Add common struct for range

5 years agoFactor out
Shotaro Yamada [Sat, 15 Dec 2018 13:44:39 +0000 (22:44 +0900)]
Factor out

5 years agoRevert "Rollup merge of #56758 - Manishearth:emoji-status-toolstate, r=kennytm"
Pietro Albini [Sat, 15 Dec 2018 13:57:17 +0000 (14:57 +0100)]
Revert "Rollup merge of #56758 - Manishearth:emoji-status-toolstate, r=kennytm"

This reverts commit 050bb10dc3e1d1c6a0aee3c50955d401658dece5, reversing
changes made to c530e31245ba10b2587bc908a65bd6e7910bc50f.

5 years agoRollup merge of #56841 - phansch:add_various_compiletest_unittests, r=oli-obk
Pietro Albini [Sat, 15 Dec 2018 13:47:40 +0000 (14:47 +0100)]
Rollup merge of #56841 - phansch:add_various_compiletest_unittests, r=oli-obk

Add some unit tests to compiletest

Based on #56792, otherwise the tests won't be executed on CI.

Just a small start, I would like to add more testing to compiletest in the future but that will require some refactoring first.

cc #47606

5 years agoRollup merge of #56713 - xfix:vec-test-zst-capacity, r=TimNN
Pietro Albini [Sat, 15 Dec 2018 13:47:39 +0000 (14:47 +0100)]
Rollup merge of #56713 - xfix:vec-test-zst-capacity, r=TimNN

Test capacity of ZST vector

Initially, #50233 accidentally changed the capacity of empty ZST. This was pointed out during code review. This commit adds a test to prevent capacity of ZST vectors from accidentally changing to prevent that from happening again.

5 years agoRollup merge of #56710 - jethrogb:jb/sgx-target-features, r=alexcrichton
Pietro Albini [Sat, 15 Dec 2018 13:47:38 +0000 (14:47 +0100)]
Rollup merge of #56710 - jethrogb:jb/sgx-target-features, r=alexcrichton

Always set the RDRAND and RDSEED features on SGX

Not sure if this is 100% correct.

This [Intel article](https://software.intel.com/en-us/articles/intel-software-guard-extensions-tutorial-part-5-enclave-development) goes in great depth regarding using (untrusted) CPUID to see whether RDRAND/RDSEED is supported, and explains what happens to the enclave if the CPUID result is faked.

I'd say that an implementation of SGX that doesn't make RDRAND available to the enclave is so severely limited/broken that it's ok if you get #UD in that case. The case is less clear for RDSEED, but it so far every processor released by Intel with SGX support also has RDSEED (including Gemini Lake).

cc @briansmith

5 years agoRollup merge of #56691 - mishaker:fix_doc_install_broken_link, r=jonas-schievink
Pietro Albini [Sat, 15 Dec 2018 13:47:37 +0000 (14:47 +0100)]
Rollup merge of #56691 - mishaker:fix_doc_install_broken_link, r=jonas-schievink

fix install broken link

solves #56690

5 years agoRollup merge of #56682 - alexcrichton:update-stdsimd, r=nikomatsakis
Pietro Albini [Sat, 15 Dec 2018 13:47:36 +0000 (14:47 +0100)]
Rollup merge of #56682 - alexcrichton:update-stdsimd, r=nikomatsakis

Update the stdsimd submodule

Includes some new stabilized intrinsics for the wasm32 target!

Closes #56292

5 years agoRollup merge of #56679 - euclio:external-doc-parse, r=estebank
Pietro Albini [Sat, 15 Dec 2018 13:47:34 +0000 (14:47 +0100)]
Rollup merge of #56679 - euclio:external-doc-parse, r=estebank

overhaul external doc attribute diagnostics

This PR improves the error handling and spans for the external doc attribute. Many cases that silently failed before now emit errors, spans are tightened, and the errors have help and suggestions.

I tried to address all the cases that users ran into in the tracking issue.

cc #44732

r? @QuietMisdreavus

5 years agoRollup merge of #56677 - aelred:must-use-on-traits, r=estebank
Pietro Albini [Sat, 15 Dec 2018 13:47:33 +0000 (14:47 +0100)]
Rollup merge of #56677 - aelred:must-use-on-traits, r=estebank

#[must_use] on traits in stdlib

Based on #55506.

Adds `#[must_use]` attribute to traits in the stdlib:
- `Iterator`
- `Future`
- `FnOnce`
- `Fn`
- `FnMut`

There may be other traits that should have the attribute, but I couldn't find/think of any.

5 years agoImprove CSS rule
Guillaume Gomez [Sat, 15 Dec 2018 11:42:10 +0000 (12:42 +0100)]
Improve CSS rule

5 years agoAuto merge of #56840 - pietroalbini:rollup, r=pietroalbini
bors [Sat, 15 Dec 2018 11:31:40 +0000 (11:31 +0000)]
Auto merge of #56840 - pietroalbini:rollup, r=pietroalbini

Rollup of 14 pull requests

Successful merges:

 - #56718 (Use libbacktrace pretty-printing)
 - #56725 (fix rust-lang/rust issue #50583)
 - #56731 (Add missing urls in ffi module docs)
 - #56738 (Fix private_no_mangle_fns message grammar)
 - #56746 (Add test of current behavior (infer free region within closure body))
 - #56747 (target: remove Box returned by get_targets)
 - #56751 (Allow ptr::hash to accept fat pointers)
 - #56755 (Account for `impl Trait` when suggesting lifetime)
 - #56758 (Add short emoji status to toolstate updates)
 - #56760 (Deduplicate unsatisfied trait bounds)
 - #56769 (Add x86_64-unknown-uefi target)
 - #56792 (Bootstrap: Add testsuite for compiletest tool)
 - #56808 (Fixes broken links)
 - #56809 (Fix docs path to PermissionsExt)

Failed merges:

r? @ghost

5 years agocompiletest: unit test parse_normalization_string
Philipp Hansch [Sat, 15 Dec 2018 09:58:24 +0000 (10:58 +0100)]
compiletest: unit test parse_normalization_string

There is a FIXME inside that function and I think the unit tests can be
helpful to resolve it without breaking anything else.

5 years agocompiletest: Add some compiletest::util unittests
Philipp Hansch [Sat, 15 Dec 2018 09:58:03 +0000 (10:58 +0100)]
compiletest: Add some compiletest::util unittests

5 years agoBootstrap: Add testsuite for compiletest tool
Philipp Hansch [Thu, 13 Dec 2018 20:57:23 +0000 (21:57 +0100)]
Bootstrap: Add testsuite for compiletest tool

The (currently) single unit test of the compiletest tool was never
executed on CI. At least I couldn't find any references of it in the
logs. This adds a test suite for compiletest so that our tester is
tested, too.

The compiletest tests can then also be executed with:

    ./x.py test src/tools/compiletest

5 years agoRollup merge of #56809 - dbrgn:permissions-ext, r=alexcrichton
Pietro Albini [Sat, 15 Dec 2018 09:17:43 +0000 (10:17 +0100)]
Rollup merge of #56809 - dbrgn:permissions-ext, r=alexcrichton

Fix docs path to PermissionsExt

Couldn't test the link yet, since I didn't figure out how to build std rustdocs without building the entire compiler itself :slightly_smiling_face:

5 years agoRollup merge of #56808 - jrvidal:broken-links, r=kennytm
Pietro Albini [Sat, 15 Dec 2018 09:17:42 +0000 (10:17 +0100)]
Rollup merge of #56808 - jrvidal:broken-links, r=kennytm

Fixes broken links

Just a few broken links.

Not sure what to do about this one: https://github.com/rust-lang/rust/blame/master/src/doc/unstable-book/src/language-features/plugin.md#L135 (regex macros were removed a while ago in https://github.com/rust-lang/regex/commit/037595438947eeb4c63a0185065b0143a7f2ac2c).

5 years agoRollup merge of #56792 - phansch:add_compiletest_testsuite, r=alexcrichton
Pietro Albini [Sat, 15 Dec 2018 09:17:40 +0000 (10:17 +0100)]
Rollup merge of #56792 - phansch:add_compiletest_testsuite, r=alexcrichton

Bootstrap: Add testsuite for compiletest tool

This adds a test suite for compiletest so that the tester is tested, too.

The (currently) single unit test of the compiletest tool was never executed
on CI. At least I couldn't find any references of it in the logs.

The compiletest tests can then also be executed with:

    ./x.py test src/tools/compiletest --stage 0

cc #47606

5 years agoRollup merge of #56769 - dvdhrm:uefi-target, r=alexcrichton
Pietro Albini [Sat, 15 Dec 2018 09:17:39 +0000 (10:17 +0100)]
Rollup merge of #56769 - dvdhrm:uefi-target, r=alexcrichton

Add x86_64-unknown-uefi target

This adds a new rustc target-configuration called 'x86_64-unknown_uefi'.
Furthermore, it adds a UEFI base-configuration to be used with other
targets supported by UEFI (e.g., i386, armv7hl, aarch64, itanium, ...).

UEFI systems provide a very basic operating-system environment, meant
to unify how systems are booted. It is tailored for simplicity and fast
setup, as it is only meant to bootstrap other systems. For instance, it
copies most of the ABI from Microsoft Windows, rather than inventing
anything on its own. Furthermore, any complex CPU features are
disabled. Only one CPU is allowed to be up, no interrupts other than
the timer-interrupt are allowed, no process-separation is performed,
page-tables are identity-mapped, ...

Nevertheless, UEFI has an application model. Its main purpose is to
allow operating-system vendors to write small UEFI applications that
load their kernel and terminate the UEFI system. However, many other
UEFI applications have emerged in the past, including network-boot,
debug-consoles, and more.

This UEFI target allows to compile rust code natively as UEFI
applications. No standard library support is added, but libcore can be
used out-of-the-box if a panic-handler is provided. Furthermore,
liballoc works as well, if a `GlobalAlloc` handler is provided. Both
have been tested with this target-configuration.

Note that full libstd support is unlikely to happen. While UEFI does
have standardized interfaces for networking and alike, none of these
are mandatory and they are unlikely to be shipped in common consumer
firmwares. Furthermore, several features like process-separation are
not available (or only in very limited fashion). Those parts of libstd
would have to be masked.

5 years agoRollup merge of #56760 - estebank:dedup-bounds, r=oli-obk
Pietro Albini [Sat, 15 Dec 2018 09:17:38 +0000 (10:17 +0100)]
Rollup merge of #56760 - estebank:dedup-bounds, r=oli-obk

Deduplicate unsatisfied trait bounds

Fix #35677.

5 years agoRollup merge of #56758 - Manishearth:emoji-status-toolstate, r=kennytm
Pietro Albini [Sat, 15 Dec 2018 09:17:37 +0000 (10:17 +0100)]
Rollup merge of #56758 - Manishearth:emoji-status-toolstate, r=kennytm

Add short emoji status to toolstate updates

I get a lot of these emails and it's good to know which ones I should be paying closer attention to -- i.e. the ones where clippy breaks. This adds a short emoji status report to the first line of the commit message, which shows up in notifications directly

I haven't been able to test it, and the actual emoji are just suggestions.

r? @kennytm

cc @rust-lang/infra @rust-lang/devtools

5 years agoRollup merge of #56755 - estebank:impl-trait-lt-sugg, r=cramertj
Pietro Albini [Sat, 15 Dec 2018 09:17:36 +0000 (10:17 +0100)]
Rollup merge of #56755 - estebank:impl-trait-lt-sugg, r=cramertj

Account for `impl Trait` when suggesting lifetime

Fix https://github.com/rust-lang/rust/issues/56745

5 years agoRollup merge of #56751 - mbrubeck:hash, r=dtolnay
Pietro Albini [Sat, 15 Dec 2018 09:17:35 +0000 (10:17 +0100)]
Rollup merge of #56751 - mbrubeck:hash, r=dtolnay

Allow ptr::hash to accept fat pointers

Fat pointers implement Hash since #45483.  This is a follow-up to #56250.

5 years agoRollup merge of #56747 - ljedrz:remove_box_from_target, r=zackmdavis
Pietro Albini [Sat, 15 Dec 2018 09:17:33 +0000 (10:17 +0100)]
Rollup merge of #56747 - ljedrz:remove_box_from_target, r=zackmdavis

target: remove Box returned by get_targets

5 years agoRollup merge of #56746 - pnkfelix:issue-56537-add-test-of-closure-using-region-from...
Pietro Albini [Sat, 15 Dec 2018 09:17:32 +0000 (10:17 +0100)]
Rollup merge of #56746 - pnkfelix:issue-56537-add-test-of-closure-using-region-from-containing-fn, r=nikomatsakis

Add test of current behavior (infer free region within closure body)

This behavior was previously not encoded in our test suite.

it is pretty important that we test this behavior. In particular, in #56537  I had proposed expanding the lifetime elision rules so that they would apply to some of the cases encoded in this test, which would cause them to start failing to compile successfully (because the lifetime attached to the return type would start being treated as connected to the lifetime on the input parameter to the lambda expression, which is explicitly *not* what the code wants in this particular case).

In other words, I am trying to ensure that anyone who tries such experiments with lifetime elision in the future quickly finds out why we don't support lifetime elision on lambda expressions (at least not in the naive manner described on #56537).

5 years agoRollup merge of #56738 - turboladen:fix-private_no_mangle_fns-message, r=zackmdavis
Pietro Albini [Sat, 15 Dec 2018 09:17:31 +0000 (10:17 +0100)]
Rollup merge of #56738 - turboladen:fix-private_no_mangle_fns-message, r=zackmdavis

Fix private_no_mangle_fns message grammar

Simply changes "an warning" to "a warning" in the `private_no_mangle_fns` warning. I started getting this in some code after upgrading to 1.31.0.

5 years agoRollup merge of #56731 - GuillaumeGomez:ffi-doc-urls, r=Centril
Pietro Albini [Sat, 15 Dec 2018 09:17:30 +0000 (10:17 +0100)]
Rollup merge of #56731 - GuillaumeGomez:ffi-doc-urls, r=Centril

Add missing urls in ffi module docs

r? @QuietMisdreavus

5 years agoRollup merge of #56725 - piersfinlayson:master, r=alexcrichton
Pietro Albini [Sat, 15 Dec 2018 09:17:29 +0000 (10:17 +0100)]
Rollup merge of #56725 - piersfinlayson:master, r=alexcrichton

fix rust-lang/rust issue #50583

Rationale for the fix is in #50583.  I've verified that before the fix /musl-armhf/lib/libc.a is riddled with the illegal variant of vmov.f64 and after the fix the version built doesn't contain any of these illegal instructions.

I originally thought that the arm-linux-gnueabi version also needed fixing - to add a -mfloat-abi-soft but that's unnecessary as it's compiled with the gnueabi (not hf) compiler (I've some a quick check that the libc.a produced doesn't include VFP instructions).

r? @alexcrichton

5 years agoRollup merge of #56718 - RalfJung:use-libbacktrace-printing, r=alexcrichton
Pietro Albini [Sat, 15 Dec 2018 09:17:27 +0000 (10:17 +0100)]
Rollup merge of #56718 - RalfJung:use-libbacktrace-printing, r=alexcrichton

Use libbacktrace pretty-printing

r? @alexcrichton

5 years agoAuto merge of #56584 - davidtwco:issue-53990, r=nikomatsakis
bors [Sat, 15 Dec 2018 09:05:04 +0000 (09:05 +0000)]
Auto merge of #56584 - davidtwco:issue-53990, r=nikomatsakis

2018 edition - confusing error message when declaring unnamed parameters

Fixes #53990.

This PR adds a note providing context for the change to argument
names being required in the 2018 edition for trait methods and a
suggestion for the fix.

5 years agoAuto merge of #56005 - GuillaumeGomez:speedup-doc-render, r=QuietMisdreavus
bors [Sat, 15 Dec 2018 06:42:27 +0000 (06:42 +0000)]
Auto merge of #56005 - GuillaumeGomez:speedup-doc-render, r=QuietMisdreavus

Greatly improve rustdoc rendering speed issues

Fixes #55900.

So a few improvements here:

* we're switching to `DOMTokenList` API when available providing a replacement if it isn't (should only happen on safari and IE I think...)
* hide doc sections by default to allow the whole HTML generation to happen in the background to avoid triggering DOM redraw all the times (which killed the performances)

r? @QuietMisdreavus

5 years agoAuto merge of #56540 - oli-obk:less_const_hackery, r=varkor
bors [Sat, 15 Dec 2018 04:24:16 +0000 (04:24 +0000)]
Auto merge of #56540 - oli-obk:less_const_hackery, r=varkor

Don't depend on `Allocation` sizes for pattern length

And generally be more explicit about shortcomings of the implementation

cc @RalfJung

5 years agoAuto merge of #56825 - alexcrichton:demangle-mem, r=nikomatsakis
bors [Sat, 15 Dec 2018 00:50:19 +0000 (00:50 +0000)]
Auto merge of #56825 - alexcrichton:demangle-mem, r=nikomatsakis

std: Activate compiler_builtins `mem` feature for no_std targets

This was an accidental regression from #56092, but for `no_std` targets
being built and distributed we want to be sure to activate the
compiler-builtins `mem` feature which demangles important memory-related
intrinsics.

5 years agoImprove `match` MIR generation for ranges
Shotaro Yamada [Thu, 13 Dec 2018 13:35:54 +0000 (22:35 +0900)]
Improve `match` MIR generation for ranges

Makes testing a range rule out ranges/constant
covered by the range that is being tested

5 years agostd: Use `rustc_demangle` from crates.io
Alex Crichton [Fri, 14 Dec 2018 22:37:51 +0000 (14:37 -0800)]
std: Use `rustc_demangle` from crates.io

No more need to duplicate the demangling routine between crates.io and
the standard library, we can use the exact same one!

5 years agoProvide -isysroot with sdkroot for ios builds
Simonas Kazlauskas [Fri, 14 Dec 2018 22:47:06 +0000 (00:47 +0200)]
Provide -isysroot with sdkroot for ios builds

Necessary for the new XCode?

5 years agoCleanups
Shotaro Yamada [Thu, 13 Dec 2018 06:53:58 +0000 (15:53 +0900)]
Cleanups

5 years agoBootstrap: Add testsuite for compiletest tool
Philipp Hansch [Thu, 13 Dec 2018 20:57:23 +0000 (21:57 +0100)]
Bootstrap: Add testsuite for compiletest tool

The (currently) single unit test of the compiletest tool was never
executed on CI. At least I couldn't find any references of it in the
logs. This adds a test suite for compiletest so that our tester is
tested, too.

The compiletest tests can then also be executed with:

    ./x.py test src/tools/compiletest

5 years agoAuto merge of #56572 - kevgrasso:let_self_err_dev, r=estebank
bors [Fri, 14 Dec 2018 20:36:12 +0000 (20:36 +0000)]
Auto merge of #56572 - kevgrasso:let_self_err_dev, r=estebank

Contexually dependent error message for E0424 when value is assigned to "self"

This is an improvement for pull request #54495 referencing issue #54369. If the "self" keyword is assigned a value as though it were a valid identifier, it will now report:
```
let self = "self";
    ^^^^ `self` value is a keyword and may not be bound to variables or shadowed
```
instead of
```
let self = "self";
    ^^^^ `self` value is a keyword only available in methods with `self` parameter
```
If anyone has a better idea for what the error should be I'd be happy to modify it appropriately.

5 years agorustc: Add the `cmpxchg16b` target feature on x86/x86_64
Alex Crichton [Fri, 14 Dec 2018 19:40:27 +0000 (11:40 -0800)]
rustc: Add the `cmpxchg16b` target feature on x86/x86_64

This appears to be called `cx16` in LLVM and a few other locations, but
the Intel Intrinsic Guide doesn't have a name for this and the CPU
manual from Intel only mentions `cmpxchg16b`, so that's the name chosen
here.

5 years agorustc: Add an unstable `simd_select_bitmask` intrinsic
Alex Crichton [Thu, 13 Dec 2018 20:50:42 +0000 (12:50 -0800)]
rustc: Add an unstable `simd_select_bitmask` intrinsic

This is going to be required for binding a number of AVX-512 intrinsics
in the `stdsimd` repository, and this intrinsic is the same as
`simd_select` except that it takes a bitmask as the first argument
instead of a SIMD vector. This bitmask is then transmuted into a `<NN x
i8>` argument, depending on how many bits it is.

cc rust-lang-nursery/stdsimd#310

5 years agofix english
Ariel Ben-Yehuda [Fri, 14 Dec 2018 17:28:30 +0000 (19:28 +0200)]
fix english

5 years agouse tracking issue instead of original issue
Ariel Ben-Yehuda [Mon, 3 Dec 2018 23:00:21 +0000 (01:00 +0200)]
use tracking issue instead of original issue

5 years agofix stupid bug
Ariel Ben-Yehuda [Mon, 3 Dec 2018 22:37:06 +0000 (00:37 +0200)]
fix stupid bug

5 years agoadd coherence future-compat warnings for marker-only trait objects
Ariel Ben-Yehuda [Mon, 3 Dec 2018 21:27:25 +0000 (23:27 +0200)]
add coherence future-compat warnings for marker-only trait objects

The future-compat warnings break code that assumes that `dyn Send + Sync !=
dyn Sync + Send`, and are the first step in making them equal. cc #33140.

It should be possible to revert this commit when we're done with the
warnings.