about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorLines
2019-02-24middle: partially HirIdify stabilityljedrz-29/+23
2019-02-24hir: remove NodeId from WhereEqPredicateljedrz-4/+1
2019-02-24hir: remove NodeId from WhereClauseljedrz-9/+3
2019-02-24hir: remove NodeId from GenericParamljedrz-46/+46
2019-02-24privacy: HirIdify ObsoleteVisiblePrivateTypesVisitorljedrz-6/+6
2019-02-24passes: HirIdify Idljedrz-16/+16
2019-02-24hir: remove NodeId from Lifetime and Tyljedrz-82/+71
2019-02-24hir: impl Display for HirIdljedrz-0/+6
2019-02-24Rollup merge of #58642 - tspiteri:intra-rustdoc-prim-method, r=GuillaumeGomezMazdak Farrokhzad-2/+42
rustdoc: support methods on primitives in intra-doc links Fixes #58598.
2019-02-24Rollup merge of #58511 - oli-obk:const_to_op, r=RalfJungMazdak Farrokhzad-126/+117
Const to op simplification r? @RalfJung alternative to https://github.com/rust-lang/rust/pull/58486
2019-02-24Rollup merge of #58454 - pitdicker:windows_stdio, r=alexcrichtonMazdak Farrokhzad-241/+273
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-24Rollup merge of #58442 - cuviper:unix-weak, r=alexcrichtonMazdak Farrokhzad-8/+7
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-24Rollup merge of #58183 - jethrogb:jb/alloc-box-guarantees, r=SimonSapinMazdak Farrokhzad-0/+13
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-24Rollup merge of #57364 - hdhoang:33418_negative_bounds, r=estebankMazdak Farrokhzad-21/+131
Improve parsing diagnostic for negative supertrait bounds closes #33418 r? @estebank
2019-02-24Auto merge of #58304 - gnzlbg:simd_saturated, r=nagisabors-9/+895
Add generic simd saturated add/sub intrinsics r? @eddyb
2019-02-24reduce a code repetition like (n << amt) >> amtkenta7777-3/+2
2019-02-23Add unstable option to ignore should_panic tests.memoryruins-0/+45
2019-02-24Fix error index E0370 doctests on 32 bit platformsOliver Middleton-2/+4
2019-02-24Auto merge of #58232 - ljedrz:HirIdification_continued, r=Zoxcbors-263/+258
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-24reduce miri code repetition like (n << amt) >> amtkenta7777-2/+1
2019-02-24implement nth_back for WindowsAdrian Friedli-0/+26
2019-02-23replace deprecated rustfmt_skip with rustfmt::skipMarcel Hellwig-7/+7
2019-02-23merge early and late passes into single structAndy Russell-138/+68
2019-02-23move collapse and unindent docs passes earlierAndy Russell-16/+40
2019-02-23Auto merge of #57051 - Eijebong:parking_lot, r=nikomatsakisbors-4/+4
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-23Fix an indexing error when using `x.py help`varkor-1/+1
2019-02-23fix build for Rust 2018 now that #58100 has been mergedTrevor Spiteri-1/+1
2019-02-23rustdoc: support methods on primitives in intra-doc linksTrevor Spiteri-2/+42
2019-02-23Auto merge of #58661 - ehuss:update-cargo, r=alexcrichtonbors-0/+0
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-23Use E0724 instead of E0723 as an error codegnzlbg-4/+4
2019-02-23fix linkRalf Jung-0/+2
2019-02-23expand type nameRalf Jung-17/+17
2019-02-23Apply suggestions from code reviewMazdak Farrokhzad-18/+19
Co-Authored-By: RalfJung <post@ralfj.de>
2019-02-23Fix attribute checkgnzlbg-2/+3
2019-02-23Use pattern to match attributesgnzlbg-9/+5
2019-02-23Correct error messagegnzlbg-6/+6
2019-02-23Implement ffi_returns_twice attributegnzlbg-0/+79
2019-02-23Type check coercions to pointer typesMatthew Jasper-15/+274
2019-02-23Auto merge of #58669 - Centril:rollup, r=Centrilbors-765/+977
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
2019-02-23Auto merge of #58655 - kennytm:download-docker-cache-with-timeout, ↵bors-1/+1
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.
2019-02-23Correct OpenOptions::security_qos_flags documentationPaul Dicker-6/+20
2019-02-23Add debug-info to access variables from generator stateWim Looman-6/+39
2019-02-23Remove pub(crate) from stderr_rawPaul Dicker-13/+6
2019-02-23Rollup merge of #58667 - kenta7777:reduce-mir-code-repetition, r=petrochenkovMazdak Farrokhzad-2/+2
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).
2019-02-23Rollup merge of #58658 - pmccarter:align_msg, r=matthewjasperMazdak Farrokhzad-8/+12
Add expected/provided byte alignments to validation error message Fixes #58617
2019-02-23Rollup merge of #58654 - estebank:underflow, r=nikomatsakisMazdak Farrokhzad-4/+8
Do not underflow after resetting unmatched braces count Fix #58638. r? @oli-obk
2019-02-23Rollup merge of #58648 - pnkfelix:issue-23926-update-tests, r=nikomatsakisMazdak Farrokhzad-12/+24
Update tests to account for cross-platform testing and miri. Fix #23926
2019-02-23Rollup merge of #58643 - GuillaumeGomez:extra-variables, r=ManishearthMazdak Farrokhzad-1/+5
Don't generate minification variables if minification disabled If the minification is disabled, there is no sense having those variables. r? @QuietMisdreavus
2019-02-23Rollup merge of #58628 - RReverser:optimise-vec-false, r=oli-obkMazdak Farrokhzad-0/+1
Optimise vec![false; N] to zero-alloc Nowadays booleans have a well-defined representation, so there is no reason not to optimise their allocation.
2019-02-23Rollup merge of #58609 - gabi-250:mutable-refs, r=oli-obkMazdak Farrokhzad-10/+10
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?