]> git.lizzy.rs Git - rust.git/log
rust.git
5 years agoClarify `rotate_{left,right}` docs
Tobias Bucher [Tue, 26 Feb 2019 15:10:28 +0000 (16:10 +0100)]
Clarify `rotate_{left,right}` docs

I wondered what the `<<!` operator is although the exclamation mark was
only the end of the sentence.

5 years agoAuto merge of #58561 - ljedrz:HirIdify_some_nodes, r=Zoxc
bors [Tue, 26 Feb 2019 06:13:27 +0000 (06:13 +0000)]
Auto merge of #58561 - ljedrz:HirIdify_some_nodes, r=Zoxc

Remove NodeId from some HIR nodes

The next iteration of https://github.com/rust-lang/rust/pull/57578.

Removes `NodeId` from:

- [x] `Lifetime`
- [x] `Ty`
- [x] `GenericParam`
- [x] `WhereClause`
- [x] `WhereEqPredicate`
- [x] `MacroDef`
- [x] `Block`
- [x] `Expr`

r? @Zoxc

5 years agoAuto merge of #58357 - sfackler:vectored-io, r=alexcrichton
bors [Tue, 26 Feb 2019 02:48:13 +0000 (02:48 +0000)]
Auto merge of #58357 - sfackler:vectored-io, r=alexcrichton

Add vectored read and write support

This functionality has lived for a while in the tokio ecosystem, where
it can improve performance by minimizing copies.

r? @alexcrichton

5 years agoAuto merge of #57367 - petrochenkov:unrestab, r=Centril
bors [Mon, 25 Feb 2019 23:23:09 +0000 (23:23 +0000)]
Auto merge of #57367 - petrochenkov:unrestab, r=Centril

Stabilize `unrestricted_attribute_tokens`

In accordance with a plan described in https://internals.rust-lang.org/t/unrestricted-attribute-tokens-feature-status/8561/3.

