Commit Graph

90215 Commits

Author SHA1 Message Date
Vadim Petrochenkov
eccc19996b Stabilize unrestricted_attribute_tokens 2019-02-25 23:21:54 +03:00
Vadim Petrochenkov
8e1b5d897a Restrict value in key-value attributes to literals 2019-02-25 22:40:38 +03:00
bors
b57fe74a27 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
2019-02-25 14:48:29 +00:00
bors
da573206f8 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
2019-02-25 11:57:00 +00:00
Mazdak Farrokhzad
d6de1e9714
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
2019-02-25 11:42:31 +01:00
Mazdak Farrokhzad
e53fbf8bf2
Rollup merge of #58725 - jamwt:fix-27949, r=Centril
Test that binop subtyping in rustc_typeck fixes #27949
2019-02-25 11:42:30 +01:00
Mazdak Farrokhzad
3f6d65ac7a
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
2019-02-25 11:42:28 +01:00
Mazdak Farrokhzad
d4a62a7fde
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
2019-02-25 11:42:27 +01:00
Mazdak Farrokhzad
2a69aec947
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
2019-02-25 11:42:25 +01:00
Mazdak Farrokhzad
77e2e84191
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
2019-02-25 11:42:24 +01:00
Mazdak Farrokhzad
2019d965c3
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
2019-02-25 11:42:23 +01:00
Mazdak Farrokhzad
53f15f24a8
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).
2019-02-25 11:42:22 +01:00
Mazdak Farrokhzad
5f910fa99c
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).
2019-02-25 11:42:20 +01:00
Mazdak Farrokhzad
554aed6c7d
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.
2019-02-25 11:42:18 +01:00
Taiki Endo
6343d6bc0d bootstrap: deny(rust_2018_idioms) 2019-02-25 19:30:32 +09:00
Jamie Turner
7029094735 Test that binop subtyping in rustc_typeck fixes #27949 2019-02-25 00:41:58 -08:00
Mazdak Farrokhzad
235d3ed083 librustc: deny(elided_lifetimes_in_paths) 2019-02-25 09:19:20 +01:00
Mazdak Farrokhzad
e8ce56f126 librustc_typeck: deny(elided_lifetimes_in_paths) 2019-02-25 09:13:22 +01:00
Mazdak Farrokhzad
1d34f2c228 librustc_codegen_ssa: deny(elided_lifetimes_in_paths) 2019-02-25 08:52:46 +01:00
Mazdak Farrokhzad
9661a81968 librustc_codegen_llvm: deny(elided_lifetimes_in_paths) 2019-02-25 08:40:18 +01:00
Mazdak Farrokhzad
4ca865e929 heading # Unsafety => # Safety in stdlib docs. 2019-02-25 08:01:35 +01:00
bors
31eb0e2d3c 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
2019-02-25 06:27:35 +00:00
bors
c1911babed 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
2019-02-25 03:48:12 +00:00
Mazdak Farrokhzad
6806d0cf69
Rollup merge of #58704 - taiki-e:extern-crate, r=Centril
Remove some unnecessary 'extern crate'

cc #58099

r? @Centril
2019-02-25 03:18:06 +01:00
Mazdak Farrokhzad
b5cf4ea07f
Rollup merge of #58697 - taiki-e:question-in-macros, r=Centril
Use ? in some macros
2019-02-25 03:18:04 +01:00
Mazdak Farrokhzad
ed73ec0e4c
Rollup merge of #58686 - hellow554:rustfmt_depr, r=cramertj
replace deprecated rustfmt_skip with rustfmt::skip
2019-02-25 03:18:03 +01:00
Mazdak Farrokhzad
4f8ae0abdb
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.
2019-02-25 03:18:01 +01:00
Mazdak Farrokhzad
03acebe2ca
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.
2019-02-25 03:17:58 +01:00
bors
eb1df8c8a7 Auto merge of #58706 - matthewjasper:update-miri, r=RalfJung
update miri

cc #57609

r? @RalfJung
2019-02-24 21:40:10 +00:00
Matthew Jasper
09db1789d4 update miri 2019-02-24 16:45:14 +00:00
Taiki Endo
9a0b4b6705 Remove some unnecessary 'extern crate' 2019-02-25 00:40:34 +09:00
bors
097c04cf43 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
2019-02-24 14:15:55 +00:00
Taiki Endo
871910a2c6 Use ? in some macros 2019-02-24 21:59:44 +09:00
bors
e17c48e2f2 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
2019-02-24 06:59:13 +00:00
Mazdak Farrokhzad
f01ebc56dc
Rollup merge of #58642 - tspiteri:intra-rustdoc-prim-method, r=GuillaumeGomez
rustdoc: support methods on primitives in intra-doc links

Fixes #58598.
2019-02-24 05:56:02 +01:00
Mazdak Farrokhzad
1082a292ea
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
2019-02-24 05:56:01 +01:00
Mazdak Farrokhzad
4dcb7af0e7
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.
2019-02-24 05:56:00 +01:00
Mazdak Farrokhzad
b78e9f4fe3
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`.
2019-02-24 05:55:58 +01:00
Mazdak Farrokhzad
55b5ab8359
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
2019-02-24 05:55:57 +01:00
Mazdak Farrokhzad
ae646687e0
Rollup merge of #57364 - hdhoang:33418_negative_bounds, r=estebank
Improve parsing diagnostic for negative supertrait bounds

closes #33418

r? @estebank
2019-02-24 05:55:55 +01:00
bors
7cb3ee453b Auto merge of #58304 - gnzlbg:simd_saturated, r=nagisa
Add generic simd saturated add/sub intrinsics

r? @eddyb
2019-02-24 04:16:12 +00:00
kenta7777
423ae56943 reduce a code repetition like (n << amt) >> amt 2019-02-24 12:55:14 +09:00
Oliver Middleton
e7296fd1c4
Fix error index E0370 doctests on 32 bit platforms 2019-02-24 01:24:31 +00:00
bors
f573049729 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`.
2019-02-24 00:24:16 +00:00
kenta7777
46f1cc69db reduce miri code repetition like (n << amt) >> amt 2019-02-24 08:59:19 +09:00
Marcel Hellwig
6464a0baf9
replace deprecated rustfmt_skip with rustfmt::skip 2019-02-23 22:40:56 +01:00
bors
aadbc459bd 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
2019-02-23 19:46:10 +00:00
Trevor Spiteri
aa0fa752c4 fix build for Rust 2018 now that #58100 has been merged 2019-02-23 18:02:40 +01:00
Trevor Spiteri
bde4d1945c rustdoc: support methods on primitives in intra-doc links 2019-02-23 18:01:26 +01:00
bors
02a4e27254 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)
2019-02-23 17:00:07 +00:00