Mazdak Farrokhzad
a5e869eb62
Rollup merge of #58387 - alexreg:fix-trait-alias-2, r=centril
...
Disallow `auto` trait alias syntax
See https://github.com/rust-lang/rust/issues/41517#issuecomment-462567679 .
r? @Centril
CC @topecongiro @nikomatsakis
2019-02-13 04:37:07 +01:00
Mazdak Farrokhzad
5aa260a4b5
Rollup merge of #58289 - haraldh:master, r=sfackler
...
impl iter() for dyn Error
Examples:
```rust
let next_error_type_a = err
.iter()
.filter_map(Error::downcast_ref::<ErrorTypeA>)
.next();
```
```rust
let source_root_error = err.iter().last();
```
Credit for the ErrorIter goes to reddit user /u/tdiekmann (Tim Diekmann)
https://www.reddit.com/r/rust/comments/aj3lpg/is_an_iterator_impl_over_errorsource_possible/
2019-02-13 04:37:05 +01:00
Mazdak Farrokhzad
0bc8f6f3f4
Rollup merge of #58273 - taiki-e:rename-dependency, r=matthewjasper
...
Rename rustc_errors dependency in rust 2018 crates
I think this is a better solution than `use rustc_errors as errors` in `lib.rs` and `use crate::errors` in modules.
Related: rust-lang/cargo#5653
cc #58099
r? @Centril
2019-02-13 04:37:04 +01:00
Mazdak Farrokhzad
ecb6503169
Rollup merge of #58200 - RalfJung:str-as-mut-ptr, r=SimonSapin
...
fix str mutating through a ptr derived from &self
Found by Miri: In `get_unchecked_mut` (also used by the checked variants internally) uses `str::as_ptr` to create a mutable reference, but `as_ptr` takes `&self`. This means the mutable references we return here got created from a shared reference, which violates the shared-references-are-read-only discipline!
For this by using a newly introduced `as_mut_ptr` instead.
2019-02-13 04:37:03 +01:00
Mazdak Farrokhzad
856e41142c
Rollup merge of #58166 - euclio:deprecation-shorthand, r=petrochenkov
...
allow shorthand syntax for deprecation reason
Fixes #48271 .
Created based on discussion in #56896 .
2019-02-13 04:37:02 +01:00
Mazdak Farrokhzad
81434cbf84
Rollup merge of #58137 - ljedrz:cleanup_node_id_to_type, r=estebank
...
Cleanup: rename node_id_to_type(_opt)
Renames `node_id_to_type(_opt)` to `hir_id_to_type(_opt)`; this makes it clear we are dealing with HIR nodes and their IDs here.
In addition, a drive-by commit removing `ty::item_path::hir_path_str` (as requested by @eddyb).
2019-02-13 04:37:00 +01:00
Mazdak Farrokhzad
1c1d2e44c5
Rollup merge of #58057 - michaelwoerister:stabilize-xlto, r=alexcrichton
...
Stabilize linker-plugin based LTO (aka cross-language LTO)
This PR stabilizes [linker plugin based LTO](https://github.com/rust-lang/rust/issues/49879 ), also known as "cross-language LTO" because it allows for doing inlining and other optimizations across language boundaries in mixed Rust/C/C++ projects.
As described in the tracking issue, it works by making `rustc` emit LLVM bitcode instead of machine code, the same as `clang` does. A linker with the proper plugin (like LLD) can then run (Thin)LTO across all modules.
The feature has been implemented over a number of pull requests and there are various [codegen](https://github.com/rust-lang/rust/blob/master/src/test/codegen/no-dllimport-w-cross-lang-lto.rs ) and [run](https://github.com/rust-lang/rust/tree/master/src/test/run-make-fulldeps/cross-lang-lto-clang )-[make](https://github.com/rust-lang/rust/tree/master/src/test/run-make-fulldeps/cross-lang-lto-upstream-rlibs ) [tests](https://github.com/rust-lang/rust/tree/master/src/test/run-make-fulldeps/cross-lang-lto ) that make sure that it keeps working.
It also works for building big projects like [Firefox](https://treeherder.mozilla.org/#/jobs?repo=try&revision=2ce2d5ddcea6fbff790503eac406954e469b2f5d ).
The PR makes the feature available under the `-C linker-plugin-lto` flag. As discussed in the tracking issue it is not cross-language specific and also not LLD specific. `-C linker-plugin-lto` is descriptive of what it does. If someone has a better name, let me know `:)`
2019-02-13 04:36:59 +01:00
Mazdak Farrokhzad
0ab1057a56
Rollup merge of #58034 - faern:stabilize-time-checked-add, r=alexcrichton
...
Stabilize the time_checked_add feature
Closes #55940
Stabilizes `checked_add` and `checked_sub` on `Instant` and `SystemTime`.
2019-02-13 04:36:58 +01:00
Mazdak Farrokhzad
0ed894afae
Rollup merge of #57815 - dotdash:asserts, r=sfackler
...
Speed up the fast path for assert_eq! and assert_ne!
Currently, the panic!() calls directly borrow the value bindings. This
causes those bindings to always be initialized, i.e. they're initialized
even before the values are even compared. This causes noticeable
overhead in what should be a really cheap operation.
By performing a reborrow of the value in the call to panic!(), we allow
LLVM to optimize that code, so that the extra borrow only happens in the
error case.
We could achieve the same result by dereferencing the values passed to
panic!(), as the format machinery borrows them anyway, but this causes
assertions to fail to compile if one of the values is unsized, i.e. it
would be a breaking change.
2019-02-13 04:36:56 +01:00
Mazdak Farrokhzad
734cc3e79e
Rollup merge of #57693 - king6cong:word, r=Centril
...
Doc rewording
None
2019-02-13 04:36:55 +01:00
bors
0f949c2fcc
Auto merge of #58051 - SimonSapin:str_escape, r=alexcrichton
...
Stabilize str::escape_* methods with new return types…
… that implement `Display` and `Iterator<Item=char>`, as proposed in FCP: https://github.com/rust-lang/rust/issues/27791#issuecomment-376864727
2019-02-12 23:30:16 +00:00
bors
b244f61b77
Auto merge of #58341 - alexreg:cosmetic-2-doc-comments, r=steveklabnik
...
Cosmetic improvements to doc comments
This has been factored out from https://github.com/rust-lang/rust/pull/58036 to only include changes to documentation comments (throughout the rustc codebase).
r? @steveklabnik
Once you're happy with this, maybe we could get it through with r=1, so it doesn't constantly get invalidated? (I'm not sure this will be an issue, but just in case...) Anyway, thanks for your advice so far!
2019-02-12 19:09:24 +00:00
Michael Woerister
3a9d171b0a
Fix some rebasing fallout regarding xLTO.
2019-02-12 17:17:05 +01:00
Taiki Endo
c08b5ca4ad
Fix rebase fail
2019-02-13 00:31:53 +09:00
Taiki Endo
c360ba285c
Cleanup imports
2019-02-13 00:31:51 +09:00
Taiki Endo
3216c7656a
Rename rustc_errors dependency in rust 2018 crates
2019-02-13 00:28:52 +09:00
Michael Woerister
3733b3267d
Add documentation about -Clinker-plugin-lto to rustc book.
2019-02-12 15:42:04 +01:00
Alexander Regueiro
370f1f26ce
Added tests.
2019-02-12 14:33:58 +00:00
Michael Woerister
04f425d2c3
Stabilize linker-plugin based LTO.
2019-02-12 15:10:29 +01:00
bors
c84e797642
Auto merge of #58098 - oli-obk:maybe_allow_internal_unstable, r=petrochenkov
...
Require a list of features in `#[allow_internal_unstable]`
The blanket-permission slip is not great and will likely give us trouble some point down the road.
2019-02-12 12:10:10 +00:00
Simon Sapin
eb158f9350
Add doctests for str::escape_*
2019-02-12 09:55:30 +01:00
Simon Sapin
114593d638
Make the prema-unstable char::escape_debug_ext method crate-private
2019-02-12 09:55:30 +01:00
Simon Sapin
92cce78d06
Move str::escape_* to libcore
2019-02-12 09:55:30 +01:00
Simon Sapin
55216f82a6
Stabilize str::escape_* methods
...
FCP: https://github.com/rust-lang/rust/issues/27791#issuecomment-376864727
2019-02-12 09:55:29 +01:00
Simon Sapin
7a077804a3
New return types for str::escape_* that impl Display and Iterator<char>
...
As FCP’ed in the tracking issue: https://github.com/rust-lang/rust/issues/27791#issuecomment-376864727
2019-02-12 09:55:20 +01:00
Simon Sapin
92dcae4742
Add internal impl_fn_for_zst macro for "named closure types"
2019-02-12 09:55:20 +01:00
king6cong
b284c8d608
Doc rewording
2019-02-12 16:45:19 +08:00
bors
a54b5c7a64
Auto merge of #57388 - euclio:runmake-explicit-ignore, r=kennytm
...
use ignore directives for run-make tests
This makes the tests easier to read, and makes it possible to tell which
tests aren't being run on the host platform.
Fixes #56704 .
2019-02-12 08:19:35 +00:00
bors
75f9159009
Auto merge of #58389 - Centril:rollup, r=Centril
...
Rollup of 11 pull requests
Successful merges:
- #58105 (libarena => 2018)
- #58111 (libterm => 2018)
- #58287 (rustc-std-workspace-core => 2018)
- #58288 (rustc-workspace-hack => 2018)
- #58300 (librustc_typeck => 2018)
- #58313 (Use `?` in librustc macros)
- #58318 (libserialize => 2018)
- #58322 (librustc_codegen_ssa => 2018)
- #58342 (Revert removed #![feature(nll)])
- #58367 (Remove two dead functions.)
- #58382 (docs: remove "experimental" wording from std::os::unix)
Failed merges:
r? @ghost
2019-02-12 05:50:26 +00:00
Mazdak Farrokhzad
33d2c9f533
Rollup merge of #58382 - euclio:unix-ext, r=dtolnay
...
docs: remove "experimental" wording from std::os::unix
2019-02-12 04:42:29 +01:00
Mazdak Farrokhzad
5dc571270e
Rollup merge of #58367 - nnethercote:rm-two-dead-funcs, r=alexcrichton
...
Remove two dead functions.
2019-02-12 04:42:28 +01:00
Mazdak Farrokhzad
f04d0852f5
Rollup merge of #58342 - taiki-e:nll, r=matthewjasper
...
Revert removed #![feature(nll)]
In PRs related to #58099 , `#![feature(nll)]` was removed from several crates.
This PR reverts it.
Related: https://github.com/rust-lang/rust/pull/58265#discussion_r255021244
cc @Centril
r? @matthewjasper
2019-02-12 04:42:26 +01:00
Mazdak Farrokhzad
4f2d0cfe3b
Rollup merge of #58322 - taiki-e:librustc_codegen_ssa-2018, r=petrochenkov
...
librustc_codegen_ssa => 2018
Transitions `librustc_codegen_ssa` to Rust 2018; cc #58099
r? @petrochenkov
2019-02-12 04:42:25 +01:00
Mazdak Farrokhzad
308c07bc3b
Rollup merge of #58318 - taiki-e:libserialize-2018, r=Centril
...
libserialize => 2018
Transitions `libserialize` to Rust 2018; cc #58099
This includes a commit from #58252 (thanks @h-michael!)
r? @Centril
2019-02-12 04:42:24 +01:00
Mazdak Farrokhzad
d9434531db
Rollup merge of #58313 - matthewjasper:use-question-in-macros, r=oli-obk
...
Use `?` in librustc macros
2019-02-12 04:42:23 +01:00
Mazdak Farrokhzad
a84c93324c
Rollup merge of #58300 - taiki-e:librustc_typeck-2018, r=petrochenkov
...
librustc_typeck => 2018
Transitions `librustc_typeck` to Rust 2018; cc #58099
TODO: elided_lifetimes_in_paths
r? @Centril
2019-02-12 04:42:21 +01:00
Mazdak Farrokhzad
b8fe6f9d43
Rollup merge of #58288 - taiki-e:rustc-workspace-hack-2018, r=alexcrichton
...
rustc-workspace-hack => 2018
Transitions `rustc-workspace-hack` to Rust 2018; cc #58099
r? @alexcrichton
2019-02-12 04:42:20 +01:00
Mazdak Farrokhzad
95ffa78784
Rollup merge of #58287 - taiki-e:rustc-std-workspace-core-2018, r=alexcrichton
...
rustc-std-workspace-core => 2018
Transitions `rustc-std-workspace-core` to Rust 2018; cc #58099
r? @alexcrichton
2019-02-12 04:42:19 +01:00
Mazdak Farrokhzad
3ca1b70dea
Rollup merge of #58111 - Centril:libterm-2018, r=oli-obk
...
libterm => 2018
Transitions `libterm` to Rust 2018; cc #58099
r? @oli-obk
2019-02-12 04:42:18 +01:00
Mazdak Farrokhzad
3dbb31e3d6
Rollup merge of #58105 - Centril:libarena-trans-2018, r=oli-obk
...
libarena => 2018
Transitions `libarena` to Rust 2018; cc https://github.com/rust-lang/rust/issues/58099
r? @oli-obk
2019-02-12 04:42:16 +01:00
bors
ba2853b6d3
Auto merge of #58246 - pmccarter:master, r=oli-obk
...
Make `saturating_add` and `saturating_sub` `const` functions
Fixes #58030
2019-02-12 03:20:16 +00:00
Alexander Regueiro
aafbf742c2
Disallow auto
trait alias syntax.
2019-02-12 01:50:33 +00:00
bors
16ca0b9f63
Auto merge of #58180 - davidtwco:issue-58053, r=estebank
...
Fix span for closure return type when annotated.
Fixes #58053 .
This PR adjusts the span used to label closure return types so that
if the user specifies the return type, i.e. `|_| -> X {}` instead of
`|_| {}`, we correctly highlight all of it and not just the last
character.
r? @pnkfelix
2019-02-12 00:44:24 +00:00
Mazdak Farrokhzad
0ce5129d05
libterm => 2018
2019-02-12 00:08:08 +01:00
Mazdak Farrokhzad
f996e2b6dc
libarena => 2018
2019-02-11 23:49:48 +01:00
Andy Russell
f15d20c1f7
use ignore directives for run-make tests
...
This makes the tests easier to read, and makes it possible to tell which
tests aren't being run on the host platform.
Fixes #56704 .
2019-02-11 17:02:06 -05:00
Andy Russell
34052a19a2
remove "experimental" wording from std::os::unix
2019-02-11 15:36:45 -05:00
Patrick McCarter
b04d8aa774
rename variable and add test directive for #58030
2019-02-11 11:20:50 -05:00
Oliver Scherer
bbe524d7c1
Parallel rustc needs synchronizing smart pointer cloning
2019-02-11 15:09:05 +01:00
Oliver Scherer
b0cf52f6a5
Allow platform specific tests
2019-02-11 15:08:17 +01:00