Delimited non-macro non-builtin attributes now support the same syntax as macro attributes:
```
PATH
PATH `(` TOKEN_STREAM `)`
PATH `[` TOKEN_STREAM `]`
PATH `{` TOKEN_STREAM `}`
```
Such attributes mostly serve as inert proc macro helpers or tool attributes.
To some extent these attributes are de-facto stable due to a hole in feature gate checking (feature gating is done too late - after macro expansion.)
So if macro *removes* such helper attributes during expansion (and it must remove them, unless it's a derive macro), then the code will work on stable.

Key-value non-macro non-builtin attributes are now restricted to bare minimum required to support what we support on stable - unsuffixed literals (https://github.com/rust-lang/rust/issues/34981).
```
PATH `=` LITERAL
```
(Key-value macro attributes are not supported at all right now.)
Crater run in https://github.com/rust-lang/rust/pull/57321 found no regressions for this change.
There are multiple possible ways to extend key-value attributes (https://github.com/rust-lang/rust/pull/57321#issuecomment-451574065), but I'd expect an RFC for that and it's not a pressing enough issue to block stabilization of delimited attributes.

Built-in attributes are still restricted to the "classic" meta-item syntax, nothing changes here.
https://github.com/rust-lang/rust/pull/57321 goes further and adds some additional restrictions (more consistent input checking) to built-in attributes.

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

5 years agoAuto merge of #58302 - SimonSapin:tryfrom, r=alexcrichton
bors [Mon, 25 Feb 2019 20:24:10 +0000 (20:24 +0000)]
Auto merge of #58302 - SimonSapin:tryfrom, r=alexcrichton

Stabilize TryFrom and TryInto with a convert::Infallible empty enum

This is the plan proposed in https://github.com/rust-lang/rust/issues/33417#issuecomment-423073898

5 years agoStabilize `unrestricted_attribute_tokens`
Vadim Petrochenkov [Mon, 25 Feb 2019 19:40:44 +0000 (22:40 +0300)]
Stabilize `unrestricted_attribute_tokens`

5 years agoRestrict value in key-value attributes to literals
Vadim Petrochenkov [Thu, 3 Jan 2019 23:57:11 +0000 (02:57 +0300)]
Restrict value in key-value attributes to literals

5 years agoAuto merge of #58649 - pnkfelix:issue-57464-avoid-ice-when-region-sneaks-into-impl...
bors [Mon, 25 Feb 2019 14:48:29 +0000 (14:48 +0000)]
Auto merge of #58649 - pnkfelix:issue-57464-avoid-ice-when-region-sneaks-into-impl-trait, r=pnkfelix

avoid ICE when region sneaks into impl trait

Addresses non-NLL instances of #57464

5 years agoAuto merge of #58728 - Centril:rollup, r=Centril
bors [Mon, 25 Feb 2019 11:57:00 +0000 (11:57 +0000)]
Auto merge of #58728 - Centril:rollup, r=Centril

Rollup of 10 pull requests

Successful merges:

 - #55632 (Deny the `overflowing_literals` lint for all editions)
 - #58687 (Reduce Miri Code Repetition like `(n << amt) >> amt`)
 - #58690 (Reduce a Code Repetition like `(n << amt) >> amt`)
 - #58718 (Apply docs convention: Replace # Unsafety with # Safety in docs)
 - #58719 (librustc_codegen_llvm: #![deny(elided_lifetimes_in_paths)])
 - #58720 (librustc_codegen_ssa: #![deny(elided_lifetimes_in_paths)])
 - #58722 (librustc_typeck: deny(elided_lifetimes_in_paths))
 - #58723 (librustc: deny(elided_lifetimes_in_paths))
 - #58725 (Test that binop subtyping in rustc_typeck fixes #27949)
 - #58727 (bootstrap: deny(rust_2018_idioms))

Failed merges:

r? @ghost

5 years agoRollup merge of #58727 - taiki-e:deny-rust_2018_idioms-bootstrap, r=Centril
Mazdak Farrokhzad [Mon, 25 Feb 2019 10:42:31 +0000 (11:42 +0100)]
Rollup merge of #58727 - taiki-e:deny-rust_2018_idioms-bootstrap, r=Centril

bootstrap: deny(rust_2018_idioms)

As part of the Rust 2018 transition, apply `#![deny(rust_2018_idioms)]` to `bootstrap`.

r? @Centril

5 years agoRollup merge of #58725 - jamwt:fix-27949, r=Centril
Mazdak Farrokhzad [Mon, 25 Feb 2019 10:42:30 +0000 (11:42 +0100)]
Rollup merge of #58725 - jamwt:fix-27949, r=Centril

Test that binop subtyping in rustc_typeck fixes #27949

5 years agoRollup merge of #58723 - Centril:deny-elided_lifetimes_in_paths-librustc, r=oli-obk
Mazdak Farrokhzad [Mon, 25 Feb 2019 10:42:28 +0000 (11:42 +0100)]
Rollup merge of #58723 - Centril:deny-elided_lifetimes_in_paths-librustc, r=oli-obk

librustc: deny(elided_lifetimes_in_paths)

As part of the Rust 2018 transition, remove `#![allow(elided_lifetimes_in_paths)]` from `librustc`.

r? @oli-obk

5 years agoRollup merge of #58722 - Centril:deny-elided_lifetimes_in_paths-librustc_typeck,...
Mazdak Farrokhzad [Mon, 25 Feb 2019 10:42:27 +0000 (11:42 +0100)]
Rollup merge of #58722 - Centril:deny-elided_lifetimes_in_paths-librustc_typeck, r=oli-obk

librustc_typeck: deny(elided_lifetimes_in_paths)

As part of the Rust 2018 transition, remove `#![allow(elided_lifetimes_in_paths)]` from `librustc_typeck`.

r? @oli-obk

5 years agoRollup merge of #58720 - Centril:deny-elided_lifetimes_in_paths-librustc_codegen_ssa...
Mazdak Farrokhzad [Mon, 25 Feb 2019 10:42:25 +0000 (11:42 +0100)]
Rollup merge of #58720 - Centril:deny-elided_lifetimes_in_paths-librustc_codegen_ssa, r=oli-obk

librustc_codegen_ssa: #![deny(elided_lifetimes_in_paths)]

As part of the Rust 2018 transition, remove `#![allow(elided_lifetimes_in_paths)]` from `librustc_codegen_ssa`.

r? @oli-obk

5 years agoRollup merge of #58719 - Centril:deny-elided_lifetimes_in_paths, r=oli-obk
Mazdak Farrokhzad [Mon, 25 Feb 2019 10:42:24 +0000 (11:42 +0100)]
Rollup merge of #58719 - Centril:deny-elided_lifetimes_in_paths, r=oli-obk

librustc_codegen_llvm: #![deny(elided_lifetimes_in_paths)]

As part of the Rust 2018 transition, remove `#![allow(elided_lifetimes_in_paths)]` from `librustc_codegen_llvm`.

r? @oli-obk

5 years agoRollup merge of #58718 - Centril:doc-convention-safety, r=RalfJung
Mazdak Farrokhzad [Mon, 25 Feb 2019 10:42:23 +0000 (11:42 +0100)]
Rollup merge of #58718 - Centril:doc-convention-safety, r=RalfJung

Apply docs convention: Replace # Unsafety with # Safety in docs

As used in RFC 1574: https://github.com/rust-lang/rfcs/blob/master/text/1574-more-api-documentation-conventions.md#using-markdown

"Safety" is used many times more than "Unsafety" is within existing docs.

@bors rollup

r? @RalfJung

5 years agoRollup merge of #58690 - kenta7777:reduce-code-repetition-miri-related, r=oli-obk
Mazdak Farrokhzad [Mon, 25 Feb 2019 10:42:22 +0000 (11:42 +0100)]
Rollup merge of #58690 - kenta7777:reduce-code-repetition-miri-related, r=oli-obk

Reduce a Code Repetition like `(n << amt) >> amt`

Fixes a part of [#49937](https://github.com/rust-lang/rust/issues/49937).

5 years agoRollup merge of #58687 - kenta7777:reduce-miri-code-repetition, r=oli-obk
Mazdak Farrokhzad [Mon, 25 Feb 2019 10:42:20 +0000 (11:42 +0100)]
Rollup merge of #58687 - kenta7777:reduce-miri-code-repetition, r=oli-obk

Reduce Miri Code Repetition like `(n << amt) >> amt`

This Pull Request fixes a part of [#49937](https://github.com/rust-lang/rust/issues/49937).

5 years agoRollup merge of #55632 - ollie27:deny_overflowing_literals, r=Centril
Mazdak Farrokhzad [Mon, 25 Feb 2019 10:42:18 +0000 (11:42 +0100)]
Rollup merge of #55632 - ollie27:deny_overflowing_literals, r=Centril

Deny the `overflowing_literals` lint for all editions

The `overflowing_literals` was made deny by default for the 2018 edition by #54507, however I'm not aware of any reason it can't be made deny by default for the 2015 edition as well.

5 years agobootstrap: deny(rust_2018_idioms)
Taiki Endo [Mon, 25 Feb 2019 10:30:32 +0000 (19:30 +0900)]
bootstrap: deny(rust_2018_idioms)

5 years agoupdate clippy
ljedrz [Sun, 24 Feb 2019 18:47:40 +0000 (19:47 +0100)]
update clippy

5 years agoTest that binop subtyping in rustc_typeck fixes #27949
Jamie Turner [Mon, 25 Feb 2019 08:33:44 +0000 (00:33 -0800)]
Test that binop subtyping in rustc_typeck fixes #27949

5 years agolibrustc: deny(elided_lifetimes_in_paths)
Mazdak Farrokhzad [Mon, 25 Feb 2019 08:19:20 +0000 (09:19 +0100)]
librustc: deny(elided_lifetimes_in_paths)

5 years agolibrustc_typeck: deny(elided_lifetimes_in_paths)
Mazdak Farrokhzad [Mon, 25 Feb 2019 08:09:02 +0000 (09:09 +0100)]
librustc_typeck: deny(elided_lifetimes_in_paths)

5 years agolibrustc_codegen_ssa: deny(elided_lifetimes_in_paths)
Mazdak Farrokhzad [Mon, 25 Feb 2019 07:52:46 +0000 (08:52 +0100)]
librustc_codegen_ssa: deny(elided_lifetimes_in_paths)

5 years agolibrustc_codegen_llvm: deny(elided_lifetimes_in_paths)
Mazdak Farrokhzad [Mon, 25 Feb 2019 07:40:18 +0000 (08:40 +0100)]
librustc_codegen_llvm: deny(elided_lifetimes_in_paths)

5 years agoheading # Unsafety => # Safety in stdlib docs.
Mazdak Farrokhzad [Mon, 25 Feb 2019 07:01:35 +0000 (08:01 +0100)]
heading # Unsafety => # Safety in stdlib docs.

5 years agoAuto merge of #57609 - matthewjasper:more-restrictive-match, r=pnkfelix
bors [Mon, 25 Feb 2019 06:27:35 +0000 (06:27 +0000)]
Auto merge of #57609 - matthewjasper:more-restrictive-match, r=pnkfelix

Use normal mutable borrows in matches

`ref mut` borrows are currently two-phase with NLL enabled. This changes them to be proper mutable borrows. To accommodate this, first the position of fake borrows is changed:

```text
[ 1. Pre-match ]
       |
[ (old create fake borrows) ]
[ 2. Discriminant testing -- check discriminants ] <-+
       |                                             |
       | (once a specific arm is chosen)             |
       |                                             |
[ (old read fake borrows) ]                          |
[ 3. Create "guard bindings" for arm ]               |
[ (create fake borrows) ]                            |
       |                                             |
[ 4. Execute guard code ]                            |
[ (read fake borrows) ] --(guard is false)-----------+
       |
       | (guard results in true)
       |
[ 5. Create real bindings and execute arm ]
       |
[ Exit match ]
```

The following additional changes are made to accommodate `ref mut` bindings:

* We no longer create fake `Shared` borrows. These borrows are no longer needed for soundness, just to avoid some arguably strange cases.
* `Shallow` borrows no longer conflict with existing borrows, avoiding conflicting access between the guard borrow access and the `ref mut` borrow.

There is some further clean up done in this PR:

* Avoid the "later used here" note for Shallow borrows (since it's not relevant with the message provided)
* Make any use of a two-phase borrow activate it.
* Simplify the cleanup_post_borrowck passes into a single pass.

cc #56254

r? @nikomatsakis

5 years agoAuto merge of #58714 - Centril:rollup, r=Centril
bors [Mon, 25 Feb 2019 03:48:12 +0000 (03:48 +0000)]
Auto merge of #58714 - Centril:rollup, r=Centril

Rollup of 5 pull requests

Successful merges:

 - #58370 (Relax some Hash bounds on HashMap<K, V, S> and HashSet<T, S>)
 - #58421 (Relax some Ord bounds on BinaryHeap<T>)
 - #58686 (replace deprecated rustfmt_skip with rustfmt::skip)
 - #58697 (Use ? in some macros)
 - #58704 (Remove some unnecessary 'extern crate')

Failed merges:

r? @ghost

5 years agoFix redox
Steven Fackler [Mon, 25 Feb 2019 02:48:44 +0000 (18:48 -0800)]
Fix redox

5 years agoRollup merge of #58704 - taiki-e:extern-crate, r=Centril
Mazdak Farrokhzad [Mon, 25 Feb 2019 02:18:06 +0000 (03:18 +0100)]
Rollup merge of #58704 - taiki-e:extern-crate, r=Centril

Remove some unnecessary 'extern crate'

cc #58099

r? @Centril

5 years agoRollup merge of #58697 - taiki-e:question-in-macros, r=Centril
Mazdak Farrokhzad [Mon, 25 Feb 2019 02:18:04 +0000 (03:18 +0100)]
Rollup merge of #58697 - taiki-e:question-in-macros, r=Centril

Use ? in some macros

5 years agoRollup merge of #58686 - hellow554:rustfmt_depr, r=cramertj
Mazdak Farrokhzad [Mon, 25 Feb 2019 02:18:03 +0000 (03:18 +0100)]
Rollup merge of #58686 - hellow554:rustfmt_depr, r=cramertj

replace deprecated rustfmt_skip with rustfmt::skip

5 years agoRollup merge of #58421 - nox:relax-bounds-binary-heap, r=dtolnay
Mazdak Farrokhzad [Mon, 25 Feb 2019 02:18:01 +0000 (03:18 +0100)]
Rollup merge of #58421 - nox:relax-bounds-binary-heap, r=dtolnay

Relax some Ord bounds on BinaryHeap<T>

Notably, iterators don't require any trait bounds to be iterated.

5 years agoRollup merge of #58370 - nox:relax-bounds, r=dtolnay
Mazdak Farrokhzad [Mon, 25 Feb 2019 02:17:58 +0000 (03:17 +0100)]
Rollup merge of #58370 - nox:relax-bounds, r=dtolnay

Relax some Hash bounds on HashMap<K, V, S> and HashSet<T, S>

Notably, hash iterators don't require any trait bounds to be iterated.

5 years agoFix sgx
Steven Fackler [Sun, 24 Feb 2019 18:49:55 +0000 (10:49 -0800)]
Fix sgx

5 years agoAuto merge of #58706 - matthewjasper:update-miri, r=RalfJung
bors [Sun, 24 Feb 2019 21:40:10 +0000 (21:40 +0000)]
Auto merge of #58706 - matthewjasper:update-miri, r=RalfJung

update miri

cc #57609

r? @RalfJung

5 years agoupdate miri
Matthew Jasper [Sun, 24 Feb 2019 16:45:14 +0000 (16:45 +0000)]
update miri

5 years agohir: remove NodeId from Expr
ljedrz [Sun, 24 Feb 2019 08:33:17 +0000 (09:33 +0100)]
hir: remove NodeId from Expr

5 years agohir: remove NodeId from Block
ljedrz [Fri, 22 Feb 2019 14:48:14 +0000 (15:48 +0100)]
hir: remove NodeId from Block

5 years agoFix cloudabi
Steven Fackler [Sun, 24 Feb 2019 15:42:59 +0000 (07:42 -0800)]
Fix cloudabi

5 years agoRemove some unnecessary 'extern crate'
Taiki Endo [Sun, 24 Feb 2019 15:40:34 +0000 (00:40 +0900)]
Remove some unnecessary 'extern crate'

5 years agoAuto merge of #58315 - gnzlbg:returns_twice, r=alexcrichton
bors [Sun, 24 Feb 2019 14:15:55 +0000 (14:15 +0000)]
Auto merge of #58315 - gnzlbg:returns_twice, r=alexcrichton

Implement unstable ffi_return_twice attribute

This PR implements [RFC2633](https://github.com/rust-lang/rfcs/pull/2633)

r? @eddyb

5 years agoUse ? in some macros
Taiki Endo [Sun, 24 Feb 2019 12:59:44 +0000 (21:59 +0900)]
Use ? in some macros

5 years agoAuto merge of #58691 - Centril:rollup, r=Centril
bors [Sun, 24 Feb 2019 06:59:13 +0000 (06:59 +0000)]
Auto merge of #58691 - Centril:rollup, r=Centril

Rollup of 6 pull requests

Successful merges:

 - #57364 (Improve parsing diagnostic for negative supertrait bounds)
 - #58183 (Clarify guarantees for `Box` allocation)
 - #58442 (Simplify the unix `Weak` functionality)
 - #58454 (Refactor Windows stdio and remove stdin double buffering )
 - #58511 (Const to op simplification)
 - #58642 (rustdoc: support methods on primitives in intra-doc links)

Failed merges:

r? @ghost

5 years agohir: remove NodeId from MacroDef
ljedrz [Mon, 18 Feb 2019 14:55:00 +0000 (15:55 +0100)]
hir: remove NodeId from MacroDef

5 years agodoc: partially HirIdify visit_ast
ljedrz [Mon, 18 Feb 2019 14:54:14 +0000 (15:54 +0100)]
doc: partially HirIdify visit_ast

5 years agomiddle: partially HirIdify stability
ljedrz [Mon, 18 Feb 2019 14:35:20 +0000 (15:35 +0100)]
middle: partially HirIdify stability

5 years agohir: remove NodeId from WhereEqPredicate
ljedrz [Mon, 18 Feb 2019 14:06:13 +0000 (15:06 +0100)]
hir: remove NodeId from WhereEqPredicate

5 years agohir: remove NodeId from WhereClause
ljedrz [Mon, 18 Feb 2019 14:00:59 +0000 (15:00 +0100)]
hir: remove NodeId from WhereClause

5 years agohir: remove NodeId from GenericParam
ljedrz [Mon, 18 Feb 2019 13:53:25 +0000 (14:53 +0100)]
hir: remove NodeId from GenericParam

5 years agoprivacy: HirIdify ObsoleteVisiblePrivateTypesVisitor
ljedrz [Mon, 18 Feb 2019 11:22:41 +0000 (12:22 +0100)]
privacy: HirIdify ObsoleteVisiblePrivateTypesVisitor

5 years agopasses: HirIdify Id
ljedrz [Mon, 18 Feb 2019 11:11:42 +0000 (12:11 +0100)]
passes: HirIdify Id

5 years agohir: remove NodeId from Lifetime and Ty
ljedrz [Mon, 18 Feb 2019 09:59:17 +0000 (10:59 +0100)]
hir: remove NodeId from Lifetime and Ty

5 years agohir: impl Display for HirId
ljedrz [Mon, 18 Feb 2019 09:41:10 +0000 (10:41 +0100)]
hir: impl Display for HirId

5 years agoRollup merge of #58642 - tspiteri:intra-rustdoc-prim-method, r=GuillaumeGomez
Mazdak Farrokhzad [Sun, 24 Feb 2019 04:56:02 +0000 (05:56 +0100)]
Rollup merge of #58642 - tspiteri:intra-rustdoc-prim-method, r=GuillaumeGomez

rustdoc: support methods on primitives in intra-doc links

Fixes #58598.

5 years agoRollup merge of #58511 - oli-obk:const_to_op, r=RalfJung
Mazdak Farrokhzad [Sun, 24 Feb 2019 04:56:01 +0000 (05:56 +0100)]
Rollup merge of #58511 - oli-obk:const_to_op, r=RalfJung

Const to op simplification

r? @RalfJung

alternative to https://github.com/rust-lang/rust/pull/58486

5 years agoRollup merge of #58454 - pitdicker:windows_stdio, r=alexcrichton
Mazdak Farrokhzad [Sun, 24 Feb 2019 04:56:00 +0000 (05:56 +0100)]
Rollup merge of #58454 - pitdicker:windows_stdio, r=alexcrichton

Refactor Windows stdio and remove stdin double buffering

I was looking for something nice and small to work on, tried to tackle a few FIXME's in Windows stdio, and things grew from there.

This part of the standard library contains some tricky code, and has changed over the years to handle more corner cases. It could use some refactoring and extra comments.

Changes/fixes:
- Made `StderrRaw` `pub(crate)`, to remove the `Write` implementations on `sys::Stderr` (used unsynchronised for panic output).
- Remove the unused `Read` implementation on `sys::windows::stdin`
- The `windows::stdio::Output` enum made sense when we cached the handles, but we can use simple functions like `is_console` now that we get the handle on every read/write
- `write` can now calculate the number of written bytes as UTF-8 when we can't write all `u16`s.
- If `write` could only write one half of a surrogate pair, attempt another write for the other because user code can't reslice in any way that would allow us to write it otherwise.
- Removed the double buffering on stdin. Documentation on the unexposed `StdinRaw` says: 'This handle is not synchronized or buffered in any fashion'; which is now true.
- `sys::windows::Stdin` now always only partially fills its buffer, so we can guarantee any arbitrary UTF-16 can be re-encoded without losing any data.
- `sys::windows::STDIN_BUF_SIZE` is slightly larger to compensate. There should be no real change in the number of syscalls the buffered `Stdin` does. This buffer is a little larger, while the extra buffer on Stdin is gone.
- `sys::windows::Stdin` now attempts to handle unpaired surrogates at its buffer boundary.
- `sys::windows::Stdin` no langer allocates for its buffer, but the UTF-16 decoding still does.

### Testing
I did some manual testing of reading and writing to console. The console does support UTF-16 in some sense, but doesn't supporting displaying characters outside the BMP.
- compile stage 1 stdlib with a tiny value for `MAX_BUFFER_SIZE` to make it easier to catch corner cases
- run a simple test program that reads on stdin, and echo's to stdout
- write some lines with plenty of ASCII and emoji in a text editor
- copy and paste in console to stdin
- return with `\r\n\` or CTRL-Z
- copy and paste in text editor
- check it round-trips

-----

Fixes https://github.com/rust-lang/rust/issues/23344. All but one of the suggestions in that issue are now implemented. the missing one is:

> * When reading data, we require the entire set of input to be valid UTF-16. We should instead attempt to read as much of the input as possible as valid UTF-16, only returning an error for the actual invalid elements. For example if we read 10 elements, 5 of which are valid UTF-16, the 6th is bad, and then the remaining are all valid UTF-16, we should probably return the first 5 on a call to `read`, then return an error, then return the remaining on the next call to `read`.

Stdin in Console mode is dealing with text directly input by a user. In my opinion getting an unpaired surrogate is quite unlikely in that case, and a valid reason to error on the entire line of input (which is probably short). Dealing with it is incompatible with an unbuffered stdin, which seems the more interesting guarantee to me.

5 years agoRollup merge of #58442 - cuviper:unix-weak, r=alexcrichton
Mazdak Farrokhzad [Sun, 24 Feb 2019 04:55:58 +0000 (05:55 +0100)]
Rollup merge of #58442 - cuviper:unix-weak, r=alexcrichton

Simplify the unix `Weak` functionality

- We can avoid allocation by adding a NUL to the function name.
- We can get `Option<F>` directly, rather than aliasing the inner `AtomicUsize`.

5 years agoRollup merge of #58183 - jethrogb:jb/alloc-box-guarantees, r=SimonSapin
Mazdak Farrokhzad [Sun, 24 Feb 2019 04:55:57 +0000 (05:55 +0100)]
Rollup merge of #58183 - jethrogb:jb/alloc-box-guarantees, r=SimonSapin

Clarify guarantees for `Box` allocation

This basically says `Box` does the obvious things for its allocations.

See also: https://users.rust-lang.org/t/alloc-crate-guarantees/24981

This may require a T-libs FCP? Not sure.

r? @sfackler

5 years agoRollup merge of #57364 - hdhoang:33418_negative_bounds, r=estebank
Mazdak Farrokhzad [Sun, 24 Feb 2019 04:55:55 +0000 (05:55 +0100)]
Rollup merge of #57364 - hdhoang:33418_negative_bounds, r=estebank

Improve parsing diagnostic for negative supertrait bounds

closes #33418

r? @estebank

5 years agoAuto merge of #58304 - gnzlbg:simd_saturated, r=nagisa
bors [Sun, 24 Feb 2019 04:16:12 +0000 (04:16 +0000)]
Auto merge of #58304 - gnzlbg:simd_saturated, r=nagisa

Add generic simd saturated add/sub intrinsics

r? @eddyb

5 years agoreduce a code repetition like (n << amt) >> amt
kenta7777 [Sun, 24 Feb 2019 03:55:14 +0000 (12:55 +0900)]
reduce a code repetition like (n << amt) >> amt

5 years agoFix error index E0370 doctests on 32 bit platforms
Oliver Middleton [Sun, 24 Feb 2019 01:24:31 +0000 (01:24 +0000)]
Fix error index E0370 doctests on 32 bit platforms

5 years agoAuto merge of #58232 - ljedrz:HirIdification_continued, r=Zoxc
bors [Sun, 24 Feb 2019 00:24:16 +0000 (00:24 +0000)]
Auto merge of #58232 - ljedrz:HirIdification_continued, r=Zoxc

HirId-ify intravisit

A big step towards https://github.com/rust-lang/rust/pull/57578.

This affects mostly `hir::{collector, intravisit}` and `rustc::lint`.

5 years agoreduce miri code repetition like (n << amt) >> amt
kenta7777 [Sat, 23 Feb 2019 23:57:24 +0000 (08:57 +0900)]
reduce miri code repetition like (n << amt) >> amt

5 years agoreplace deprecated rustfmt_skip with rustfmt::skip
Marcel Hellwig [Sat, 23 Feb 2019 21:40:56 +0000 (22:40 +0100)]
replace deprecated rustfmt_skip with rustfmt::skip

5 years agoAuto merge of #57051 - Eijebong:parking_lot, r=nikomatsakis
bors [Sat, 23 Feb 2019 19:46:10 +0000 (19:46 +0000)]
Auto merge of #57051 - Eijebong:parking_lot, r=nikomatsakis

Update parking_lot to 0.7

Unfortunately this'll dupe parking_lot until the data_structures crate
is published and be updated in rls in conjunction with crossbeam-channel

5 years agofix build for Rust 2018 now that #58100 has been merged
Trevor Spiteri [Sat, 23 Feb 2019 17:02:40 +0000 (18:02 +0100)]
fix build for Rust 2018 now that #58100 has been merged

5 years agorustdoc: support methods on primitives in intra-doc links
Trevor Spiteri [Fri, 22 Feb 2019 12:21:42 +0000 (13:21 +0100)]
rustdoc: support methods on primitives in intra-doc links

5 years agoAuto merge of #58661 - ehuss:update-cargo, r=alexcrichton
bors [Sat, 23 Feb 2019 17:00:07 +0000 (17:00 +0000)]
Auto merge of #58661 - ehuss:update-cargo, r=alexcrichton

Update cargo

5 commits in b33ce7fc9092962b0657b4c25354984b5e5c47e4..5c6aa46e6f28661270979696e7b4c2f0dff8628f
2019-02-19 18:42:50 +0000 to 2019-02-22 19:32:35 +0000
- convert unused doc comments to regular comments (rust-lang/cargo#6692)
- Add more about system library on whether to keep Cargo.lock (rust-lang/cargo#6685)
- Warn when excluding non-existing packages (rust-lang/cargo#6679)
- Incremental profile cleanup. (rust-lang/cargo#6688)
- Various cosmetic improvements (rust-lang/cargo#6687)

5 years agoUse E0724 instead of E0723 as an error code
gnzlbg [Sat, 23 Feb 2019 15:24:14 +0000 (16:24 +0100)]
Use E0724 instead of E0723 as an error code

5 years agoFix attribute check
gnzlbg [Sun, 10 Feb 2019 11:04:23 +0000 (12:04 +0100)]
Fix attribute check

5 years agoUse pattern to match attributes
gnzlbg [Sun, 10 Feb 2019 08:59:07 +0000 (09:59 +0100)]
Use pattern to match attributes

5 years agoCorrect error message
gnzlbg [Sat, 9 Feb 2019 21:09:25 +0000 (22:09 +0100)]
Correct error message

5 years agoImplement ffi_returns_twice attribute
gnzlbg [Sat, 9 Feb 2019 14:55:30 +0000 (15:55 +0100)]
Implement ffi_returns_twice attribute

5 years agoAuto merge of #58669 - Centril:rollup, r=Centril
bors [Sat, 23 Feb 2019 14:14:04 +0000 (14:14 +0000)]
Auto merge of #58669 - Centril:rollup, r=Centril

Rollup of 16 pull requests

Successful merges:

 - #58100 (Transition librustdoc to Rust 2018)
 - #58122 (RangeInclusive internal iteration performance improvement.)
 - #58199 (Add better error message for partial move)
 - #58227 (Updated RELEASES.md for 1.33.0)
 - #58353 (Check the Self-type of inherent associated constants)
 - #58453 (SGX target: fix panic = abort)
 - #58476 (Remove `LazyTokenStream`.)
 - #58526 (Special suggestion for illegal unicode curly quote pairs)
 - #58595 (Turn duration consts into associated consts)
 - #58609 (Allow Self::Module to be mutated.)
 - #58628 (Optimise vec![false; N] to zero-alloc)
 - #58643 (Don't generate minification variables if minification disabled)
 - #58648 (Update tests to account for cross-platform testing and miri.)
 - #58654 (Do not underflow after resetting unmatched braces count)
 - #58658 (Add expected/provided byte alignments to validation error message)
 - #58667 (Reduce Miri-related Code Repetition `like (n << amt) >> amt`)

Failed merges:

r? @ghost

5 years agoAuto merge of #58655 - kennytm:download-docker-cache-with-timeout, r=alexcrichton
bors [Sat, 23 Feb 2019 11:32:10 +0000 (11:32 +0000)]
Auto merge of #58655 - kennytm:download-docker-cache-with-timeout, r=alexcrichton

Added a connection timeout and speed threshold when downloading the Docker cache

This is an attempt to fix one possible cause of #56112. Similar to #52846, this changed the download docker-cache command to fail if it cannot connect or falls below 10 bytes/s after 30 seconds, so it could be retried sooner.

5 years agoRemove pub(crate) from stderr_raw
Paul Dicker [Sat, 23 Feb 2019 11:11:10 +0000 (12:11 +0100)]
Remove pub(crate) from stderr_raw

5 years agoRollup merge of #58667 - kenta7777:reduce-mir-code-repetition, r=petrochenkov
Mazdak Farrokhzad [Sat, 23 Feb 2019 08:25:39 +0000 (09:25 +0100)]
Rollup merge of #58667 - kenta7777:reduce-mir-code-repetition, r=petrochenkov

Reduce Miri-related Code Repetition `like (n << amt) >> amt`

This Pull Request fixes a part of [#49937](https://github.com/rust-lang/rust/issues/49937).

5 years agoRollup merge of #58658 - pmccarter:align_msg, r=matthewjasper
Mazdak Farrokhzad [Sat, 23 Feb 2019 08:25:37 +0000 (09:25 +0100)]
Rollup merge of #58658 - pmccarter:align_msg, r=matthewjasper

Add expected/provided byte alignments to validation error message

Fixes #58617

5 years agoRollup merge of #58654 - estebank:underflow, r=nikomatsakis
Mazdak Farrokhzad [Sat, 23 Feb 2019 08:25:36 +0000 (09:25 +0100)]
Rollup merge of #58654 - estebank:underflow, r=nikomatsakis

Do not underflow after resetting unmatched braces count

Fix #58638.

r? @oli-obk

5 years agoRollup merge of #58648 - pnkfelix:issue-23926-update-tests, r=nikomatsakis
Mazdak Farrokhzad [Sat, 23 Feb 2019 08:25:34 +0000 (09:25 +0100)]
Rollup merge of #58648 - pnkfelix:issue-23926-update-tests, r=nikomatsakis

Update tests to account for cross-platform testing and miri.

Fix #23926

5 years agoRollup merge of #58643 - GuillaumeGomez:extra-variables, r=Manishearth
Mazdak Farrokhzad [Sat, 23 Feb 2019 08:25:33 +0000 (09:25 +0100)]
Rollup merge of #58643 - GuillaumeGomez:extra-variables, r=Manishearth

Don't generate minification variables if minification disabled

If the minification is disabled, there is no sense having those variables.

r? @QuietMisdreavus

5 years agoRollup merge of #58628 - RReverser:optimise-vec-false, r=oli-obk
Mazdak Farrokhzad [Sat, 23 Feb 2019 08:25:32 +0000 (09:25 +0100)]
Rollup merge of #58628 - RReverser:optimise-vec-false, r=oli-obk

Optimise vec![false; N] to zero-alloc

Nowadays booleans have a well-defined representation, so there is no reason not to optimise their allocation.

5 years agoRollup merge of #58609 - gabi-250:mutable-refs, r=oli-obk
Mazdak Farrokhzad [Sat, 23 Feb 2019 08:25:30 +0000 (09:25 +0100)]
Rollup merge of #58609 - gabi-250:mutable-refs, r=oli-obk

Allow Self::Module to be mutated.

This only changes `&Self::Module` to `&mut Self::Module` in a couple of places.

`codegen_allocator` and `write_metadata` from `ExtraBackendMethods` mutate the underlying LLVM module. As such, it makes sense for these two functions to receive a mutable reference to the module (as opposed to an immutable one).

I am trying to implement `codegen_allocator` for my backend, and I need to be able to mutate `Self::Module`:
https://github.com/rust-lang/rust/blob/f66e4697ae286985ddefc53c3a047614568458bb/src/librustc_codegen_ssa/traits/backend.rs#L41
Modifying the module in `codegen_allocator`/`write_metadata` is not a problem for the LLVM backend, because [ModuleLlvm](https://github.com/rust-lang/rust/blob/master/src/librustc_codegen_llvm/lib.rs#L357) contains a raw pointer to the underlying LLVM module, so it can easily be mutated through FFI calls.

I am trying to avoid interior mutability and `unsafe` as much as I can. What do you think? Does this change make sense, or is there a reason why this should stay the way it is?

5 years agoRollup merge of #58595 - stjepang:make-duration-consts-associated, r=oli-obk
Mazdak Farrokhzad [Sat, 23 Feb 2019 08:25:29 +0000 (09:25 +0100)]
Rollup merge of #58595 - stjepang:make-duration-consts-associated, r=oli-obk

Turn duration consts into associated consts

As suggested in https://github.com/rust-lang/rust/issues/57391#issuecomment-459658236, I'm moving `Duration` constants (`SECOND`, `MILLISECOND` and so on; currently behind unstable `duration_constants` feature) into the `impl Duration` block.

cc @frewsxcv @SimonSapin

5 years agoRollup merge of #58526 - pmccarter:master, r=estebank
Mazdak Farrokhzad [Sat, 23 Feb 2019 08:25:27 +0000 (09:25 +0100)]
Rollup merge of #58526 - pmccarter:master, r=estebank

Special suggestion for illegal unicode curly quote pairs

Fixes #58436

Did not end up expanding the error message span to include the full string literal since I figured the start of the token was the issue, while the help suggestion span would include up to the closing quotation mark.

The look ahead logic does not affect the reader position, not sure if that is an issue (if eg it should still continue to parse after the closing quote without erroring out).

5 years agoRollup merge of #58476 - nnethercote:rm-LazyTokenStream, r=petrochenkov
Mazdak Farrokhzad [Sat, 23 Feb 2019 08:25:26 +0000 (09:25 +0100)]
Rollup merge of #58476 - nnethercote:rm-LazyTokenStream, r=petrochenkov

Remove `LazyTokenStream`.

`LazyTokenStream` was added in #40939. Perhaps it was an effective optimization then, but no longer. This PR removes it, making the code both simpler and faster.

r? @alexcrichton

5 years agoRollup merge of #58453 - jethrogb:jb/sgx-panic-abort, r=nagisa
Mazdak Farrokhzad [Sat, 23 Feb 2019 08:25:24 +0000 (09:25 +0100)]
Rollup merge of #58453 - jethrogb:jb/sgx-panic-abort, r=nagisa

SGX target: fix panic = abort

What is the difference between `no_mangle` and `rustc_std_internal_symbol`?

5 years agoRollup merge of #58353 - matthewjasper:typeck-pattern-constants, r=arielb1
Mazdak Farrokhzad [Sat, 23 Feb 2019 08:25:23 +0000 (09:25 +0100)]
Rollup merge of #58353 - matthewjasper:typeck-pattern-constants, r=arielb1

Check the Self-type of inherent associated constants

r? @arielb1

5 years agoRollup merge of #58227 - Aaronepower:master, r=Centril
Mazdak Farrokhzad [Sat, 23 Feb 2019 08:25:19 +0000 (09:25 +0100)]
Rollup merge of #58227 - Aaronepower:master, r=Centril

Updated RELEASES.md for 1.33.0

[Rendered](https://github.com/Aaronepower/rust/blob/master/RELEASES.md)

r? @Mark-Simulacrum

cc @rust-lang/release

5 years agoRollup merge of #58199 - clintfred:partial-move-err-msg, r=estebank
Mazdak Farrokhzad [Sat, 23 Feb 2019 08:25:17 +0000 (09:25 +0100)]
Rollup merge of #58199 - clintfred:partial-move-err-msg, r=estebank

Add better error message for partial move

closes #56657

r? @davidtwco

5 years agoRollup merge of #58122 - matthieu-m:range_incl_perf, r=dtolnay
Mazdak Farrokhzad [Sat, 23 Feb 2019 08:25:12 +0000 (09:25 +0100)]
Rollup merge of #58122 - matthieu-m:range_incl_perf, r=dtolnay

RangeInclusive internal iteration performance improvement.

Specialize `Iterator::try_fold` and `DoubleEndedIterator::try_rfold` to improve code generation in all internal iteration scenarios.

This changes brings the performance of internal iteration with `RangeInclusive` on par with the performance of iteration with `Range`:

 - Single conditional jump in hot loop,
 - Unrolling and vectorization,
 - And even Closed Form substitution.

Unfortunately, it only applies to internal iteration. Despite various attempts at stream-lining the implementation of `next` and `next_back`, LLVM has stubbornly refused to optimize external iteration appropriately, leaving me with a choice between:

 - The current implementation, for which Closed Form substitution is performed, but which uses 2 conditional jumps in the hot loop when optimization fail.
 - An implementation using a `is_done` boolean, which uses 1 conditional jump in the hot loop when optimization fail, allowing unrolling and vectorization, but for which Closed Form substitution fails.

In the absence of any conclusive evidence as to which usecase matters most, and with no assurance that the lack of Closed Form substitution is not indicative of other optimizations being foiled, there is no way
to pick one implementation over the other, and thus I defer to the statu quo as far as `next` and `next_back` are concerned.

5 years agoRollup merge of #58100 - h-michael:librustdoc-2018, r=Centril
Mazdak Farrokhzad [Sat, 23 Feb 2019 08:25:11 +0000 (09:25 +0100)]
Rollup merge of #58100 - h-michael:librustdoc-2018, r=Centril

Transition librustdoc to Rust 2018

#58099

5 years agoFix tidy check errors
Hirokazu Hata [Sat, 23 Feb 2019 08:02:57 +0000 (17:02 +0900)]
Fix tidy check errors

5 years agoTransition librustdoc to 2018 edition
Hirokazu Hata [Sat, 23 Feb 2019 07:40:07 +0000 (16:40 +0900)]
Transition librustdoc to 2018 edition

5 years agoreduce an mir code repetition like (n << amt) >> amt
kenta7777 [Sat, 23 Feb 2019 01:07:09 +0000 (10:07 +0900)]
reduce an mir code repetition like (n << amt) >> amt

5 years agoImprove parsing diagnostic for negative supertrait bounds
Hoàng Đức Hiếu [Sun, 16 Dec 2018 08:50:49 +0000 (15:50 +0700)]
Improve parsing diagnostic for negative supertrait bounds

5 years ago#58658 bless after line split for tidy
Patrick McCarter [Sat, 23 Feb 2019 00:23:03 +0000 (19:23 -0500)]
#58658 bless after line split for tidy