about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorLines
2019-08-20Auto merge of #63744 - Centril:rollup-g4l3ra9, r=Centrilbors-62/+189
Rollup of 7 pull requests Successful merges: - #63216 (avoid unnecessary reservations in std::io::Take::read_to_end) - #63265 (Implement `nth_back` for ChunksExactMut) - #63691 (Fix bug in iter::Chain::size_hint) - #63722 (Don't use stage naming in RUSTFLAGS environment variables) - #63723 (Consolidate sigemptyset workarounds) - #63736 (Restore the rustc_plugin crate in the sysroot) - #63743 (Allow git to merge `Cargo.lock`) Failed merges: r? @ghost
2019-08-20Rollup merge of #63736 - SimonSapin:plugin, r=eddybMazdak Farrokhzad-1/+2
Restore the rustc_plugin crate in the sysroot It was accidentally removed in a rebase of https://github.com/rust-lang/rust/pull/62727 Fixes https://github.com/rust-lang/rust/issues/63729 (rls build failure)
2019-08-20Rollup merge of #63723 - josephlr:sigemptyset, r=alexcrichtonMazdak Farrokhzad-40/+27
Consolidate sigemptyset workarounds In sys/unix/process, we work around the sigemptyset linking issues on android in two different ways. This change consolidates these workarounds, and avoids duplicating bindings from `libc`.
2019-08-20Rollup merge of #63722 - Mark-Simulacrum:bootstrap-rustflags, r=alexcrichtonMazdak Farrokhzad-5/+5
Don't use stage naming in RUSTFLAGS environment variables This patch supports less behavior than before, since specifiying stage 1 vs stage 2 is no longer possible, but that is presumably a somewhat rare use case anyway, so not supporting it seems acceptable (and it can be readded easily if desired). Fixes #33609
2019-08-20Rollup merge of #63691 - timvermeulen:chain-size-hint, r=scottmcmMazdak Farrokhzad-8/+62
Fix bug in iter::Chain::size_hint `Chain::size_hint` currently ignores `self.state`, which means that the size hints of the underlying iterators are always combined regardless of the iteration state. This, of course, should only happen when the state is `ChainState::Both`.
2019-08-20Rollup merge of #63265 - JohnTitor:implement-nth-back-for-chunksexactmut, ↵Mazdak Farrokhzad-0/+35
r=scottmcm Implement `nth_back` for ChunksExactMut This is a part of #54054. r? @scottmcm
2019-08-20Rollup merge of #63216 - oconnor663:take_read_to_end, r=sfacklerMazdak Farrokhzad-8/+58
avoid unnecessary reservations in std::io::Take::read_to_end Prevously the `read_to_end` implementation for `std::io::Take` used its own `limit` as a cap on the `reservation_size`. However, that could still result in an over-allocation like this: 1. Call `reader.take(5).read_to_end(&mut vec)`. 2. `read_to_end_with_reservation` reserves 5 bytes and calls `read`. 3. `read` writes 5 bytes. 4. `read_to_end_with_reservation` reserves 5 bytes and calls `read`. 5. `read` writes 0 bytes. 6. The read loop ends with `vec` having length 5 and capacity 10. The reservation of 5 bytes was correct for the read at step 2 but unnecessary for the read at step 4. By that second read, `Take::limit` is 0, but the `read_to_end_with_reservation` loop is still using the same `reservation_size` it started with. Solve this by having `read_to_end_with_reservation` take a closure, which lets it get a fresh `reservation_size` for each read. This is an implementation detail which doesn't affect any public API.
2019-08-20Restore the rustc_plugin crate in the sysrootSimon Sapin-1/+2
It was accidentally removed in a rebase of https://github.com/rust-lang/rust/pull/62727 Fixes https://github.com/rust-lang/rust/issues/63729
2019-08-20Auto merge of #63587 - flip1995:clippyup, r=flip1995bors-8/+10
Update Clippy and cargo r? @Manishearth @oli-obk
2019-08-20Auto merge of #63709 - matklad:decomposed-tokens, r=petrochenkovbors-209/+68
Move token gluing to token stream parsing work towards #63689, this moves token gluing from the lexer to the token tree layer. This is only a minimal step, but I like the negative diff here. r? @petrochenkov
2019-08-20Update cargoflip1995-0/+0
2019-08-20Update Clippyflip1995-8/+10
2019-08-20Auto merge of #63497 - eddyb:miri-subst, r=oli-obkbors-76/+159
rustc_mir: fix miri substitution/"universe" discipline. Alternative to #61041, based on @RalfJung's own attempt at it. I haven't done a full audit, but I believe everything is fixed now. Fixes #61432. Closes #61336, as a drive-by fix (for a subset of #43408, that is already special-cased). r? @oli-obk / @RalfJung cc @varkor @yodaldevoid
2019-08-20Auto merge of #62727 - SimonSapin:plugins-tls-dylib, r=petrochenkovbors-39/+49
Deprecate using rustc_plugin without the rustc_driver dylib. CC https://github.com/rust-lang/rust/pull/59800, https://github.com/rust-lang/rust/commit/7198687bb2df13a3298ef1e8f594753073d6b9e8 Fix https://github.com/rust-lang/rust/issues/62717
2019-08-19Consolidate sigemptyset workaroundsJoe Richey-40/+27
In sys/unix/process, we work around the sigemptyset linking issues on android in two different ways. This change consolidates these workarounds, and avoids duplicating bindings from `libc`.
2019-08-19Don't use stage naming in RUSTFLAGS environment variablesMark Rousskov-5/+5
This patch supports less behavior than before, since specifiying stage 1 vs stage 2 is no longer possible, but that is presumably a somewhat rare use case anyway, so not supporting it seems acceptable (and it can be readded easily if desired).
2019-08-20Deprecate using rustc_plugin without the rustc_driver dylib.Simon Sapin-39/+49
CC https://github.com/rust-lang/rust/pull/59800 https://github.com/rust-lang/rust/commit/7198687bb2df13a3298ef1e8f594753073d6b9e8 Fix https://github.com/rust-lang/rust/issues/62717
2019-08-19Rollup merge of #63704 - Wind-River:master, r=CentrilMazdak Farrokhzad-1/+1
Fixed: error: unnecessary trailing semicolon
2019-08-19Rollup merge of #63699 - gilescope:async-move-diagnostic, r=estebankMazdak Farrokhzad-1/+41
Fix suggestion from incorrect `move async` to `async move`. PR for #61920. Happy with the test. There must be a better implementation though - possibly a MIR visitor to estabilsh a span that doesn't include the `async` keyword?
2019-08-19Rollup merge of #63620 - estebank:assoc-type-span, r=CentrilMazdak Farrokhzad-200/+376
Use constraint span when lowering associated types Fix #63594. r? @Centril
2019-08-19Rollup merge of #63376 - nikomatsakis:async-await-issue-62517, r=cramertjMazdak Farrokhzad-13/+429
use different lifetime name for object-lifetime-default elision Introduce a distinct value for `LifetimeName` to use when this is a object-lifetime-default elision. This allows us to avoid creating incorrect lifetime parameters for the opaque types that result. We really need to overhaul this setup at some point! It's getting increasingly byzantine. But this seems like a relatively... surgical fix. r? @cramertj Fixes #62517
2019-08-19Rollup merge of #63252 - nrc:arc-doc, r=alexcrichtonMazdak Farrokhzad-4/+0
Remove recommendation about idiomatic syntax for Arc::clone I believe we should not make this recommendation. I don't want to argue that `Arc::clone` is less idiomatic than `arc.clone`, but that the choice is not clear cut and that we should not be making this kind of call in the docs. The `.clone()` form has advantages too: it is more succinct, it is more likely to be understood by beginners, and it is more uniform with other `clone` calls, indeed with most other method calls. Whichever approach is better, I think that this discussion belongs in a style guide or textbook, rather than the library docs. We don't talk much about idiomatic code in the docs, this place is pretty exceptional. The recommendation is also not followed in this repo. It is hard to figure out how many calls there are of the `.clone()` form, but there are 1550 uses of `Arc` and only 65 uses of `Arc::clone`. The recommendation has existed for over two years. The recommendation was added in https://github.com/rust-lang/rust/pull/42137, as a result of https://github.com/rust-lang/rfcs/pull/1954. However, note that that RFC was closed because it was not necessary to change the docs (the original RFC proposed a new function instead). So I don't think an RFC is necessary here (and I'm not trying to re-litigate the discussion on that RFC (which favoured `Arc::clone` as idiomatic) in any case). cc @nical (who added the docs in the first place; sorry :-) ) r? @alexcrichton (or someone else on @rust-lang/libs )
2019-08-19review commentsEsteban Küber-36/+47
2019-08-19glue tokens when building token streamAleksey Kladov-10/+34
2019-08-19remove composite tokens support from the lexerAleksey Kladov-199/+34
2019-08-19Use constraint span when lowering associated typesEsteban Küber-189/+354
2019-08-19adjust test to be check-passNiko Matsakis-13/+4
2019-08-19use static as object-lifetime default for type XX in `Foo<Item=XX>`Niko Matsakis-1/+229
Currently the default is "inherited" from context, so e.g. `&impl Foo<Item = dyn Bar>` would default to `&'x impl Foo<Item = dyn Bar + 'x>`, but this triggers an ICE and is not very consistent. This patch doesn't implement what I expect would be the correct semantics, because those are likely too complex. Instead, it handles what I'd expect to be the common case -- where the trait has no lifetime parameters.
2019-08-19distinguish object-lifetime-default elision from other elisionNiko Matsakis-10/+163
Object-lifetime-default elision is distinct from other forms of elision; it always refers to some enclosing lifetime *present in the surrounding type* (e.g., `&dyn Bar` expands to `&'a (dyn Bar + 'a)`. If there is no enclosing lifetime, then it expands to `'static`. Therefore, in an `impl Trait<Item = dyn Bar>` setting, we don't expand to create a lifetime parameter for the `dyn Bar + 'X` bound. It will just be resolved to `'static`. Annoyingly, the responsibility for this resolution is spread across multiple bits of code right now (`middle::resolve_lifetimes`, `lowering`). The lowering code knows that the default is for an object lifetime, but it doesn't know what the correct result would be. Probably this should be fixed, but what we do now is a surgical fix: we have it generate a different result for elided lifetimes in a object context, and then we can ignore those results when figuring out the lifetimes that are captured in the opaque type.
2019-08-19add debug logsNiko Matsakis-2/+46
2019-08-19test: add test for #61432.Eduard-Mihai Burtescu-0/+25
2019-08-19Fix suggestion from move async to async move.Giles Cope-1/+41
2019-08-19test: add test from #61041.Eduard-Mihai Burtescu-0/+60
2019-08-19rustc_typeck: fix the generics for (const-generic) `N` expression in e.g. ↵Eduard-Mihai Burtescu-0/+14
`[T; N]`.
2019-08-19rustc_mir: disallow non-monomorphic reifications.Eduard-Mihai Burtescu-1/+11
2019-08-19rustc_mir: disallow non-monomorphic vtables.Eduard-Mihai Burtescu-1/+6
2019-08-19rustc_mir: add missing subst_from_frame_and_normalize_erasing_regions calls.Eduard-Mihai Burtescu-1/+4
2019-08-19rustc_mir: use self.resolve instead of Instance::resolve where possible.Eduard-Mihai Burtescu-6/+1
2019-08-19rustc_mir: make subst_from_frame_and_normalize_erasing_regions infallible.Eduard-Mihai Burtescu-17/+10
2019-08-19rustc_mir: remove wrong calls to subst_from_frame_and_normalize_erasing_regions.Eduard-Mihai Burtescu-2/+0
2019-08-19start cleaning up subst messRalf Jung-58/+38
fix an ICE fix method name
2019-08-19std: Update `backtrace` crate dependencyAlex Crichton-1/+1
This commit updates the `backtrace` crate from 0.3.34 to 0.3.35. The [included set of changes][changes] for this update mostly includes some gimli-related improvements (not relevant for the standard library) but critically includes a fix for rust-lang/backtrace-rs#230. The standard library will not aqcuire a session-local lock whenever a backtrace is generated on Windows to allow external synchronization with the `backtrace` crate itself, allowing `backtrace` to be safely used while other threads may be panicking. [changes]: https://github.com/rust-lang/backtrace-rs/compare/0.3.34...0.3.35
2019-08-19Auto merge of #63670 - Dante-Broggi:patch-2, r=Centrilbors-1/+1
Size has a ::zero
2019-08-19Auto merge of #63463 - matthewjasper:ty_param_cleanup, r=petrochenkovbors-183/+124
Don't special case the `Self` parameter by name This results in a couple of small diagnostic regressions. They could be avoided by keeping the special case just for diagnostics, but that seems worse. closes #50125 cc #60869
2019-08-18Auto merge of #63045 - Rosto75:master, r=jonas-schievinkbors-43/+43
Change the placement of two functions. Right now, the order is as follows: `pop_front()` `push_front()` `push_back()` `pop_back()` `swap_remove_back()` `swap_remove_front()` I believe it would be more natural, and easier to follow, if we place `pop_back()` right after the `pop_front()`, and `swap_remove_back()` after the `swap_remove_front()` like this: `pop_front()` `pop_back()` `push_front()` `push_back()` `swap_remove_front()` `swap_remove_back()` The rest of the documentation (at least in this module) adheres to the same logic, where the 'front' function always precedes its 'back' equivalent.
2019-08-18Fix bug in iter::Chain::size_hintTim Vermeulen-8/+62
2019-08-18Pre intern the `Self` parameter typeMatthew Jasper-47/+35
Use this to simplify the object safety code a bit.
2019-08-18Auto merge of #63659 - gilescope:async-in-closure, r=Centrilbors-13/+23
Improved error message for break in async block Fixes #63391
2019-08-18Auto merge of #63635 - oli-obk:default-slice-dangles, r=eddybbors-9/+34
Do not generate allocations for zero sized allocations Alternative to https://github.com/rust-lang/rust/issues/62487 r? @eddyb There are other places where we could do this, too, but that would cause `static FOO: () = ();` to not have a unique address
2019-08-18Better error message for break in async blocks.Giles Cope-13/+23